@greatapps/common 1.1.375 → 1.1.376

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 (335) hide show
  1. package/dist/components/account/AccountModals.mjs.map +1 -1
  2. package/dist/components/account/ConfigurationsMyAccountModal.mjs +1 -1
  3. package/dist/components/account/ConfigurationsMyAccountModal.mjs.map +1 -1
  4. package/dist/components/account/ConfirmDeleteAccountModal.mjs.map +1 -1
  5. package/dist/components/account/ConfirmGlobalPreferencesModal.mjs.map +1 -1
  6. package/dist/components/account/DeleteAccountModal.mjs.map +1 -1
  7. package/dist/components/account/DisableTwoFactorAuthModal.mjs.map +1 -1
  8. package/dist/components/account/IsntPossibleDeleteAccountModal.mjs.map +1 -1
  9. package/dist/components/account/TwoFactorAuthModal.mjs.map +1 -1
  10. package/dist/components/account/hooks/useChangePhoneForm.mjs.map +1 -1
  11. package/dist/components/account/hooks/useTwoFactorAuthForm.mjs.map +1 -1
  12. package/dist/components/account/sections/ChangeEmailModal.mjs.map +1 -1
  13. package/dist/components/account/sections/ChangePasswordSection.mjs.map +1 -1
  14. package/dist/components/account/sections/ChangePhoneModal.mjs.map +1 -1
  15. package/dist/components/account/sections/MyProfileSection.mjs.map +1 -1
  16. package/dist/components/account/sections/PreferencesSection.mjs.map +1 -1
  17. package/dist/components/account/sections/SecuritySection.mjs.map +1 -1
  18. package/dist/components/embeds/CrispEmbed.mjs.map +1 -1
  19. package/dist/components/embeds/FrillEmbed.mjs.map +1 -1
  20. package/dist/components/handlers/SearchParamsHandler.mjs.map +1 -1
  21. package/dist/components/layouts/AppMobileNavBar.mjs.map +1 -1
  22. package/dist/components/layouts/AppNavBar.mjs.map +1 -1
  23. package/dist/components/layouts/CollapsibleSidebar.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 +1 -1
  28. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  29. package/dist/components/layouts/SideBarNavigation.mjs.map +1 -1
  30. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  31. package/dist/components/layouts/WhitelabelCodes.mjs.map +1 -1
  32. package/dist/components/modals/BuyCreditsModal.mjs.map +1 -1
  33. package/dist/components/modals/ModalManager.mjs.map +1 -1
  34. package/dist/components/modals/Modals.mjs.map +1 -1
  35. package/dist/components/modals/cards/AddCardModal.mjs.map +1 -1
  36. package/dist/components/modals/cards/CardFormFields.mjs.map +1 -1
  37. package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
  38. package/dist/components/navigation/NavItemsContext.mjs.map +1 -1
  39. package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
  40. package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
  41. package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
  42. package/dist/components/pages/NotFoundPage.mjs +11 -1
  43. package/dist/components/pages/NotFoundPage.mjs.map +1 -1
  44. package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
  45. package/dist/components/ui/buttons/Button.mjs.map +1 -1
  46. package/dist/components/ui/buttons/CancelButton.mjs.map +1 -1
  47. package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
  48. package/dist/components/ui/data-display/Accordion.mjs.map +1 -1
  49. package/dist/components/ui/data-display/Badge.mjs.map +1 -1
  50. package/dist/components/ui/data-display/Card.mjs.map +1 -1
  51. package/dist/components/ui/data-display/CardBrandIcons.mjs.map +1 -1
  52. package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
  53. package/dist/components/ui/data-display/Pagination.mjs.map +1 -1
  54. package/dist/components/ui/data-display/PaymentInfoCard.mjs.map +1 -1
  55. package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -1
  56. package/dist/components/ui/data-display/Separator.mjs.map +1 -1
  57. package/dist/components/ui/data-display/Table.mjs.map +1 -1
  58. package/dist/components/ui/data-display/Tabs.mjs.map +1 -1
  59. package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -1
  60. package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
  61. package/dist/components/ui/feedback/LoadingOverlay.mjs.map +1 -1
  62. package/dist/components/ui/feedback/Progress.mjs.map +1 -1
  63. package/dist/components/ui/feedback/Skeleton.mjs.map +1 -1
  64. package/dist/components/ui/feedback/Toast.mjs.map +1 -1
  65. package/dist/components/ui/form/Calendar.mjs.map +1 -1
  66. package/dist/components/ui/form/Checkbox.mjs.map +1 -1
  67. package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
  68. package/dist/components/ui/form/DatePicker.mjs.map +1 -1
  69. package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
  70. package/dist/components/ui/form/FormField.mjs.map +1 -1
  71. package/dist/components/ui/form/Input.mjs.map +1 -1
  72. package/dist/components/ui/form/InputOtp.mjs.map +1 -1
  73. package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
  74. package/dist/components/ui/form/RadioGroup.mjs.map +1 -1
  75. package/dist/components/ui/form/Select.mjs +1 -1
  76. package/dist/components/ui/form/Select.mjs.map +1 -1
  77. package/dist/components/ui/form/Switch.mjs.map +1 -1
  78. package/dist/components/ui/form/Textarea.mjs.map +1 -1
  79. package/dist/components/ui/overlay/Command.mjs.map +1 -1
  80. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  81. package/dist/components/ui/overlay/Popover.mjs.map +1 -1
  82. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  83. package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
  84. package/dist/components/widgets/notifications/NotificationCard.mjs.map +1 -1
  85. package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
  86. package/dist/hooks/useDebounce.mjs.map +1 -1
  87. package/dist/hooks/useDebounceState.mjs.map +1 -1
  88. package/dist/hooks/useDebouncedEffect.mjs.map +1 -1
  89. package/dist/index.mjs.map +1 -1
  90. package/dist/infra/utils/clsx.mjs.map +1 -1
  91. package/dist/infra/utils/date.mjs.map +1 -1
  92. package/dist/infra/utils/parser.mjs.map +1 -1
  93. package/dist/infra/utils/percentage.mjs.map +1 -1
  94. package/dist/middleware.mjs.map +1 -1
  95. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  96. package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
  97. package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
  98. package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
  99. package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
  100. package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
  101. package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
  102. package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
  103. package/dist/modules/accounts/hooks/useViaCep.mjs.map +1 -1
  104. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  105. package/dist/modules/auth/actions/validate-session.action.mjs.map +1 -1
  106. package/dist/modules/auth/hooks/login.hook.mjs.map +1 -1
  107. package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -1
  108. package/dist/modules/auth/hooks/register.hook.mjs.map +1 -1
  109. package/dist/modules/auth/hooks/useManagementPermissions.mjs.map +1 -1
  110. package/dist/modules/auth/utils/assert-management-permission.mjs.map +1 -1
  111. package/dist/modules/auth/utils/assert-management-subscription.mjs.map +1 -1
  112. package/dist/modules/auth/utils/build-wl-override.mjs.map +1 -1
  113. package/dist/modules/cards/actions/create-card.action.mjs.map +1 -1
  114. package/dist/modules/cards/actions/list-cards.action.mjs.map +1 -1
  115. package/dist/modules/cards/hooks/cards.hook.mjs.map +1 -1
  116. package/dist/modules/cards/hooks/create-card.hook.mjs.map +1 -1
  117. package/dist/modules/cards/services/cards.service.mjs.map +1 -1
  118. package/dist/modules/cards/types.mjs.map +1 -1
  119. package/dist/modules/ia-credits/actions/list-ia-credits.action.mjs.map +1 -1
  120. package/dist/modules/plans/actions/find-plan-by-id.action.mjs.map +1 -1
  121. package/dist/modules/plans/hooks/use-has-plan-addon.hook.mjs.map +1 -1
  122. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
  123. package/dist/modules/plans/services/plans.service.mjs.map +1 -1
  124. package/dist/modules/plans/types/plan.type.mjs.map +1 -1
  125. package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
  126. package/dist/modules/projects/actions/list-all-account-users.action.mjs.map +1 -1
  127. package/dist/modules/projects/actions/list-available-users.action.mjs.map +1 -1
  128. package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
  129. package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
  130. package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
  131. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  132. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  133. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  134. package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
  135. package/dist/modules/subscriptions/actions/calculate-subscription.action.mjs.map +1 -1
  136. package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
  137. package/dist/modules/subscriptions/actions/update-subscription-plan.action.mjs.map +1 -1
  138. package/dist/modules/subscriptions/constants/query-keys.constants.mjs.map +1 -1
  139. package/dist/modules/subscriptions/hooks/calculate-subscription.hook.mjs.map +1 -1
  140. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  141. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  142. package/dist/modules/subscriptions/hooks/update-subscription-plan.hook.mjs.map +1 -1
  143. package/dist/modules/subscriptions/hooks/use-cancelled-subscription-guard.mjs.map +1 -1
  144. package/dist/modules/subscriptions/types/calculate-subscription.type.mjs.map +1 -1
  145. package/dist/modules/subscriptions/utils/build-plan-extras.mjs.map +1 -1
  146. package/dist/modules/subscriptions/utils/has-subscription-expired.mjs.map +1 -1
  147. package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
  148. package/dist/modules/subscriptions/utils/resolve-plan-extras-prices.mjs.map +1 -1
  149. package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
  150. package/dist/modules/users/action/list-messages.action.mjs.map +1 -1
  151. package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
  152. package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
  153. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  154. package/dist/modules/users/services/messages.service.mjs.map +1 -1
  155. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
  156. package/dist/modules/whitelabel/actions/revalidate-whitelabel.action.mjs.map +1 -1
  157. package/dist/modules/whitelabel/utils/normalize-hostname.mjs.map +1 -1
  158. package/dist/providers/whitelabel.provider.mjs.map +1 -1
  159. package/dist/store/useAccountModals.mjs.map +1 -1
  160. package/dist/store/useBuyCreditsModal.mjs.map +1 -1
  161. package/dist/store/useDesktopSidebarStore.mjs.map +1 -1
  162. package/dist/store/useMdSidebarStore.mjs.map +1 -1
  163. package/dist/store/useModalManager.mjs.map +1 -1
  164. package/dist/utils/constants/br-states.mjs.map +1 -1
  165. package/dist/utils/countries.mjs.map +1 -1
  166. package/dist/utils/safeServerAction.mjs.map +1 -1
  167. package/dist/utils/withAction.mjs.map +1 -1
  168. package/package.json +89 -89
  169. package/src/components/account/AccountModals.tsx +17 -17
  170. package/src/components/account/ConfigurationsMyAccountModal.tsx +146 -146
  171. package/src/components/account/ConfirmDeleteAccountModal.tsx +55 -55
  172. package/src/components/account/ConfirmGlobalPreferencesModal.tsx +66 -66
  173. package/src/components/account/DeleteAccountModal.tsx +130 -130
  174. package/src/components/account/DisableTwoFactorAuthModal.tsx +86 -86
  175. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +49 -49
  176. package/src/components/account/TwoFactorAuthModal.tsx +215 -215
  177. package/src/components/account/hooks/useChangePhoneForm.tsx +107 -107
  178. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +101 -101
  179. package/src/components/account/sections/ChangeEmailModal.tsx +225 -225
  180. package/src/components/account/sections/ChangePasswordSection.tsx +64 -64
  181. package/src/components/account/sections/ChangePhoneModal.tsx +245 -245
  182. package/src/components/account/sections/MyProfileSection.tsx +327 -327
  183. package/src/components/account/sections/PreferencesSection.tsx +248 -248
  184. package/src/components/account/sections/SecuritySection.tsx +46 -46
  185. package/src/components/embeds/CrispEmbed.tsx +101 -101
  186. package/src/components/embeds/FrillEmbed.tsx +119 -119
  187. package/src/components/handlers/SearchParamsHandler.tsx +61 -61
  188. package/src/components/layouts/AppMobileNavBar.tsx +118 -118
  189. package/src/components/layouts/AppNavBar.tsx +46 -46
  190. package/src/components/layouts/CollapsibleSidebar.tsx +67 -67
  191. package/src/components/layouts/MdSideBarNavigation.tsx +56 -56
  192. package/src/components/layouts/NavBar.tsx +172 -172
  193. package/src/components/layouts/NotificationsPopover.tsx +115 -115
  194. package/src/components/layouts/ProfilePopover.tsx +178 -178
  195. package/src/components/layouts/SideBarNavigation.tsx +62 -62
  196. package/src/components/layouts/UsersSelectorPopover.tsx +234 -234
  197. package/src/components/layouts/WhitelabelCodes.tsx +59 -59
  198. package/src/components/modals/BuyCreditsModal.tsx +314 -314
  199. package/src/components/modals/ModalManager.tsx +29 -29
  200. package/src/components/modals/Modals.tsx +26 -26
  201. package/src/components/modals/cards/AddCardModal.tsx +260 -260
  202. package/src/components/modals/cards/CardFormFields.tsx +294 -294
  203. package/src/components/navigation/CancelledSubscriptionBanner.tsx +60 -60
  204. package/src/components/navigation/NavItemsContext.ts +20 -20
  205. package/src/components/navigation/ProjectSelectorPopover.tsx +160 -160
  206. package/src/components/navigation/shells/TabsMobileShell.tsx +72 -72
  207. package/src/components/navigation/subcomponents/ProjectSelector.tsx +160 -160
  208. package/src/components/pages/NotFoundPage.tsx +59 -50
  209. package/src/components/pages/notifications/Notifications.tsx +160 -160
  210. package/src/components/ui/buttons/Button.tsx +57 -57
  211. package/src/components/ui/buttons/CancelButton.tsx +14 -14
  212. package/src/components/ui/buttons/CopyButton.tsx +54 -54
  213. package/src/components/ui/data-display/Accordion.tsx +81 -81
  214. package/src/components/ui/data-display/Badge.tsx +47 -47
  215. package/src/components/ui/data-display/Card.tsx +93 -93
  216. package/src/components/ui/data-display/CardBrandIcons.tsx +336 -336
  217. package/src/components/ui/data-display/CardItem.tsx +75 -75
  218. package/src/components/ui/data-display/Pagination.tsx +126 -126
  219. package/src/components/ui/data-display/PaymentInfoCard.tsx +186 -186
  220. package/src/components/ui/data-display/ScrollArea.tsx +59 -59
  221. package/src/components/ui/data-display/Separator.tsx +29 -29
  222. package/src/components/ui/data-display/Table.tsx +117 -117
  223. package/src/components/ui/data-display/Tabs.tsx +67 -67
  224. package/src/components/ui/feedback/CircularProgress.tsx +75 -75
  225. package/src/components/ui/feedback/DefaultCircularProgress.tsx +61 -61
  226. package/src/components/ui/feedback/LoadingOverlay.tsx +31 -31
  227. package/src/components/ui/feedback/Progress.tsx +40 -40
  228. package/src/components/ui/feedback/Skeleton.tsx +5 -5
  229. package/src/components/ui/feedback/Toast.tsx +101 -101
  230. package/src/components/ui/form/Calendar.tsx +228 -228
  231. package/src/components/ui/form/Checkbox.tsx +31 -31
  232. package/src/components/ui/form/ComboboxField.tsx +154 -154
  233. package/src/components/ui/form/DatePicker.tsx +97 -97
  234. package/src/components/ui/form/DateRangePicker.tsx +108 -108
  235. package/src/components/ui/form/FormField.tsx +131 -131
  236. package/src/components/ui/form/Input.tsx +20 -20
  237. package/src/components/ui/form/InputOtp.tsx +80 -80
  238. package/src/components/ui/form/PhoneInput.tsx +208 -208
  239. package/src/components/ui/form/RadioGroup.tsx +45 -45
  240. package/src/components/ui/form/Select.tsx +200 -200
  241. package/src/components/ui/form/Switch.tsx +32 -32
  242. package/src/components/ui/form/Textarea.tsx +19 -19
  243. package/src/components/ui/overlay/Command.tsx +185 -185
  244. package/src/components/ui/overlay/Dialog.tsx +151 -151
  245. package/src/components/ui/overlay/Popover.tsx +49 -49
  246. package/src/components/ui/overlay/Sheet.tsx +166 -166
  247. package/src/components/ui/overlay/Tooltip.tsx +62 -62
  248. package/src/components/widgets/notifications/NotificationCard.tsx +68 -68
  249. package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
  250. package/src/hooks/useDebounce.ts +26 -26
  251. package/src/hooks/useDebounceState.ts +11 -11
  252. package/src/hooks/useDebouncedEffect.ts +69 -69
  253. package/src/index.ts +391 -391
  254. package/src/infra/utils/clsx.ts +6 -6
  255. package/src/infra/utils/date.ts +7 -7
  256. package/src/infra/utils/parser.ts +52 -52
  257. package/src/infra/utils/percentage.ts +42 -42
  258. package/src/middleware.ts +4 -4
  259. package/src/modules/accounts/actions/account-management.action.ts +107 -107
  260. package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
  261. package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
  262. package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
  263. package/src/modules/accounts/hooks/current-account.hook.tsx +22 -22
  264. package/src/modules/accounts/hooks/useAccountManagement.ts +85 -85
  265. package/src/modules/accounts/hooks/useCurrencies.ts +15 -15
  266. package/src/modules/accounts/hooks/useTimezones.ts +15 -15
  267. package/src/modules/accounts/hooks/useViaCep.ts +25 -25
  268. package/src/modules/accounts/services/account.service.ts +239 -239
  269. package/src/modules/accounts/types.ts +225 -225
  270. package/src/modules/auth/actions/validate-session.action.ts +56 -56
  271. package/src/modules/auth/hooks/login.hook.tsx +13 -13
  272. package/src/modules/auth/hooks/logout.hook.tsx +11 -11
  273. package/src/modules/auth/hooks/register.hook.tsx +11 -11
  274. package/src/modules/auth/hooks/useManagementPermissions.ts +45 -45
  275. package/src/modules/auth/types/management-permission.type.ts +7 -7
  276. package/src/modules/auth/utils/assert-management-permission.ts +46 -46
  277. package/src/modules/auth/utils/assert-management-subscription.ts +27 -27
  278. package/src/modules/auth/utils/build-wl-override.ts +43 -43
  279. package/src/modules/cards/actions/create-card.action.ts +9 -9
  280. package/src/modules/cards/actions/list-cards.action.ts +8 -8
  281. package/src/modules/cards/hooks/cards.hook.ts +14 -14
  282. package/src/modules/cards/hooks/create-card.hook.ts +18 -18
  283. package/src/modules/cards/services/cards.service.ts +51 -51
  284. package/src/modules/cards/types.ts +32 -32
  285. package/src/modules/ia-credits/actions/list-ia-credits.action.ts +8 -8
  286. package/src/modules/plans/actions/find-plan-by-id.action.ts +8 -8
  287. package/src/modules/plans/hooks/use-has-plan-addon.hook.ts +17 -17
  288. package/src/modules/plans/hooks/use-plan-by-id.hook.ts +13 -13
  289. package/src/modules/plans/services/plans.service.ts +36 -36
  290. package/src/modules/plans/types/plan.type.ts +21 -21
  291. package/src/modules/projects/actions/add-project-user.action.ts +9 -9
  292. package/src/modules/projects/actions/list-all-account-users.action.ts +9 -9
  293. package/src/modules/projects/actions/list-available-users.action.ts +9 -9
  294. package/src/modules/projects/actions/list-project-users.action.ts +9 -9
  295. package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
  296. package/src/modules/projects/hooks/add-project-user.hook.ts +69 -69
  297. package/src/modules/projects/hooks/list-all-account-users.hook.ts +34 -34
  298. package/src/modules/projects/hooks/list-available-users.hook.ts +33 -33
  299. package/src/modules/projects/hooks/list-project-users.hook.ts +33 -33
  300. package/src/modules/projects/hooks/remove-project-user.hook.ts +69 -69
  301. package/src/modules/subscriptions/actions/calculate-subscription.action.ts +9 -9
  302. package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
  303. package/src/modules/subscriptions/actions/update-subscription-plan.action.ts +14 -14
  304. package/src/modules/subscriptions/constants/query-keys.constants.ts +1 -1
  305. package/src/modules/subscriptions/hooks/calculate-subscription.hook.ts +13 -13
  306. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +19 -19
  307. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +16 -16
  308. package/src/modules/subscriptions/hooks/update-subscription-plan.hook.ts +25 -25
  309. package/src/modules/subscriptions/hooks/use-cancelled-subscription-guard.ts +39 -39
  310. package/src/modules/subscriptions/types/billing-period.type.ts +1 -1
  311. package/src/modules/subscriptions/types/calculate-subscription.type.ts +75 -75
  312. package/src/modules/subscriptions/utils/build-plan-extras.ts +56 -56
  313. package/src/modules/subscriptions/utils/has-subscription-expired.ts +8 -8
  314. package/src/modules/subscriptions/utils/periodicity.ts +52 -52
  315. package/src/modules/subscriptions/utils/resolve-plan-extras-prices.ts +23 -23
  316. package/src/modules/users/action/find-user-by-id.action.ts +8 -8
  317. package/src/modules/users/action/list-messages.action.ts +12 -12
  318. package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
  319. package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
  320. package/src/modules/users/hooks/messages.hook.ts +60 -60
  321. package/src/modules/users/services/messages.service.ts +48 -48
  322. package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
  323. package/src/modules/whitelabel/actions/revalidate-whitelabel.action.ts +19 -19
  324. package/src/modules/whitelabel/schema.ts +84 -84
  325. package/src/modules/whitelabel/utils/normalize-hostname.ts +26 -26
  326. package/src/providers/whitelabel.provider.tsx +54 -54
  327. package/src/store/useAccountModals.ts +55 -55
  328. package/src/store/useBuyCreditsModal.ts +21 -21
  329. package/src/store/useDesktopSidebarStore.ts +47 -47
  330. package/src/store/useMdSidebarStore.ts +34 -34
  331. package/src/store/useModalManager.ts +104 -104
  332. package/src/utils/constants/br-states.ts +29 -29
  333. package/src/utils/countries.ts +224 -224
  334. package/src/utils/safeServerAction.ts +21 -21
  335. package/src/utils/withAction.ts +13 -13
