@greatapps/common 1.1.430 → 1.1.432

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 (316) 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/embeds/CrispEmbed.mjs.map +1 -1
  18. package/dist/components/embeds/FrillEmbed.mjs.map +1 -1
  19. package/dist/components/layouts/AppMobileNavBar.mjs.map +1 -1
  20. package/dist/components/layouts/AppNavBar.mjs.map +1 -1
  21. package/dist/components/layouts/MdSideBarNavigation.mjs.map +1 -1
  22. package/dist/components/layouts/NavBar.mjs.map +1 -1
  23. package/dist/components/layouts/NotificationsPopover.mjs.map +1 -1
  24. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  25. package/dist/components/layouts/SideBarNavigation.mjs.map +1 -1
  26. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  27. package/dist/components/layouts/WhitelabelCodes.mjs.map +1 -1
  28. package/dist/components/modals/BuyCreditsModal.mjs.map +1 -1
  29. package/dist/components/modals/PaidPlanRequiredModal.mjs.map +1 -1
  30. package/dist/components/modals/cards/AddCardModal.mjs.map +1 -1
  31. package/dist/components/modals/cards/CardFormFields.mjs.map +1 -1
  32. package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
  33. package/dist/components/navigation/NavItemsContext.mjs.map +1 -1
  34. package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
  35. package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
  36. package/dist/components/navigation/subcomponents/BottomLinks.mjs.map +1 -1
  37. package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
  38. package/dist/components/pages/NotFoundPage.mjs.map +1 -1
  39. package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
  40. package/dist/components/ui/buttons/Button.mjs.map +1 -1
  41. package/dist/components/ui/buttons/CancelButton.mjs.map +1 -1
  42. package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
  43. package/dist/components/ui/data-display/Accordion.mjs.map +1 -1
  44. package/dist/components/ui/data-display/Badge.mjs.map +1 -1
  45. package/dist/components/ui/data-display/Card.mjs.map +1 -1
  46. package/dist/components/ui/data-display/CardBrandIcons.mjs.map +1 -1
  47. package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
  48. package/dist/components/ui/data-display/Pagination.mjs.map +1 -1
  49. package/dist/components/ui/data-display/PaymentInfoCard.mjs.map +1 -1
  50. package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -1
  51. package/dist/components/ui/data-display/Separator.mjs.map +1 -1
  52. package/dist/components/ui/data-display/Table.mjs.map +1 -1
  53. package/dist/components/ui/data-display/Tabs.mjs.map +1 -1
  54. package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -1
  55. package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
  56. package/dist/components/ui/feedback/LoadingOverlay.mjs.map +1 -1
  57. package/dist/components/ui/feedback/Progress.mjs.map +1 -1
  58. package/dist/components/ui/feedback/Skeleton.mjs.map +1 -1
  59. package/dist/components/ui/feedback/Toast.mjs.map +1 -1
  60. package/dist/components/ui/form/Calendar.mjs.map +1 -1
  61. package/dist/components/ui/form/Checkbox.mjs.map +1 -1
  62. package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
  63. package/dist/components/ui/form/DatePicker.mjs.map +1 -1
  64. package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
  65. package/dist/components/ui/form/FormField.mjs.map +1 -1
  66. package/dist/components/ui/form/Input.mjs.map +1 -1
  67. package/dist/components/ui/form/InputOtp.mjs.map +1 -1
  68. package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
  69. package/dist/components/ui/form/RadioGroup.mjs.map +1 -1
  70. package/dist/components/ui/form/Select.mjs +1 -1
  71. package/dist/components/ui/form/Select.mjs.map +1 -1
  72. package/dist/components/ui/form/Switch.mjs.map +1 -1
  73. package/dist/components/ui/form/Textarea.mjs.map +1 -1
  74. package/dist/components/ui/overlay/Command.mjs.map +1 -1
  75. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  76. package/dist/components/ui/overlay/Popover.mjs.map +1 -1
  77. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  78. package/dist/components/ui/overlay/Tooltip.mjs +1 -1
  79. package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
  80. package/dist/components/widgets/notifications/NotificationCard.mjs.map +1 -1
  81. package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
  82. package/dist/index.mjs.map +1 -1
  83. package/dist/infra/utils/date.mjs.map +1 -1
  84. package/dist/middleware.mjs.map +1 -1
  85. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  86. package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
  87. package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
  88. package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
  89. package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
  90. package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
  91. package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
  92. package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
  93. package/dist/modules/accounts/hooks/useViaCep.mjs.map +1 -1
  94. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  95. package/dist/modules/auth/actions/validate-session.action.mjs.map +1 -1
  96. package/dist/modules/auth/hooks/login.hook.mjs.map +1 -1
  97. package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -1
  98. package/dist/modules/auth/hooks/register.hook.mjs.map +1 -1
  99. package/dist/modules/auth/hooks/useManagementPermissions.mjs.map +1 -1
  100. package/dist/modules/auth/utils/assert-management-permission.mjs.map +1 -1
  101. package/dist/modules/auth/utils/assert-management-subscription.mjs.map +1 -1
  102. package/dist/modules/auth/utils/assert-paid-subscription.mjs.map +1 -1
  103. package/dist/modules/auth/utils/assert-subscription-addon.mjs.map +1 -1
  104. package/dist/modules/auth/utils/build-wl-override.mjs.map +1 -1
  105. package/dist/modules/cards/actions/create-card.action.mjs.map +1 -1
  106. package/dist/modules/cards/actions/list-cards.action.mjs.map +1 -1
  107. package/dist/modules/cards/hooks/cards.hook.mjs.map +1 -1
  108. package/dist/modules/cards/hooks/create-card.hook.mjs.map +1 -1
  109. package/dist/modules/cards/services/cards.service.mjs.map +1 -1
  110. package/dist/modules/cards/types.mjs.map +1 -1
  111. package/dist/modules/ia-credits/actions/list-ia-credits.action.mjs.map +1 -1
  112. package/dist/modules/plans/actions/find-plan-by-id.action.mjs.map +1 -1
  113. package/dist/modules/plans/hooks/use-has-plan-addon.hook.mjs.map +1 -1
  114. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
  115. package/dist/modules/plans/services/plans.service.mjs.map +1 -1
  116. package/dist/modules/plans/types/plan.type.mjs.map +1 -1
  117. package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
  118. package/dist/modules/projects/actions/list-all-account-users.action.mjs.map +1 -1
  119. package/dist/modules/projects/actions/list-available-users.action.mjs.map +1 -1
  120. package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
  121. package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
  122. package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
  123. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  124. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  125. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  126. package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
  127. package/dist/modules/subscriptions/actions/calculate-subscription.action.mjs.map +1 -1
  128. package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
  129. package/dist/modules/subscriptions/actions/update-subscription-plan.action.mjs.map +1 -1
  130. package/dist/modules/subscriptions/constants/query-keys.constants.mjs.map +1 -1
  131. package/dist/modules/subscriptions/hooks/calculate-subscription.hook.mjs.map +1 -1
  132. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  133. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  134. package/dist/modules/subscriptions/hooks/update-subscription-plan.hook.mjs.map +1 -1
  135. package/dist/modules/subscriptions/hooks/use-cancelled-subscription-guard.mjs.map +1 -1
  136. package/dist/modules/subscriptions/types/calculate-subscription.type.mjs.map +1 -1
  137. package/dist/modules/subscriptions/utils/build-plan-extras.mjs.map +1 -1
  138. package/dist/modules/subscriptions/utils/has-subscription-expired.mjs.map +1 -1
  139. package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
  140. package/dist/modules/subscriptions/utils/resolve-plan-extras-prices.mjs.map +1 -1
  141. package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
  142. package/dist/modules/users/action/list-messages.action.mjs.map +1 -1
  143. package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
  144. package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
  145. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  146. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
  147. package/dist/modules/whitelabel/actions/revalidate-whitelabel.action.mjs.map +1 -1
  148. package/dist/modules/whitelabel/utils/normalize-hostname.mjs.map +1 -1
  149. package/dist/providers/whitelabel.provider.mjs.map +1 -1
  150. package/dist/store/useBuyCreditsModal.mjs.map +1 -1
  151. package/dist/store/useDesktopSidebarStore.mjs.map +1 -1
  152. package/dist/store/useMdSidebarStore.mjs.map +1 -1
  153. package/dist/store/usePaidPlanRequiredModal.mjs.map +1 -1
  154. package/dist/utils/constants/br-states.mjs.map +1 -1
  155. package/dist/utils/countries.mjs.map +1 -1
  156. package/dist/utils/safeServerAction.mjs.map +1 -1
  157. package/dist/utils/withAction.mjs.map +1 -1
  158. package/package.json +89 -89
  159. package/src/components/account/ConfigurationsMyAccountModal.tsx +146 -146
  160. package/src/components/account/ConfirmDeleteAccountModal.tsx +55 -55
  161. package/src/components/account/ConfirmGlobalPreferencesModal.tsx +66 -66
  162. package/src/components/account/DeleteAccountModal.tsx +130 -130
  163. package/src/components/account/DisableTwoFactorAuthModal.tsx +86 -86
  164. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +49 -49
  165. package/src/components/account/TwoFactorAuthModal.tsx +215 -215
  166. package/src/components/account/hooks/useChangePhoneForm.tsx +107 -107
  167. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +101 -101
  168. package/src/components/account/sections/ChangeEmailModal.tsx +225 -225
  169. package/src/components/account/sections/ChangePasswordSection.tsx +64 -64
  170. package/src/components/account/sections/ChangePhoneModal.tsx +245 -245
  171. package/src/components/account/sections/MyProfileSection.tsx +327 -327
  172. package/src/components/account/sections/PreferencesSection.tsx +248 -248
  173. package/src/components/account/sections/SecuritySection.tsx +46 -46
  174. package/src/components/embeds/CrispEmbed.tsx +101 -101
  175. package/src/components/embeds/FrillEmbed.tsx +119 -119
  176. package/src/components/layouts/AppMobileNavBar.tsx +76 -76
  177. package/src/components/layouts/AppNavBar.tsx +46 -46
  178. package/src/components/layouts/MdSideBarNavigation.tsx +56 -56
  179. package/src/components/layouts/NavBar.tsx +172 -172
  180. package/src/components/layouts/NotificationsPopover.tsx +115 -115
  181. package/src/components/layouts/ProfilePopover.tsx +174 -174
  182. package/src/components/layouts/SideBarNavigation.tsx +62 -62
  183. package/src/components/layouts/UsersSelectorPopover.tsx +234 -234
  184. package/src/components/layouts/WhitelabelCodes.tsx +59 -59
  185. package/src/components/modals/BuyCreditsModal.tsx +314 -314
  186. package/src/components/modals/PaidPlanRequiredModal.tsx +57 -57
  187. package/src/components/modals/cards/AddCardModal.tsx +260 -260
  188. package/src/components/modals/cards/CardFormFields.tsx +294 -294
  189. package/src/components/navigation/CancelledSubscriptionBanner.tsx +64 -64
  190. package/src/components/navigation/NavItemsContext.ts +20 -20
  191. package/src/components/navigation/ProjectSelectorPopover.tsx +177 -177
  192. package/src/components/navigation/shells/TabsMobileShell.tsx +74 -74
  193. package/src/components/navigation/subcomponents/BottomLinks.tsx +37 -37
  194. package/src/components/navigation/subcomponents/ProjectSelector.tsx +169 -169
  195. package/src/components/pages/NotFoundPage.tsx +67 -67
  196. package/src/components/pages/notifications/Notifications.tsx +170 -170
  197. package/src/components/ui/buttons/Button.tsx +57 -57
  198. package/src/components/ui/buttons/CancelButton.tsx +14 -14
  199. package/src/components/ui/buttons/CopyButton.tsx +54 -54
  200. package/src/components/ui/data-display/Accordion.tsx +81 -81
  201. package/src/components/ui/data-display/Badge.tsx +47 -47
  202. package/src/components/ui/data-display/Card.tsx +93 -93
  203. package/src/components/ui/data-display/CardBrandIcons.tsx +336 -336
  204. package/src/components/ui/data-display/CardItem.tsx +75 -75
  205. package/src/components/ui/data-display/Pagination.tsx +126 -126
  206. package/src/components/ui/data-display/PaymentInfoCard.tsx +186 -186
  207. package/src/components/ui/data-display/ScrollArea.tsx +59 -59
  208. package/src/components/ui/data-display/Separator.tsx +29 -29
  209. package/src/components/ui/data-display/Table.tsx +117 -117
  210. package/src/components/ui/data-display/Tabs.tsx +67 -67
  211. package/src/components/ui/feedback/CircularProgress.tsx +75 -75
  212. package/src/components/ui/feedback/DefaultCircularProgress.tsx +61 -61
  213. package/src/components/ui/feedback/LoadingOverlay.tsx +31 -31
  214. package/src/components/ui/feedback/Progress.tsx +40 -40
  215. package/src/components/ui/feedback/Skeleton.tsx +5 -5
  216. package/src/components/ui/feedback/Toast.tsx +101 -101
  217. package/src/components/ui/form/Calendar.tsx +228 -228
  218. package/src/components/ui/form/Checkbox.tsx +31 -31
  219. package/src/components/ui/form/ComboboxField.tsx +154 -154
  220. package/src/components/ui/form/DatePicker.tsx +97 -97
  221. package/src/components/ui/form/DateRangePicker.tsx +108 -108
  222. package/src/components/ui/form/FormField.tsx +131 -131
  223. package/src/components/ui/form/Input.tsx +20 -20
  224. package/src/components/ui/form/InputOtp.tsx +80 -80
  225. package/src/components/ui/form/PhoneInput.tsx +208 -208
  226. package/src/components/ui/form/RadioGroup.tsx +45 -45
  227. package/src/components/ui/form/Select.tsx +200 -200
  228. package/src/components/ui/form/Switch.tsx +32 -32
  229. package/src/components/ui/form/Textarea.tsx +19 -19
  230. package/src/components/ui/overlay/Command.tsx +185 -185
  231. package/src/components/ui/overlay/Dialog.tsx +151 -151
  232. package/src/components/ui/overlay/Popover.tsx +49 -49
  233. package/src/components/ui/overlay/Sheet.tsx +166 -166
  234. package/src/components/ui/overlay/Tooltip.tsx +62 -62
  235. package/src/components/widgets/notifications/NotificationCard.tsx +68 -68
  236. package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
  237. package/src/index.ts +393 -393
  238. package/src/infra/utils/date.ts +7 -7
  239. package/src/middleware.ts +4 -4
  240. package/src/modules/accounts/actions/account-management.action.ts +107 -107
  241. package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
  242. package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
  243. package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
  244. package/src/modules/accounts/hooks/current-account.hook.tsx +22 -22
  245. package/src/modules/accounts/hooks/useAccountManagement.ts +85 -85
  246. package/src/modules/accounts/hooks/useCurrencies.ts +15 -15
  247. package/src/modules/accounts/hooks/useTimezones.ts +15 -15
  248. package/src/modules/accounts/hooks/useViaCep.ts +25 -25
  249. package/src/modules/accounts/services/account.service.ts +239 -239
  250. package/src/modules/accounts/types.ts +225 -225
  251. package/src/modules/auth/actions/validate-session.action.ts +56 -56
  252. package/src/modules/auth/hooks/login.hook.tsx +13 -13
  253. package/src/modules/auth/hooks/logout.hook.tsx +11 -11
  254. package/src/modules/auth/hooks/register.hook.tsx +11 -11
  255. package/src/modules/auth/hooks/useManagementPermissions.ts +45 -45
  256. package/src/modules/auth/types/management-permission.type.ts +7 -7
  257. package/src/modules/auth/utils/assert-management-permission.ts +46 -46
  258. package/src/modules/auth/utils/assert-management-subscription.ts +35 -35
  259. package/src/modules/auth/utils/assert-paid-subscription.ts +43 -43
  260. package/src/modules/auth/utils/assert-subscription-addon.ts +42 -42
  261. package/src/modules/auth/utils/build-wl-override.ts +43 -43
  262. package/src/modules/cards/actions/create-card.action.ts +9 -9
  263. package/src/modules/cards/actions/list-cards.action.ts +8 -8
  264. package/src/modules/cards/hooks/cards.hook.ts +14 -14
  265. package/src/modules/cards/hooks/create-card.hook.ts +18 -18
  266. package/src/modules/cards/services/cards.service.ts +51 -51
  267. package/src/modules/cards/types.ts +32 -32
  268. package/src/modules/ia-credits/actions/list-ia-credits.action.ts +8 -8
  269. package/src/modules/plans/actions/find-plan-by-id.action.ts +8 -8
  270. package/src/modules/plans/hooks/use-has-plan-addon.hook.ts +14 -14
  271. package/src/modules/plans/hooks/use-plan-by-id.hook.ts +13 -13
  272. package/src/modules/plans/services/plans.service.ts +36 -36
  273. package/src/modules/plans/types/plan.type.ts +21 -21
  274. package/src/modules/projects/actions/add-project-user.action.ts +9 -9
  275. package/src/modules/projects/actions/list-all-account-users.action.ts +9 -9
  276. package/src/modules/projects/actions/list-available-users.action.ts +9 -9
  277. package/src/modules/projects/actions/list-project-users.action.ts +9 -9
  278. package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
  279. package/src/modules/projects/hooks/add-project-user.hook.ts +69 -69
  280. package/src/modules/projects/hooks/list-all-account-users.hook.ts +34 -34
  281. package/src/modules/projects/hooks/list-available-users.hook.ts +33 -33
  282. package/src/modules/projects/hooks/list-project-users.hook.ts +33 -33
  283. package/src/modules/projects/hooks/remove-project-user.hook.ts +69 -69
  284. package/src/modules/subscriptions/actions/calculate-subscription.action.ts +9 -9
  285. package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
  286. package/src/modules/subscriptions/actions/update-subscription-plan.action.ts +14 -14
  287. package/src/modules/subscriptions/constants/query-keys.constants.ts +1 -1
  288. package/src/modules/subscriptions/hooks/calculate-subscription.hook.ts +13 -13
  289. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +15 -15
  290. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +16 -16
  291. package/src/modules/subscriptions/hooks/update-subscription-plan.hook.ts +25 -25
  292. package/src/modules/subscriptions/hooks/use-cancelled-subscription-guard.ts +39 -39
  293. package/src/modules/subscriptions/types/billing-period.type.ts +1 -1
  294. package/src/modules/subscriptions/types/calculate-subscription.type.ts +75 -75
  295. package/src/modules/subscriptions/utils/build-plan-extras.ts +56 -56
  296. package/src/modules/subscriptions/utils/has-subscription-expired.ts +8 -8
  297. package/src/modules/subscriptions/utils/periodicity.ts +52 -52
  298. package/src/modules/subscriptions/utils/resolve-plan-extras-prices.ts +23 -23
  299. package/src/modules/users/action/find-user-by-id.action.ts +8 -8
  300. package/src/modules/users/action/list-messages.action.ts +12 -12
  301. package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
  302. package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
  303. package/src/modules/users/hooks/messages.hook.ts +60 -60
  304. package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
  305. package/src/modules/whitelabel/actions/revalidate-whitelabel.action.ts +19 -19
  306. package/src/modules/whitelabel/schema.ts +84 -84
  307. package/src/modules/whitelabel/utils/normalize-hostname.ts +26 -26
  308. package/src/providers/whitelabel.provider.tsx +54 -54
  309. package/src/store/useBuyCreditsModal.ts +21 -21
  310. package/src/store/useDesktopSidebarStore.ts +47 -47
  311. package/src/store/useMdSidebarStore.ts +34 -34
  312. package/src/store/usePaidPlanRequiredModal.ts +19 -19
  313. package/src/utils/constants/br-states.ts +29 -29
  314. package/src/utils/countries.ts +224 -224
  315. package/src/utils/safeServerAction.ts +21 -21
  316. package/src/utils/withAction.ts +13 -13
@@ -1,64 +1,64 @@
1
- 'use client';
2
-
3
- import { useState, useEffect, useCallback } from 'react';
4
- import { IconAlertOctagon, IconX } from '@tabler/icons-react';
5
- import { formatShortDate } from '../../infra/utils/date';
6
- import { useActiveSubscription } from '../../modules/subscriptions/hooks/find-active-subscription.hook';
7
-
8
- interface CancelledSubscriptionBannerProps {
9
- onReactivate?: () => void;
10
- }
11
-
12
- export function CancelledSubscriptionBanner({ onReactivate }: CancelledSubscriptionBannerProps) {
13
- const { data: { data: [subscription] = [] } = {} } = useActiveSubscription();
14
- const [visible, setVisible] = useState(true);
15
- const [animated, setAnimated] = useState(false);
16
-
17
- useEffect(() => {
18
- const timer = setTimeout(() => setAnimated(true), 50);
19
- return () => clearTimeout(timer);
20
- }, []);
21
-
22
- const dismiss = useCallback(() => setVisible(false), []);
23
- const dueDate = new Date(subscription?.date_due);
24
- const today = new Date();
25
- const isPastDue = today >= dueDate;
26
- const formattedDate = formatShortDate(dueDate);
27
-
28
- const isTrial = subscription?.type === 'trial';
29
-
30
- if (!visible) return null;
31
- if (isTrial && !isPastDue) return null;
32
- if (!isTrial && (!subscription?.date_cancellation || isPastDue)) return null;
33
-
34
- return (
35
- <div className="fixed top-[80px] md:top-0 lg:left-[273px] left-0 right-0 z-[60] flex justify-center pointer-events-none px-4 lg:px-0">
36
- <div
37
- className={`flex flex-col sm:flex-row items-start sm:items-center justify-between bg-red-500 rounded-lg px-3 py-2 sm:py-1 w-full lg:w-[805px] max-w-full pointer-events-auto transition-transform duration-500 ease-out gap-2 sm:gap-0 ${animated ? 'translate-y-0 md:translate-y-9' : '-translate-y-full'}`}
38
- >
39
- <div className="flex items-center gap-2 flex-1 w-full sm:w-auto">
40
- <IconAlertOctagon size={16} className="text-white shrink-0" />
41
- <span className="paragraph-xsmall-semibold text-white">
42
- {isPastDue
43
- ? 'Sua assinatura foi cancelada e suas páginas foram retiradas do ar.'
44
- : `Assinatura cancelada! Suas páginas serão retiradas do ar no dia ${formattedDate}!`}
45
- </span>
46
- </div>
47
- <div className="flex items-center gap-1.5 w-full sm:w-auto justify-between sm:justify-start">
48
- <button
49
- type="button"
50
- className="flex items-center justify-center p-1.5 cursor-pointer"
51
- onClick={onReactivate}
52
- >
53
- <span className="paragraph-xsmall-semibold text-white underline">
54
- Reativar assinatura
55
- </span>
56
- </button>
57
- <button type="button" className="cursor-pointer shrink-0" onClick={dismiss}>
58
- <IconX size={18} className="text-red-200" />
59
- </button>
60
- </div>
61
- </div>
62
- </div>
63
- );
64
- }
1
+ 'use client';
2
+
3
+ import { useState, useEffect, useCallback } from 'react';
4
+ import { IconAlertOctagon, IconX } from '@tabler/icons-react';
5
+ import { formatShortDate } from '../../infra/utils/date';
6
+ import { useActiveSubscription } from '../../modules/subscriptions/hooks/find-active-subscription.hook';
7
+
8
+ interface CancelledSubscriptionBannerProps {
9
+ onReactivate?: () => void;
10
+ }
11
+
12
+ export function CancelledSubscriptionBanner({ onReactivate }: CancelledSubscriptionBannerProps) {
13
+ const { data: { data: [subscription] = [] } = {} } = useActiveSubscription();
14
+ const [visible, setVisible] = useState(true);
15
+ const [animated, setAnimated] = useState(false);
16
+
17
+ useEffect(() => {
18
+ const timer = setTimeout(() => setAnimated(true), 50);
19
+ return () => clearTimeout(timer);
20
+ }, []);
21
+
22
+ const dismiss = useCallback(() => setVisible(false), []);
23
+ const dueDate = new Date(subscription?.date_due);
24
+ const today = new Date();
25
+ const isPastDue = today >= dueDate;
26
+ const formattedDate = formatShortDate(dueDate);
27
+
28
+ const isTrial = subscription?.type === 'trial';
29
+
30
+ if (!visible) return null;
31
+ if (isTrial && !isPastDue) return null;
32
+ if (!isTrial && (!subscription?.date_cancellation || isPastDue)) return null;
33
+
34
+ return (
35
+ <div className="fixed top-[80px] md:top-0 lg:left-[273px] left-0 right-0 z-[60] flex justify-center pointer-events-none px-4 lg:px-0">
36
+ <div
37
+ className={`flex flex-col sm:flex-row items-start sm:items-center justify-between bg-red-500 rounded-lg px-3 py-2 sm:py-1 w-full lg:w-[805px] max-w-full pointer-events-auto transition-transform duration-500 ease-out gap-2 sm:gap-0 ${animated ? 'translate-y-0 md:translate-y-9' : '-translate-y-full'}`}
38
+ >
39
+ <div className="flex items-center gap-2 flex-1 w-full sm:w-auto">
40
+ <IconAlertOctagon size={16} className="text-white shrink-0" />
41
+ <span className="paragraph-xsmall-semibold text-white">
42
+ {isPastDue
43
+ ? 'Sua assinatura foi cancelada e suas páginas foram retiradas do ar.'
44
+ : `Assinatura cancelada! Suas páginas serão retiradas do ar no dia ${formattedDate}!`}
45
+ </span>
46
+ </div>
47
+ <div className="flex items-center gap-1.5 w-full sm:w-auto justify-between sm:justify-start">
48
+ <button
49
+ type="button"
50
+ className="flex items-center justify-center p-1.5 cursor-pointer"
51
+ onClick={onReactivate}
52
+ >
53
+ <span className="paragraph-xsmall-semibold text-white underline">
54
+ Reativar assinatura
55
+ </span>
56
+ </button>
57
+ <button type="button" className="cursor-pointer shrink-0" onClick={dismiss}>
58
+ <IconX size={18} className="text-red-200" />
59
+ </button>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ );
64
+ }
@@ -1,20 +1,20 @@
1
- 'use client';
2
-
3
- import { createContext, useContext } from 'react';
4
- import type { NavItemConfig } from './subcomponents/NavItems';
5
-
6
- interface NavItemsContextValue {
7
- navItems: NavItemConfig[];
8
- setNavItems: (items: NavItemConfig[]) => void;
9
- mobileVariant: 'sheet' | 'tabs';
10
- }
11
-
12
- export const NavItemsContext = createContext<NavItemsContextValue>({
13
- navItems: [],
14
- setNavItems: () => {},
15
- mobileVariant: 'sheet',
16
- });
17
-
18
- export function useNavItemsContext(): NavItemsContextValue {
19
- return useContext(NavItemsContext);
20
- }
1
+ 'use client';
2
+
3
+ import { createContext, useContext } from 'react';
4
+ import type { NavItemConfig } from './subcomponents/NavItems';
5
+
6
+ interface NavItemsContextValue {
7
+ navItems: NavItemConfig[];
8
+ setNavItems: (items: NavItemConfig[]) => void;
9
+ mobileVariant: 'sheet' | 'tabs';
10
+ }
11
+
12
+ export const NavItemsContext = createContext<NavItemsContextValue>({
13
+ navItems: [],
14
+ setNavItems: () => {},
15
+ mobileVariant: 'sheet',
16
+ });
17
+
18
+ export function useNavItemsContext(): NavItemsContextValue {
19
+ return useContext(NavItemsContext);
20
+ }
@@ -1,177 +1,177 @@
1
- 'use client';
2
-
3
- import { Dispatch, RefObject, SetStateAction, UIEvent, useCallback } from 'react';
4
- import {
5
- Button,
6
- Command,
7
- CommandEmpty,
8
- CommandInput,
9
- CommandItem,
10
- CommandList,
11
- Popover,
12
- PopoverContent,
13
- PopoverTrigger,
14
- UserAvatar,
15
- } from '../../index';
16
- import { IconCheck, IconChevronDown, IconFolderOpen } from '@tabler/icons-react';
17
- import type { NavigationProject } from './types';
18
-
19
- interface ProjectSelectorPopoverProps {
20
- open: boolean;
21
- setOpen: Dispatch<SetStateAction<boolean>>;
22
- titleRef?: RefObject<HTMLSpanElement | null>;
23
- projects: NavigationProject[];
24
- selectedProject: NavigationProject | null;
25
- isLoading?: boolean;
26
- isFetchingNextPage?: boolean;
27
- hasNextPage?: boolean;
28
- onLoadMore?: () => void | Promise<unknown>;
29
- onSelectProject: (project: NavigationProject) => void;
30
- onAddProject?: () => void;
31
- onManageProjects?: () => void;
32
- children?: React.ReactNode;
33
- }
34
-
35
- function ProjectItemSkeleton() {
36
- return (
37
- <div className="flex items-center justify-between px-2 py-2 gap-2">
38
- <div className="flex items-center gap-2 flex-1">
39
- <div className="skeleton size-9 rounded-lg shrink-0" />
40
- <div className="skeleton h-4 w-36 rounded" />
41
- </div>
42
- <div className="skeleton size-4 rounded-full shrink-0" />
43
- </div>
44
- );
45
- }
46
-
47
- export function ProjectSelectorPopover({
48
- open,
49
- setOpen,
50
- titleRef,
51
- projects,
52
- selectedProject,
53
- isLoading,
54
- isFetchingNextPage,
55
- hasNextPage,
56
- onLoadMore,
57
- onSelectProject,
58
- onAddProject,
59
- onManageProjects,
60
- children,
61
- }: ProjectSelectorPopoverProps) {
62
- const handleListScroll = useCallback((event: UIEvent<HTMLDivElement>) => {
63
- if (!hasNextPage || isFetchingNextPage || !onLoadMore) return;
64
-
65
- const target = event.currentTarget;
66
- const distanceToBottom = target.scrollHeight - target.scrollTop - target.clientHeight;
67
-
68
- if (distanceToBottom <= 80) {
69
- onLoadMore();
70
- }
71
- }, [hasNextPage, isFetchingNextPage, onLoadMore]);
72
-
73
- return (
74
- <Popover open={open} onOpenChange={setOpen}>
75
- <PopoverTrigger asChild>
76
- {children ?? (
77
- <button className="cursor-pointer">
78
- <IconChevronDown
79
- size={20}
80
- className={`transition-transform duration-200 ${open ? 'rotate-180 text-gray-950' : 'text-gray-400'}`}
81
- />
82
- </button>
83
- )}
84
- </PopoverTrigger>
85
- <PopoverContent
86
- className="w-[296px] p-0 bg-white rounded-2xl shadow-md border border-gray-200"
87
- align="start"
88
- sideOffset={8}
89
- onOpenAutoFocus={(e: Event) => e.preventDefault()}
90
- onInteractOutside={(event: Event) => {
91
- if (titleRef?.current?.contains(event.target as Node)) {
92
- event.preventDefault();
93
- }
94
- }}
95
- >
96
- <div className="flex flex-col p-3 gap-2">
97
- <div className="flex items-center justify-between">
98
- <span className="paragraph-small-semibold">Projetos</span>
99
- </div>
100
- <Command className="gap-2">
101
- <CommandInput placeholder="Busque aqui" />
102
- <CommandList
103
- className="custom-scrollbar paragraph-small-medium text-gray-600 h-[227px]"
104
- onScroll={handleListScroll}
105
- >
106
- {isLoading ? (
107
- <>
108
- <ProjectItemSkeleton />
109
- <ProjectItemSkeleton />
110
- <ProjectItemSkeleton />
111
- <ProjectItemSkeleton />
112
- </>
113
- ) : projects.length === 0 ? (
114
- <div className="flex flex-col items-center justify-center gap-2 h-full text-gray-400 py-4">
115
- <IconFolderOpen size={28} className="text-gray-300" />
116
- <span className="paragraph-small-medium text-center text-gray-500">
117
- Nenhum projeto encontrado.
118
- <br />
119
- Crie um projeto para começar.
120
- </span>
121
- </div>
122
- ) : (
123
- <>
124
- <CommandEmpty>Nenhum resultado encontrado.</CommandEmpty>
125
- {projects.map((project) => {
126
- const isSelected = selectedProject?.id === project.id;
127
- return (
128
- <CommandItem
129
- key={project.id}
130
- value={`${project.title}-${project.id}`}
131
- keywords={[project.title]}
132
- className={isSelected ? 'bg-gray-50 min-h-[39px]' : 'min-h-[39px]'}
133
- onSelect={() => onSelectProject(project)}
134
- >
135
- <div className="flex items-center justify-between w-full cursor-pointer">
136
- <div className="flex items-center gap-2 w-full">
137
- <UserAvatar
138
- photo={project.photo}
139
- name={project.title}
140
- size={36}
141
- />
142
- {project.title}
143
- </div>
144
- {isSelected && (
145
- <IconCheck className="size-4 text-gray-950" />
146
- )}
147
- </div>
148
- </CommandItem>
149
- );
150
- })}
151
- {isFetchingNextPage && (
152
- <>
153
- <ProjectItemSkeleton />
154
- <ProjectItemSkeleton />
155
- </>
156
- )}
157
- </>
158
- )}
159
- </CommandList>
160
- </Command>
161
- {onManageProjects && (
162
- <>
163
- <div className="border-t border-gray-200" />
164
- <Button
165
- variant="ghost"
166
- className="h-10! paragraph-small-medium text-gray-600 hover:text-gray-950 hover:bg-zinc-50 w-full justify-center"
167
- onClick={onManageProjects}
168
- >
169
- Gerenciar projetos
170
- </Button>
171
- </>
172
- )}
173
- </div>
174
- </PopoverContent>
175
- </Popover>
176
- );
177
- }
1
+ 'use client';
2
+
3
+ import { Dispatch, RefObject, SetStateAction, UIEvent, useCallback } from 'react';
4
+ import {
5
+ Button,
6
+ Command,
7
+ CommandEmpty,
8
+ CommandInput,
9
+ CommandItem,
10
+ CommandList,
11
+ Popover,
12
+ PopoverContent,
13
+ PopoverTrigger,
14
+ UserAvatar,
15
+ } from '../../index';
16
+ import { IconCheck, IconChevronDown, IconFolderOpen } from '@tabler/icons-react';
17
+ import type { NavigationProject } from './types';
18
+
19
+ interface ProjectSelectorPopoverProps {
20
+ open: boolean;
21
+ setOpen: Dispatch<SetStateAction<boolean>>;
22
+ titleRef?: RefObject<HTMLSpanElement | null>;
23
+ projects: NavigationProject[];
24
+ selectedProject: NavigationProject | null;
25
+ isLoading?: boolean;
26
+ isFetchingNextPage?: boolean;
27
+ hasNextPage?: boolean;
28
+ onLoadMore?: () => void | Promise<unknown>;
29
+ onSelectProject: (project: NavigationProject) => void;
30
+ onAddProject?: () => void;
31
+ onManageProjects?: () => void;
32
+ children?: React.ReactNode;
33
+ }
34
+
35
+ function ProjectItemSkeleton() {
36
+ return (
37
+ <div className="flex items-center justify-between px-2 py-2 gap-2">
38
+ <div className="flex items-center gap-2 flex-1">
39
+ <div className="skeleton size-9 rounded-lg shrink-0" />
40
+ <div className="skeleton h-4 w-36 rounded" />
41
+ </div>
42
+ <div className="skeleton size-4 rounded-full shrink-0" />
43
+ </div>
44
+ );
45
+ }
46
+
47
+ export function ProjectSelectorPopover({
48
+ open,
49
+ setOpen,
50
+ titleRef,
51
+ projects,
52
+ selectedProject,
53
+ isLoading,
54
+ isFetchingNextPage,
55
+ hasNextPage,
56
+ onLoadMore,
57
+ onSelectProject,
58
+ onAddProject,
59
+ onManageProjects,
60
+ children,
61
+ }: ProjectSelectorPopoverProps) {
62
+ const handleListScroll = useCallback((event: UIEvent<HTMLDivElement>) => {
63
+ if (!hasNextPage || isFetchingNextPage || !onLoadMore) return;
64
+
65
+ const target = event.currentTarget;
66
+ const distanceToBottom = target.scrollHeight - target.scrollTop - target.clientHeight;
67
+
68
+ if (distanceToBottom <= 80) {
69
+ onLoadMore();
70
+ }
71
+ }, [hasNextPage, isFetchingNextPage, onLoadMore]);
72
+
73
+ return (
74
+ <Popover open={open} onOpenChange={setOpen}>
75
+ <PopoverTrigger asChild>
76
+ {children ?? (
77
+ <button className="cursor-pointer">
78
+ <IconChevronDown
79
+ size={20}
80
+ className={`transition-transform duration-200 ${open ? 'rotate-180 text-gray-950' : 'text-gray-400'}`}
81
+ />
82
+ </button>
83
+ )}
84
+ </PopoverTrigger>
85
+ <PopoverContent
86
+ className="w-[296px] p-0 bg-white rounded-2xl shadow-md border border-gray-200"
87
+ align="start"
88
+ sideOffset={8}
89
+ onOpenAutoFocus={(e: Event) => e.preventDefault()}
90
+ onInteractOutside={(event: Event) => {
91
+ if (titleRef?.current?.contains(event.target as Node)) {
92
+ event.preventDefault();
93
+ }
94
+ }}
95
+ >
96
+ <div className="flex flex-col p-3 gap-2">
97
+ <div className="flex items-center justify-between">
98
+ <span className="paragraph-small-semibold">Projetos</span>
99
+ </div>
100
+ <Command className="gap-2">
101
+ <CommandInput placeholder="Busque aqui" />
102
+ <CommandList
103
+ className="custom-scrollbar paragraph-small-medium text-gray-600 h-[227px]"
104
+ onScroll={handleListScroll}
105
+ >
106
+ {isLoading ? (
107
+ <>
108
+ <ProjectItemSkeleton />
109
+ <ProjectItemSkeleton />
110
+ <ProjectItemSkeleton />
111
+ <ProjectItemSkeleton />
112
+ </>
113
+ ) : projects.length === 0 ? (
114
+ <div className="flex flex-col items-center justify-center gap-2 h-full text-gray-400 py-4">
115
+ <IconFolderOpen size={28} className="text-gray-300" />
116
+ <span className="paragraph-small-medium text-center text-gray-500">
117
+ Nenhum projeto encontrado.
118
+ <br />
119
+ Crie um projeto para começar.
120
+ </span>
121
+ </div>
122
+ ) : (
123
+ <>
124
+ <CommandEmpty>Nenhum resultado encontrado.</CommandEmpty>
125
+ {projects.map((project) => {
126
+ const isSelected = selectedProject?.id === project.id;
127
+ return (
128
+ <CommandItem
129
+ key={project.id}
130
+ value={`${project.title}-${project.id}`}
131
+ keywords={[project.title]}
132
+ className={isSelected ? 'bg-gray-50 min-h-[39px]' : 'min-h-[39px]'}
133
+ onSelect={() => onSelectProject(project)}
134
+ >
135
+ <div className="flex items-center justify-between w-full cursor-pointer">
136
+ <div className="flex items-center gap-2 w-full">
137
+ <UserAvatar
138
+ photo={project.photo}
139
+ name={project.title}
140
+ size={36}
141
+ />
142
+ {project.title}
143
+ </div>
144
+ {isSelected && (
145
+ <IconCheck className="size-4 text-gray-950" />
146
+ )}
147
+ </div>
148
+ </CommandItem>
149
+ );
150
+ })}
151
+ {isFetchingNextPage && (
152
+ <>
153
+ <ProjectItemSkeleton />
154
+ <ProjectItemSkeleton />
155
+ </>
156
+ )}
157
+ </>
158
+ )}
159
+ </CommandList>
160
+ </Command>
161
+ {onManageProjects && (
162
+ <>
163
+ <div className="border-t border-gray-200" />
164
+ <Button
165
+ variant="ghost"
166
+ className="h-10! paragraph-small-medium text-gray-600 hover:text-gray-950 hover:bg-zinc-50 w-full justify-center"
167
+ onClick={onManageProjects}
168
+ >
169
+ Gerenciar projetos
170
+ </Button>
171
+ </>
172
+ )}
173
+ </div>
174
+ </PopoverContent>
175
+ </Popover>
176
+ );
177
+ }