@@ -1,160 +1,160 @@
1
- 'use client';
2
-
3
- import { useState, useRef, useEffect, RefObject } from 'react';
4
- import { ADDON_IDS } from '../../../modules/subscriptions/constants/addons.constants';
5
- import { useHasPlanAddon } from '../../../modules/plans/hooks/use-has-plan-addon.hook';
6
- import { useMobileNavbarSheet } from '../../../store/useMobileNavbarSheet';
7
- import { useAppNavigationContext } from '../AppNavigationContext';
8
- import { ProjectSelectorPopover } from '../ProjectSelectorPopover';
9
- import { UsersSelectorPopover } from '../../layouts/UsersSelectorPopover';
10
- import { Button, Command, CommandEmpty, CommandInput, CommandItem, CommandList, UserAvatar } from '../../../index';
11
- import { IconChevronDown, IconPlus, IconSettings } from '@tabler/icons-react';
12
- import type { NavigationProject } from '../types';
13
-
14
- export interface ProjectSelectorProps {
15
- projects: NavigationProject[];
16
- selectedProject: NavigationProject | null;
17
- isLoading?: boolean;
18
- onSelectProject: (project: NavigationProject) => void;
19
- onAddProject?: () => void;
20
- onManageProjects?: () => void;
21
- }
22
-
23
- function ProjectItemSkeleton() {
24
- return (
25
- <div className="flex items-center gap-2 p-2">
26
- <div className="skeleton size-8 rounded-lg shrink-0" />
27
- <div className="skeleton h-3.5 w-32 rounded" />
28
- </div>
29
- );
30
- }
31
-
32
- export function ProjectSelector({
33
- projects,
34
- selectedProject,
35
- isLoading,
36
- onSelectProject,
37
- onAddProject,
38
- onManageProjects,
39
- }: ProjectSelectorProps) {
40
- const { breakpoint } = useAppNavigationContext();
41
- const { hasAddon: canAddProject } = useHasPlanAddon(ADDON_IDS.PROJECTS);
42
- const [isPopoverOpen, setIsPopoverOpen] = useState(false);
43
- const [activeSection, setActiveSection] = useState<'projects' | null>(null);
44
- const titleRef = useRef<HTMLDivElement>(null);
45
- const { openProjectList, clearProjectList } = useMobileNavbarSheet();
46
-
47
- useEffect(() => {
48
- if (openProjectList && breakpoint === 'mobile') {
49
- setActiveSection('projects');
50
- clearProjectList();
51
- }
52
- }, [openProjectList, breakpoint, clearProjectList]);
53
-
54
- // Desktop and md: title + popover + users selector (same visual as current gpages sidebars)
55
- if (breakpoint === 'desktop' || breakpoint === 'md') {
56
- return (
57
- <div className="flex items-center justify-between">
58
- <ProjectSelectorPopover
59
- open={isPopoverOpen}
60
- setOpen={setIsPopoverOpen}
61
- titleRef={titleRef as unknown as RefObject<HTMLSpanElement | null>}
62
- projects={projects}
63
- selectedProject={selectedProject}
64
- onSelectProject={onSelectProject}
65
- onAddProject={onAddProject}
66
- onManageProjects={onManageProjects}
67
- >
68
- <div className="flex items-center gap-2 truncate select-none cursor-pointer" ref={titleRef}>
69
- {isLoading ? (
70
- <div className="skeleton h-4 w-32 rounded" />
71
- ) : (
72
- <span className="paragraph-medium-semibold text-gray-600 truncate max-w-[120px] inline-block">
73
- {selectedProject?.title}
74
- </span>
75
- )}
76
- <IconChevronDown
77
- size={20}
78
- className={`transition-transform duration-200 ${isPopoverOpen ? 'rotate-180 text-gray-950' : 'text-gray-400'}`}
79
- />
80
- </div>
81
- </ProjectSelectorPopover>
82
- <div className="flex items-center gap-2">
83
- <UsersSelectorPopover projectId={selectedProject?.id} />
84
- </div>
85
- </div>
86
- );
87
- }
88
-
89
- // Mobile: inline collapsible accordion
90
- return (
91
- <div className="flex flex-col gap-2.5">
92
- <div className="flex items-center justify-between">
93
- <div
94
- className="flex items-center gap-1 cursor-pointer"
95
- onClick={() => setActiveSection(activeSection === 'projects' ? null : 'projects')}
96
- >
97
- <span className="paragraph-medium-semibold text-gray-600">{selectedProject?.title}</span>
98
- <IconChevronDown
99
- size={20}
100
- className={`transition-transform duration-200 ${
101
- activeSection === 'projects' ? 'rotate-180 text-gray-950' : 'text-gray-400'
102
- }`}
103
- />
104
- </div>
105
- <UsersSelectorPopover projectId={selectedProject?.id} />
106
- </div>
107
- {activeSection === 'projects' && (
108
- <div className="flex flex-col p-3 gap-2 border border-gray-200 rounded-lg animate-in fade-in duration-400">
109
- <div className="flex items-center justify-between">
110
- <span className="paragraph-small-semibold">Projetos</span>
111
- {(onAddProject || onManageProjects) && (
112
- <div className="flex items-center gap-1.5">
113
- {canAddProject && onAddProject && (
114
- <Button variant="secondary" className="h-8! paragraph-small-semibold text-gray-950" onClick={onAddProject}>
115
- <IconPlus size={16} />
116
- Adicionar
117
- </Button>
118
- )}
119
- {onManageProjects && (
120
- <Button variant="secondary" className="p-0 size-8" onClick={onManageProjects}>
121
- <IconSettings size={18} />
122
- </Button>
123
- )}
124
- </div>
125
- )}
126
- </div>
127
- <Command className="gap-2">
128
- <CommandInput placeholder="Busque aqui" />
129
- <CommandList className="custom-scrollbar paragraph-small-medium text-gray-600 h-[162px]">
130
- <CommandEmpty>Nenhum resultado encontrado.</CommandEmpty>
131
- {isLoading ? (
132
- <>
133
- <ProjectItemSkeleton />
134
- <ProjectItemSkeleton />
135
- </>
136
- ) : (
137
- projects.map((project) => (
138
- <CommandItem
139
- key={project.id}
140
- value={`${project.title}-${project.id}`}
141
- keywords={[project.title]}
142
- className={selectedProject?.id === project.id ? 'bg-gray-50' : ''}
143
- onSelect={() => { onSelectProject(project); setActiveSection(null); }}
144
- >
145
- <UserAvatar
146
- photo={project.photo}
147
- name={project.title}
148
- size={32}
149
- />
150
- {project.title}
151
- </CommandItem>
152
- ))
153
- )}
154
- </CommandList>
155
- </Command>
156
- </div>
157
- )}
158
- </div>
159
- );
160
- }
1
+ 'use client';
2
+
3
+ import { useState, useRef, useEffect, RefObject } from 'react';
4
+ import { ADDON_IDS } from '../../../modules/subscriptions/constants/addons.constants';
5
+ import { useHasPlanAddon } from '../../../modules/plans/hooks/use-has-plan-addon.hook';
6
+ import { useMobileNavbarSheet } from '../../../store/useMobileNavbarSheet';
7
+ import { useAppNavigationContext } from '../AppNavigationContext';
8
+ import { ProjectSelectorPopover } from '../ProjectSelectorPopover';
9
+ import { UsersSelectorPopover } from '../../layouts/UsersSelectorPopover';
10
+ import { Button, Command, CommandEmpty, CommandInput, CommandItem, CommandList, UserAvatar } from '../../../index';
11
+ import { IconChevronDown, IconPlus, IconSettings } from '@tabler/icons-react';
12
+ import type { NavigationProject } from '../types';
13
+
14
+ export interface ProjectSelectorProps {
15
+ projects: NavigationProject[];
16
+ selectedProject: NavigationProject | null;
17
+ isLoading?: boolean;
18
+ onSelectProject: (project: NavigationProject) => void;
19
+ onAddProject?: () => void;
20
+ onManageProjects?: () => void;
21
+ }
22
+
23
+ function ProjectItemSkeleton() {
24
+ return (
25
+ <div className="flex items-center gap-2 p-2">
26
+ <div className="skeleton size-8 rounded-lg shrink-0" />
27
+ <div className="skeleton h-3.5 w-32 rounded" />
28
+ </div>
29
+ );
30
+ }
31
+
32
+ export function ProjectSelector({
33
+ projects,
34
+ selectedProject,
35
+ isLoading,
36
+ onSelectProject,
37
+ onAddProject,
38
+ onManageProjects,
39
+ }: ProjectSelectorProps) {
40
+ const { breakpoint } = useAppNavigationContext();
41
+ const { hasAddon: canAddProject } = useHasPlanAddon(ADDON_IDS.PROJECTS);
42
+ const [isPopoverOpen, setIsPopoverOpen] = useState(false);
43
+ const [activeSection, setActiveSection] = useState<'projects' | null>(null);
44
+ const titleRef = useRef<HTMLDivElement>(null);
45
+ const { openProjectList, clearProjectList } = useMobileNavbarSheet();
46
+
47
+ useEffect(() => {
48
+ if (openProjectList && breakpoint === 'mobile') {
49
+ setActiveSection('projects');
50
+ clearProjectList();
51
+ }
52
+ }, [openProjectList, breakpoint, clearProjectList]);
53
+
54
+ // Desktop and md: title + popover + users selector (same visual as current gpages sidebars)
55
+ if (breakpoint === 'desktop' || breakpoint === 'md') {
56
+ return (
57
+ <div className="flex items-center justify-between">
58
+ <ProjectSelectorPopover
59
+ open={isPopoverOpen}
60
+ setOpen={setIsPopoverOpen}
61
+ titleRef={titleRef as unknown as RefObject<HTMLSpanElement | null>}
62
+ projects={projects}
63
+ selectedProject={selectedProject}
64
+ onSelectProject={onSelectProject}
65
+ onAddProject={onAddProject}
66
+ onManageProjects={onManageProjects}
67
+ >
68
+ <div className="flex items-center gap-2 truncate select-none cursor-pointer" ref={titleRef}>
69
+ {isLoading ? (
70
+ <div className="skeleton h-4 w-32 rounded" />
71
+ ) : (
72
+ <span className="paragraph-medium-semibold text-gray-600 truncate max-w-[120px] inline-block">
73
+ {selectedProject?.title}
74
+ </span>
75
+ )}
76
+ <IconChevronDown
77
+ size={20}
78
+ className={`transition-transform duration-200 ${isPopoverOpen ? 'rotate-180 text-gray-950' : 'text-gray-400'}`}
79
+ />
80
+ </div>
81
+ </ProjectSelectorPopover>
82
+ <div className="flex items-center gap-2">
83
+ <UsersSelectorPopover projectId={selectedProject?.id} />
84
+ </div>
85
+ </div>
86
+ );
87
+ }
88
+
89
+ // Mobile: inline collapsible accordion
90
+ return (
91
+ <div className="flex flex-col gap-2.5">
92
+ <div className="flex items-center justify-between">
93
+ <div
94
+ className="flex items-center gap-1 cursor-pointer"
95
+ onClick={() => setActiveSection(activeSection === 'projects' ? null : 'projects')}
96
+ >
97
+ <span className="paragraph-medium-semibold text-gray-600">{selectedProject?.title}</span>
98
+ <IconChevronDown
99
+ size={20}
100
+ className={`transition-transform duration-200 ${
101
+ activeSection === 'projects' ? 'rotate-180 text-gray-950' : 'text-gray-400'
102
+ }`}
103
+ />
104
+ </div>
105
+ <UsersSelectorPopover projectId={selectedProject?.id} />
106
+ </div>
107
+ {activeSection === 'projects' && (
108
+ <div className="flex flex-col p-3 gap-2 border border-gray-200 rounded-lg animate-in fade-in duration-400">
109
+ <div className="flex items-center justify-between">
110
+ <span className="paragraph-small-semibold">Projetos</span>
111
+ {(onAddProject || onManageProjects) && (
112
+ <div className="flex items-center gap-1.5">
113
+ {canAddProject && onAddProject && (
114
+ <Button variant="secondary" className="h-8! paragraph-small-semibold text-gray-950" onClick={onAddProject}>
115
+ <IconPlus size={16} />
116
+ Adicionar
117
+ </Button>
118
+ )}
119
+ {onManageProjects && (
120
+ <Button variant="secondary" className="p-0 size-8" onClick={onManageProjects}>
121
+ <IconSettings size={18} />
122
+ </Button>
123
+ )}
124
+ </div>
125
+ )}
126
+ </div>
127
+ <Command className="gap-2">
128
+ <CommandInput placeholder="Busque aqui" />
129
+ <CommandList className="custom-scrollbar paragraph-small-medium text-gray-600 h-[162px]">
130
+ <CommandEmpty>Nenhum resultado encontrado.</CommandEmpty>
131
+ {isLoading ? (
132
+ <>
133
+ <ProjectItemSkeleton />
134
+ <ProjectItemSkeleton />
135
+ </>
136
+ ) : (
137
+ projects.map((project) => (
138
+ <CommandItem
139
+ key={project.id}
140
+ value={`${project.title}-${project.id}`}
141
+ keywords={[project.title]}
142
+ className={selectedProject?.id === project.id ? 'bg-gray-50' : ''}
143
+ onSelect={() => { onSelectProject(project); setActiveSection(null); }}
144
+ >
145
+ <UserAvatar
146
+ photo={project.photo}
147
+ name={project.title}
148
+ size={32}
149
+ />
150
+ {project.title}
151
+ </CommandItem>
152
+ ))
153
+ )}
154
+ </CommandList>
155
+ </Command>
156
+ </div>
157
+ )}
158
+ </div>
159
+ );
160
+ }
@@ -1,50 +1,59 @@
1
- 'use client';
2
-
3
- import Image from "next/image";
4
- import { useWhitelabel } from "../../providers/whitelabel.provider";
5
-
6
- function GreatAppsLogo() {
7
- return (
8
- <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 68 68" fill="none">
9
- <rect x="4.5" y="4.5" width="58.4463" height="58.4463" rx="14.2271" fill="#09090B" />
10
- <rect x="4.5" y="4.5" width="58.4463" height="58.4463" rx="14.2271" stroke="white" strokeWidth="9" />
11
- <path d="M38.0883 19.5377C38.6909 19.5377 39.1795 20.0264 39.1795 20.6289V25.5892C39.1795 25.9865 39.106 26.3827 38.9364 26.7421C38.4857 27.6992 37.5451 28.2674 36.5452 28.2674H29.9031C28.9993 28.2674 28.2663 29.0004 28.2663 29.9042V37.5427C28.2663 38.4465 28.9993 39.1795 29.9031 39.1795H37.5415C38.4453 39.1795 39.1783 38.4465 39.1783 37.5427V30.9693C39.1783 30.4522 39.3053 29.9374 39.5804 29.5009C40.0596 28.7406 40.8768 28.2899 41.7462 28.2686H46.8168C47.4193 28.2686 47.908 28.7561 47.908 29.3586V37.8238C47.908 38.692 47.5629 39.5246 46.9497 40.139L40.1379 46.9508C39.5235 47.5652 38.6909 47.9091 37.8226 47.9091H29.3587C28.7561 47.9091 28.2674 47.4205 28.2674 46.8179L28.2674 41.8126C28.2674 41.114 27.9899 40.4439 27.4965 39.9504C27.0031 39.457 26.3329 39.1795 25.6343 39.1795H20.629C20.0265 39.1795 19.5378 38.6908 19.5378 38.0883L19.5378 29.6231C19.5378 28.7549 19.8829 27.9222 20.4961 27.3078L27.468 20.3371C27.9792 19.8259 28.6731 19.5377 29.3966 19.5377H38.0871H38.0883Z" fill="white" />
12
- </svg>
13
- );
14
- }
15
-
16
- export function NotFoundPage() {
17
- const { whitelabel } = useWhitelabel();
18
- const isGreatApps = !whitelabel || whitelabel.id === 1;
19
- const whitelabelLogo = whitelabel?.logo
20
- ? `${process.env.NEXT_PUBLIC_STORAGE_URL}/${whitelabel.logo}`
21
- : null;
22
-
23
- return (
24
- <div className="relative flex min-h-screen w-full flex-col items-center justify-center overflow-hidden bg-white">
25
- <div className="flex flex-col items-center gap-[22px] text-center">
26
- <div className="relative flex flex-col items-center">
27
- <Image src="/images/404.svg" alt="404" width={440} height={173} priority unoptimized />
28
-
29
- <div className="-mt-1 w-full border-t border-zinc-100" />
30
-
31
- <div className="-mt-[25px]">
32
- {isGreatApps ? (
33
- <GreatAppsLogo />
34
- ) : whitelabelLogo ? (
35
- <Image src={whitelabelLogo} alt={whitelabel?.name || ''} width={50} height={50} className="rounded-xl object-contain" />
36
- ) : null}
37
- </div>
38
- </div>
39
-
40
- <h1 className="max-w-[554px] px-6 font-[family-name:var(--font-outfit)] text-[32px] leading-[36px] font-semibold text-zinc-950 sm:px-0 sm:text-[56px] sm:leading-[56px]">
41
- Página não foi encontrada!
42
- </h1>
43
-
44
- <p className="max-w-[496px] px-6 paragraph-medium-medium text-zinc-950 sm:px-0">
45
- A página que você está procurando não existe. Verifique se digitou corretamente o link que está procurando.
46
- </p>
47
- </div>
48
- </div>
49
- );
50
- }
1
+ 'use client';
2
+
3
+ import Image from "next/image";
4
+ import { useWhitelabel } from "../../providers/whitelabel.provider";
5
+ import { Button } from "../ui/buttons/Button";
6
+
7
+ function GreatAppsLogo() {
8
+ return (
9
+ <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" viewBox="0 0 68 68" fill="none">
10
+ <rect x="4.5" y="4.5" width="58.4463" height="58.4463" rx="14.2271" fill="#09090B" />
11
+ <rect x="4.5" y="4.5" width="58.4463" height="58.4463" rx="14.2271" stroke="white" strokeWidth="9" />
12
+ <path d="M38.0883 19.5377C38.6909 19.5377 39.1795 20.0264 39.1795 20.6289V25.5892C39.1795 25.9865 39.106 26.3827 38.9364 26.7421C38.4857 27.6992 37.5451 28.2674 36.5452 28.2674H29.9031C28.9993 28.2674 28.2663 29.0004 28.2663 29.9042V37.5427C28.2663 38.4465 28.9993 39.1795 29.9031 39.1795H37.5415C38.4453 39.1795 39.1783 38.4465 39.1783 37.5427V30.9693C39.1783 30.4522 39.3053 29.9374 39.5804 29.5009C40.0596 28.7406 40.8768 28.2899 41.7462 28.2686H46.8168C47.4193 28.2686 47.908 28.7561 47.908 29.3586V37.8238C47.908 38.692 47.5629 39.5246 46.9497 40.139L40.1379 46.9508C39.5235 47.5652 38.6909 47.9091 37.8226 47.9091H29.3587C28.7561 47.9091 28.2674 47.4205 28.2674 46.8179L28.2674 41.8126C28.2674 41.114 27.9899 40.4439 27.4965 39.9504C27.0031 39.457 26.3329 39.1795 25.6343 39.1795H20.629C20.0265 39.1795 19.5378 38.6908 19.5378 38.0883L19.5378 29.6231C19.5378 28.7549 19.8829 27.9222 20.4961 27.3078L27.468 20.3371C27.9792 19.8259 28.6731 19.5377 29.3966 19.5377H38.0871H38.0883Z" fill="white" />
13
+ </svg>
14
+ );
15
+ }
16
+
17
+ export function NotFoundPage() {
18
+ const { whitelabel } = useWhitelabel();
19
+ const isGreatApps = !whitelabel || whitelabel.id === 1;
20
+ const whitelabelLogo = whitelabel?.logo
21
+ ? `${process.env.NEXT_PUBLIC_STORAGE_URL}/${whitelabel.logo}`
22
+ : null;
23
+
24
+ return (
25
+ <div className="relative flex min-h-screen w-full flex-col items-center justify-center overflow-hidden bg-white">
26
+ <div className="flex flex-col items-center gap-[22px] text-center">
27
+ <div className="relative flex flex-col items-center">
28
+ <Image src="/images/404.svg" alt="404" width={440} height={173} priority unoptimized />
29
+
30
+ <div className="-mt-1 w-full border-t border-zinc-100" />
31
+
32
+ <div className="-mt-[25px]">
33
+ {isGreatApps ? (
34
+ <GreatAppsLogo />
35
+ ) : whitelabelLogo ? (
36
+ <Image src={whitelabelLogo} alt={whitelabel?.name || ''} width={50} height={50} className="rounded-xl object-contain" />
37
+ ) : null}
38
+ </div>
39
+ </div>
40
+
41
+ <h1 className="max-w-[554px] px-6 font-[family-name:var(--font-outfit)] text-[32px] leading-[36px] font-semibold text-zinc-950 sm:px-0 sm:text-[56px] sm:leading-[56px]">
42
+ Página não foi encontrada!
43
+ </h1>
44
+
45
+ <p className="max-w-[496px] px-6 paragraph-medium-medium text-zinc-950 sm:px-0">
46
+ A página que você está procurando não existe. Verifique se digitou corretamente o link que está procurando.
47
+ </p>
48
+
49
+ <Button
50
+ variant="secondary"
51
+ className="h-10!"
52
+ onClick={() => (window.location.href = '/')}
53
+ >
54
+ Voltar para o início
55
+ </Button>
56
+ </div>
57
+ </div>
58
+ );
59
+ }