@greatapps/common 1.1.372 → 1.1.374

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 (334) 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 +9 -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.map +1 -1
  43. package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
  44. package/dist/components/ui/buttons/Button.mjs.map +1 -1
  45. package/dist/components/ui/buttons/CancelButton.mjs.map +1 -1
  46. package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
  47. package/dist/components/ui/data-display/Accordion.mjs.map +1 -1
  48. package/dist/components/ui/data-display/Badge.mjs.map +1 -1
  49. package/dist/components/ui/data-display/Card.mjs.map +1 -1
  50. package/dist/components/ui/data-display/CardBrandIcons.mjs.map +1 -1
  51. package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
  52. package/dist/components/ui/data-display/Pagination.mjs.map +1 -1
  53. package/dist/components/ui/data-display/PaymentInfoCard.mjs.map +1 -1
  54. package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -1
  55. package/dist/components/ui/data-display/Separator.mjs.map +1 -1
  56. package/dist/components/ui/data-display/Table.mjs.map +1 -1
  57. package/dist/components/ui/data-display/Tabs.mjs.map +1 -1
  58. package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -1
  59. package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
  60. package/dist/components/ui/feedback/LoadingOverlay.mjs.map +1 -1
  61. package/dist/components/ui/feedback/Progress.mjs.map +1 -1
  62. package/dist/components/ui/feedback/Skeleton.mjs.map +1 -1
  63. package/dist/components/ui/feedback/Toast.mjs.map +1 -1
  64. package/dist/components/ui/form/Calendar.mjs.map +1 -1
  65. package/dist/components/ui/form/Checkbox.mjs.map +1 -1
  66. package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
  67. package/dist/components/ui/form/DatePicker.mjs.map +1 -1
  68. package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
  69. package/dist/components/ui/form/FormField.mjs.map +1 -1
  70. package/dist/components/ui/form/Input.mjs.map +1 -1
  71. package/dist/components/ui/form/InputOtp.mjs.map +1 -1
  72. package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
  73. package/dist/components/ui/form/RadioGroup.mjs.map +1 -1
  74. package/dist/components/ui/form/Select.mjs +1 -1
  75. package/dist/components/ui/form/Select.mjs.map +1 -1
  76. package/dist/components/ui/form/Switch.mjs.map +1 -1
  77. package/dist/components/ui/form/Textarea.mjs.map +1 -1
  78. package/dist/components/ui/overlay/Command.mjs.map +1 -1
  79. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  80. package/dist/components/ui/overlay/Popover.mjs.map +1 -1
  81. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  82. package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
  83. package/dist/components/widgets/notifications/NotificationCard.mjs.map +1 -1
  84. package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
  85. package/dist/hooks/useDebounce.mjs.map +1 -1
  86. package/dist/hooks/useDebounceState.mjs.map +1 -1
  87. package/dist/hooks/useDebouncedEffect.mjs.map +1 -1
  88. package/dist/index.mjs.map +1 -1
  89. package/dist/infra/utils/clsx.mjs.map +1 -1
  90. package/dist/infra/utils/date.mjs.map +1 -1
  91. package/dist/infra/utils/parser.mjs.map +1 -1
  92. package/dist/infra/utils/percentage.mjs.map +1 -1
  93. package/dist/middleware.mjs.map +1 -1
  94. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  95. package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
  96. package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
  97. package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
  98. package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
  99. package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
  100. package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
  101. package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
  102. package/dist/modules/accounts/hooks/useViaCep.mjs.map +1 -1
  103. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  104. package/dist/modules/auth/actions/validate-session.action.mjs.map +1 -1
  105. package/dist/modules/auth/hooks/login.hook.mjs.map +1 -1
  106. package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -1
  107. package/dist/modules/auth/hooks/register.hook.mjs.map +1 -1
  108. package/dist/modules/auth/hooks/useManagementPermissions.mjs.map +1 -1
  109. package/dist/modules/auth/utils/assert-management-permission.mjs.map +1 -1
  110. package/dist/modules/auth/utils/assert-management-subscription.mjs.map +1 -1
  111. package/dist/modules/auth/utils/build-wl-override.mjs.map +1 -1
  112. package/dist/modules/cards/actions/create-card.action.mjs.map +1 -1
  113. package/dist/modules/cards/actions/list-cards.action.mjs.map +1 -1
  114. package/dist/modules/cards/hooks/cards.hook.mjs.map +1 -1
  115. package/dist/modules/cards/hooks/create-card.hook.mjs.map +1 -1
  116. package/dist/modules/cards/services/cards.service.mjs.map +1 -1
  117. package/dist/modules/cards/types.mjs.map +1 -1
  118. package/dist/modules/ia-credits/actions/list-ia-credits.action.mjs.map +1 -1
  119. package/dist/modules/plans/actions/find-plan-by-id.action.mjs.map +1 -1
  120. package/dist/modules/plans/hooks/use-has-plan-addon.hook.mjs.map +1 -1
  121. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
  122. package/dist/modules/plans/services/plans.service.mjs.map +1 -1
  123. package/dist/modules/plans/types/plan.type.mjs.map +1 -1
  124. package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
  125. package/dist/modules/projects/actions/list-all-account-users.action.mjs.map +1 -1
  126. package/dist/modules/projects/actions/list-available-users.action.mjs.map +1 -1
  127. package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
  128. package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
  129. package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
  130. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  131. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  132. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  133. package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
  134. package/dist/modules/subscriptions/actions/calculate-subscription.action.mjs.map +1 -1
  135. package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
  136. package/dist/modules/subscriptions/actions/update-subscription-plan.action.mjs.map +1 -1
  137. package/dist/modules/subscriptions/constants/query-keys.constants.mjs.map +1 -1
  138. package/dist/modules/subscriptions/hooks/calculate-subscription.hook.mjs.map +1 -1
  139. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  140. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  141. package/dist/modules/subscriptions/hooks/update-subscription-plan.hook.mjs.map +1 -1
  142. package/dist/modules/subscriptions/hooks/use-cancelled-subscription-guard.mjs.map +1 -1
  143. package/dist/modules/subscriptions/types/calculate-subscription.type.mjs.map +1 -1
  144. package/dist/modules/subscriptions/utils/build-plan-extras.mjs.map +1 -1
  145. package/dist/modules/subscriptions/utils/has-subscription-expired.mjs.map +1 -1
  146. package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
  147. package/dist/modules/subscriptions/utils/resolve-plan-extras-prices.mjs.map +1 -1
  148. package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
  149. package/dist/modules/users/action/list-messages.action.mjs.map +1 -1
  150. package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
  151. package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
  152. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  153. package/dist/modules/users/services/messages.service.mjs.map +1 -1
  154. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
  155. package/dist/modules/whitelabel/actions/revalidate-whitelabel.action.mjs.map +1 -1
  156. package/dist/modules/whitelabel/utils/normalize-hostname.mjs.map +1 -1
  157. package/dist/providers/whitelabel.provider.mjs.map +1 -1
  158. package/dist/store/useAccountModals.mjs.map +1 -1
  159. package/dist/store/useBuyCreditsModal.mjs.map +1 -1
  160. package/dist/store/useDesktopSidebarStore.mjs.map +1 -1
  161. package/dist/store/useMdSidebarStore.mjs.map +1 -1
  162. package/dist/store/useModalManager.mjs.map +1 -1
  163. package/dist/utils/constants/br-states.mjs.map +1 -1
  164. package/dist/utils/countries.mjs.map +1 -1
  165. package/dist/utils/safeServerAction.mjs.map +1 -1
  166. package/dist/utils/withAction.mjs.map +1 -1
  167. package/package.json +89 -89
  168. package/src/components/account/AccountModals.tsx +17 -17
  169. package/src/components/account/ConfigurationsMyAccountModal.tsx +146 -146
  170. package/src/components/account/ConfirmDeleteAccountModal.tsx +55 -55
  171. package/src/components/account/ConfirmGlobalPreferencesModal.tsx +66 -66
  172. package/src/components/account/DeleteAccountModal.tsx +130 -130
  173. package/src/components/account/DisableTwoFactorAuthModal.tsx +86 -86
  174. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +49 -49
  175. package/src/components/account/TwoFactorAuthModal.tsx +215 -215
  176. package/src/components/account/hooks/useChangePhoneForm.tsx +107 -107
  177. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +101 -101
  178. package/src/components/account/sections/ChangeEmailModal.tsx +225 -225
  179. package/src/components/account/sections/ChangePasswordSection.tsx +64 -64
  180. package/src/components/account/sections/ChangePhoneModal.tsx +245 -245
  181. package/src/components/account/sections/MyProfileSection.tsx +327 -327
  182. package/src/components/account/sections/PreferencesSection.tsx +248 -248
  183. package/src/components/account/sections/SecuritySection.tsx +46 -46
  184. package/src/components/embeds/CrispEmbed.tsx +101 -101
  185. package/src/components/embeds/FrillEmbed.tsx +119 -119
  186. package/src/components/handlers/SearchParamsHandler.tsx +61 -61
  187. package/src/components/layouts/AppMobileNavBar.tsx +118 -118
  188. package/src/components/layouts/AppNavBar.tsx +46 -46
  189. package/src/components/layouts/CollapsibleSidebar.tsx +67 -67
  190. package/src/components/layouts/MdSideBarNavigation.tsx +56 -56
  191. package/src/components/layouts/NavBar.tsx +172 -172
  192. package/src/components/layouts/NotificationsPopover.tsx +115 -115
  193. package/src/components/layouts/ProfilePopover.tsx +178 -170
  194. package/src/components/layouts/SideBarNavigation.tsx +62 -62
  195. package/src/components/layouts/UsersSelectorPopover.tsx +234 -234
  196. package/src/components/layouts/WhitelabelCodes.tsx +59 -59
  197. package/src/components/modals/BuyCreditsModal.tsx +314 -314
  198. package/src/components/modals/ModalManager.tsx +29 -29
  199. package/src/components/modals/Modals.tsx +26 -26
  200. package/src/components/modals/cards/AddCardModal.tsx +260 -260
  201. package/src/components/modals/cards/CardFormFields.tsx +294 -294
  202. package/src/components/navigation/CancelledSubscriptionBanner.tsx +60 -60
  203. package/src/components/navigation/NavItemsContext.ts +20 -20
  204. package/src/components/navigation/ProjectSelectorPopover.tsx +160 -160
  205. package/src/components/navigation/shells/TabsMobileShell.tsx +72 -72
  206. package/src/components/navigation/subcomponents/ProjectSelector.tsx +160 -160
  207. package/src/components/pages/NotFoundPage.tsx +50 -50
  208. package/src/components/pages/notifications/Notifications.tsx +160 -160
  209. package/src/components/ui/buttons/Button.tsx +57 -57
  210. package/src/components/ui/buttons/CancelButton.tsx +14 -14
  211. package/src/components/ui/buttons/CopyButton.tsx +54 -54
  212. package/src/components/ui/data-display/Accordion.tsx +81 -81
  213. package/src/components/ui/data-display/Badge.tsx +47 -47
  214. package/src/components/ui/data-display/Card.tsx +93 -93
  215. package/src/components/ui/data-display/CardBrandIcons.tsx +336 -336
  216. package/src/components/ui/data-display/CardItem.tsx +75 -75
  217. package/src/components/ui/data-display/Pagination.tsx +126 -126
  218. package/src/components/ui/data-display/PaymentInfoCard.tsx +186 -186
  219. package/src/components/ui/data-display/ScrollArea.tsx +59 -59
  220. package/src/components/ui/data-display/Separator.tsx +29 -29
  221. package/src/components/ui/data-display/Table.tsx +117 -117
  222. package/src/components/ui/data-display/Tabs.tsx +67 -67
  223. package/src/components/ui/feedback/CircularProgress.tsx +75 -75
  224. package/src/components/ui/feedback/DefaultCircularProgress.tsx +61 -61
  225. package/src/components/ui/feedback/LoadingOverlay.tsx +31 -31
  226. package/src/components/ui/feedback/Progress.tsx +40 -40
  227. package/src/components/ui/feedback/Skeleton.tsx +5 -5
  228. package/src/components/ui/feedback/Toast.tsx +101 -101
  229. package/src/components/ui/form/Calendar.tsx +228 -228
  230. package/src/components/ui/form/Checkbox.tsx +31 -31
  231. package/src/components/ui/form/ComboboxField.tsx +154 -154
  232. package/src/components/ui/form/DatePicker.tsx +97 -97
  233. package/src/components/ui/form/DateRangePicker.tsx +108 -108
  234. package/src/components/ui/form/FormField.tsx +131 -131
  235. package/src/components/ui/form/Input.tsx +20 -20
  236. package/src/components/ui/form/InputOtp.tsx +80 -80
  237. package/src/components/ui/form/PhoneInput.tsx +208 -208
  238. package/src/components/ui/form/RadioGroup.tsx +45 -45
  239. package/src/components/ui/form/Select.tsx +200 -200
  240. package/src/components/ui/form/Switch.tsx +32 -32
  241. package/src/components/ui/form/Textarea.tsx +19 -19
  242. package/src/components/ui/overlay/Command.tsx +185 -185
  243. package/src/components/ui/overlay/Dialog.tsx +151 -151
  244. package/src/components/ui/overlay/Popover.tsx +49 -49
  245. package/src/components/ui/overlay/Sheet.tsx +166 -166
  246. package/src/components/ui/overlay/Tooltip.tsx +62 -62
  247. package/src/components/widgets/notifications/NotificationCard.tsx +68 -68
  248. package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
  249. package/src/hooks/useDebounce.ts +26 -26
  250. package/src/hooks/useDebounceState.ts +11 -11
  251. package/src/hooks/useDebouncedEffect.ts +69 -69
  252. package/src/index.ts +391 -391
  253. package/src/infra/utils/clsx.ts +6 -6
  254. package/src/infra/utils/date.ts +7 -7
  255. package/src/infra/utils/parser.ts +52 -52
  256. package/src/infra/utils/percentage.ts +42 -42
  257. package/src/middleware.ts +4 -4
  258. package/src/modules/accounts/actions/account-management.action.ts +107 -107
  259. package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
  260. package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
  261. package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
  262. package/src/modules/accounts/hooks/current-account.hook.tsx +22 -22
  263. package/src/modules/accounts/hooks/useAccountManagement.ts +85 -85
  264. package/src/modules/accounts/hooks/useCurrencies.ts +15 -15
  265. package/src/modules/accounts/hooks/useTimezones.ts +15 -15
  266. package/src/modules/accounts/hooks/useViaCep.ts +25 -25
  267. package/src/modules/accounts/services/account.service.ts +239 -239
  268. package/src/modules/accounts/types.ts +225 -225
  269. package/src/modules/auth/actions/validate-session.action.ts +56 -56
  270. package/src/modules/auth/hooks/login.hook.tsx +13 -13
  271. package/src/modules/auth/hooks/logout.hook.tsx +11 -11
  272. package/src/modules/auth/hooks/register.hook.tsx +11 -11
  273. package/src/modules/auth/hooks/useManagementPermissions.ts +45 -45
  274. package/src/modules/auth/types/management-permission.type.ts +7 -7
  275. package/src/modules/auth/utils/assert-management-permission.ts +46 -46
  276. package/src/modules/auth/utils/assert-management-subscription.ts +27 -27
  277. package/src/modules/auth/utils/build-wl-override.ts +43 -43
  278. package/src/modules/cards/actions/create-card.action.ts +9 -9
  279. package/src/modules/cards/actions/list-cards.action.ts +8 -8
  280. package/src/modules/cards/hooks/cards.hook.ts +14 -14
  281. package/src/modules/cards/hooks/create-card.hook.ts +18 -18
  282. package/src/modules/cards/services/cards.service.ts +51 -51
  283. package/src/modules/cards/types.ts +32 -32
  284. package/src/modules/ia-credits/actions/list-ia-credits.action.ts +8 -8
  285. package/src/modules/plans/actions/find-plan-by-id.action.ts +8 -8
  286. package/src/modules/plans/hooks/use-has-plan-addon.hook.ts +17 -17
  287. package/src/modules/plans/hooks/use-plan-by-id.hook.ts +13 -13
  288. package/src/modules/plans/services/plans.service.ts +36 -36
  289. package/src/modules/plans/types/plan.type.ts +21 -21
  290. package/src/modules/projects/actions/add-project-user.action.ts +9 -9
  291. package/src/modules/projects/actions/list-all-account-users.action.ts +9 -9
  292. package/src/modules/projects/actions/list-available-users.action.ts +9 -9
  293. package/src/modules/projects/actions/list-project-users.action.ts +9 -9
  294. package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
  295. package/src/modules/projects/hooks/add-project-user.hook.ts +69 -69
  296. package/src/modules/projects/hooks/list-all-account-users.hook.ts +34 -34
  297. package/src/modules/projects/hooks/list-available-users.hook.ts +33 -33
  298. package/src/modules/projects/hooks/list-project-users.hook.ts +33 -33
  299. package/src/modules/projects/hooks/remove-project-user.hook.ts +69 -69
  300. package/src/modules/subscriptions/actions/calculate-subscription.action.ts +9 -9
  301. package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
  302. package/src/modules/subscriptions/actions/update-subscription-plan.action.ts +14 -14
  303. package/src/modules/subscriptions/constants/query-keys.constants.ts +1 -1
  304. package/src/modules/subscriptions/hooks/calculate-subscription.hook.ts +13 -13
  305. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +19 -19
  306. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +16 -16
  307. package/src/modules/subscriptions/hooks/update-subscription-plan.hook.ts +25 -25
  308. package/src/modules/subscriptions/hooks/use-cancelled-subscription-guard.ts +39 -39
  309. package/src/modules/subscriptions/types/billing-period.type.ts +1 -1
  310. package/src/modules/subscriptions/types/calculate-subscription.type.ts +75 -75
  311. package/src/modules/subscriptions/utils/build-plan-extras.ts +56 -56
  312. package/src/modules/subscriptions/utils/has-subscription-expired.ts +8 -8
  313. package/src/modules/subscriptions/utils/periodicity.ts +52 -52
  314. package/src/modules/subscriptions/utils/resolve-plan-extras-prices.ts +23 -23
  315. package/src/modules/users/action/find-user-by-id.action.ts +8 -8
  316. package/src/modules/users/action/list-messages.action.ts +12 -12
  317. package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
  318. package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
  319. package/src/modules/users/hooks/messages.hook.ts +60 -60
  320. package/src/modules/users/services/messages.service.ts +48 -48
  321. package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
  322. package/src/modules/whitelabel/actions/revalidate-whitelabel.action.ts +19 -19
  323. package/src/modules/whitelabel/schema.ts +84 -84
  324. package/src/modules/whitelabel/utils/normalize-hostname.ts +26 -26
  325. package/src/providers/whitelabel.provider.tsx +54 -54
  326. package/src/store/useAccountModals.ts +55 -55
  327. package/src/store/useBuyCreditsModal.ts +21 -21
  328. package/src/store/useDesktopSidebarStore.ts +47 -47
  329. package/src/store/useMdSidebarStore.ts +34 -34
  330. package/src/store/useModalManager.ts +104 -104
  331. package/src/utils/constants/br-states.ts +29 -29
  332. package/src/utils/countries.ts +224 -224
  333. package/src/utils/safeServerAction.ts +21 -21
  334. package/src/utils/withAction.ts +13 -13
@@ -1,56 +1,56 @@
1
- import type { SubscriptionItem } from '../types/subscription.type';
2
-
3
- export interface PlanExtraOverride {
4
- id_addon: number;
5
- quantity: number;
6
- currency: string;
7
- }
8
-
9
- export interface PlanExtra {
10
- id_addon: number;
11
- value?: number;
12
- quantity: number;
13
- currency: string;
14
- }
15
-
16
- export function buildPlanExtras(
17
- items: SubscriptionItem[],
18
- overrides: PlanExtraOverride[]
19
- ): PlanExtra[] {
20
- const overrideMap = new Map(overrides.map((o) => [o.id_addon, o]));
21
- const seen = new Set<number>();
22
-
23
- const extras: PlanExtra[] = [];
24
-
25
- for (const item of items) {
26
- if (item.id_addon == null || seen.has(item.id_addon)) continue;
27
- seen.add(item.id_addon);
28
-
29
- const override = overrideMap.get(item.id_addon);
30
- if (override) {
31
- overrideMap.delete(item.id_addon);
32
- extras.push({
33
- id_addon: override.id_addon,
34
- quantity: override.quantity,
35
- currency: override.currency,
36
- });
37
- } else {
38
- extras.push({
39
- id_addon: item.id_addon,
40
- value: item.value,
41
- quantity: item.quantity,
42
- currency: item.currency,
43
- });
44
- }
45
- }
46
-
47
- for (const override of overrideMap.values()) {
48
- extras.push({
49
- id_addon: override.id_addon,
50
- quantity: override.quantity,
51
- currency: override.currency,
52
- });
53
- }
54
-
55
- return extras;
56
- }
1
+ import type { SubscriptionItem } from '../types/subscription.type';
2
+
3
+ export interface PlanExtraOverride {
4
+ id_addon: number;
5
+ quantity: number;
6
+ currency: string;
7
+ }
8
+
9
+ export interface PlanExtra {
10
+ id_addon: number;
11
+ value?: number;
12
+ quantity: number;
13
+ currency: string;
14
+ }
15
+
16
+ export function buildPlanExtras(
17
+ items: SubscriptionItem[],
18
+ overrides: PlanExtraOverride[]
19
+ ): PlanExtra[] {
20
+ const overrideMap = new Map(overrides.map((o) => [o.id_addon, o]));
21
+ const seen = new Set<number>();
22
+
23
+ const extras: PlanExtra[] = [];
24
+
25
+ for (const item of items) {
26
+ if (item.id_addon == null || seen.has(item.id_addon)) continue;
27
+ seen.add(item.id_addon);
28
+
29
+ const override = overrideMap.get(item.id_addon);
30
+ if (override) {
31
+ overrideMap.delete(item.id_addon);
32
+ extras.push({
33
+ id_addon: override.id_addon,
34
+ quantity: override.quantity,
35
+ currency: override.currency,
36
+ });
37
+ } else {
38
+ extras.push({
39
+ id_addon: item.id_addon,
40
+ value: item.value,
41
+ quantity: item.quantity,
42
+ currency: item.currency,
43
+ });
44
+ }
45
+ }
46
+
47
+ for (const override of overrideMap.values()) {
48
+ extras.push({
49
+ id_addon: override.id_addon,
50
+ quantity: override.quantity,
51
+ currency: override.currency,
52
+ });
53
+ }
54
+
55
+ return extras;
56
+ }
@@ -1,8 +1,8 @@
1
- export function hasSubscriptionExpired(dateDue: Date | null | undefined) {
2
- if (!dateDue) return false;
3
-
4
- const dueDate = new Date(dateDue);
5
- dueDate.setHours(23, 59, 59, 999);
6
-
7
- return Date.now() > dueDate.getTime();
8
- }
1
+ export function hasSubscriptionExpired(dateDue: Date | null | undefined) {
2
+ if (!dateDue) return false;
3
+
4
+ const dueDate = new Date(dateDue);
5
+ dueDate.setHours(23, 59, 59, 999);
6
+
7
+ return Date.now() > dueDate.getTime();
8
+ }
@@ -1,52 +1,52 @@
1
- import type { BillingPeriod } from '../types/billing-period.type';
2
- import type { CalculateSubscriptionResponse } from '../types/calculate-subscription.type';
3
-
4
- export function periodicityToBillingPeriod(
5
- periodicity: number | string | null | undefined
6
- ): BillingPeriod | null {
7
- if (periodicity === 30 || periodicity === 1 || periodicity === 'monthly') return 'monthly';
8
- if (periodicity === 180 || periodicity === 3 || periodicity === 'semiannual') return 'semiannual';
9
- if (periodicity === 365 || periodicity === 2 || periodicity === 'annual') return 'annual';
10
- return null;
11
- }
12
-
13
- export function billingPeriodToNumeric(billingPeriod: BillingPeriod): 30 | 180 | 365 {
14
- if (billingPeriod === 'semiannual') return 180;
15
- if (billingPeriod === 'annual') return 365;
16
- return 30;
17
- }
18
-
19
- export function getPeriodicityLabel(periodicity: number | string | null | undefined): string {
20
- const period = periodicityToBillingPeriod(periodicity);
21
- if (period === 'semiannual') return 'Semestral';
22
- if (period === 'annual') return 'Anual';
23
- return 'Mensal';
24
- }
25
-
26
- export function getBillingPeriodSuffix(billingPeriod: BillingPeriod): string {
27
- if (billingPeriod === 'semiannual') return '/semestre';
28
- if (billingPeriod === 'annual') return '/ano';
29
- return '/mês';
30
- }
31
-
32
- export function getBillingPeriodLabel(billingPeriod: BillingPeriod): string {
33
- if (billingPeriod === 'semiannual') return 'semestral';
34
- if (billingPeriod === 'annual') return 'anual';
35
- return 'mensal';
36
- }
37
-
38
- export function getBillingPeriodMonths(billingPeriod: BillingPeriod): number {
39
- if (billingPeriod === 'semiannual') return 6;
40
- if (billingPeriod === 'annual') return 12;
41
- return 1;
42
- }
43
-
44
- export function getPriceFromCalculatedData(
45
- data: CalculateSubscriptionResponse,
46
- periodicity: number | string | null | undefined
47
- ): number {
48
- const period = periodicityToBillingPeriod(periodicity);
49
- if (period === 'annual') return data.year;
50
- if (period === 'semiannual') return data.semmester;
51
- return data.month;
52
- }
1
+ import type { BillingPeriod } from '../types/billing-period.type';
2
+ import type { CalculateSubscriptionResponse } from '../types/calculate-subscription.type';
3
+
4
+ export function periodicityToBillingPeriod(
5
+ periodicity: number | string | null | undefined
6
+ ): BillingPeriod | null {
7
+ if (periodicity === 30 || periodicity === 1 || periodicity === 'monthly') return 'monthly';
8
+ if (periodicity === 180 || periodicity === 3 || periodicity === 'semiannual') return 'semiannual';
9
+ if (periodicity === 365 || periodicity === 2 || periodicity === 'annual') return 'annual';
10
+ return null;
11
+ }
12
+
13
+ export function billingPeriodToNumeric(billingPeriod: BillingPeriod): 30 | 180 | 365 {
14
+ if (billingPeriod === 'semiannual') return 180;
15
+ if (billingPeriod === 'annual') return 365;
16
+ return 30;
17
+ }
18
+
19
+ export function getPeriodicityLabel(periodicity: number | string | null | undefined): string {
20
+ const period = periodicityToBillingPeriod(periodicity);
21
+ if (period === 'semiannual') return 'Semestral';
22
+ if (period === 'annual') return 'Anual';
23
+ return 'Mensal';
24
+ }
25
+
26
+ export function getBillingPeriodSuffix(billingPeriod: BillingPeriod): string {
27
+ if (billingPeriod === 'semiannual') return '/semestre';
28
+ if (billingPeriod === 'annual') return '/ano';
29
+ return '/mês';
30
+ }
31
+
32
+ export function getBillingPeriodLabel(billingPeriod: BillingPeriod): string {
33
+ if (billingPeriod === 'semiannual') return 'semestral';
34
+ if (billingPeriod === 'annual') return 'anual';
35
+ return 'mensal';
36
+ }
37
+
38
+ export function getBillingPeriodMonths(billingPeriod: BillingPeriod): number {
39
+ if (billingPeriod === 'semiannual') return 6;
40
+ if (billingPeriod === 'annual') return 12;
41
+ return 1;
42
+ }
43
+
44
+ export function getPriceFromCalculatedData(
45
+ data: CalculateSubscriptionResponse,
46
+ periodicity: number | string | null | undefined
47
+ ): number {
48
+ const period = periodicityToBillingPeriod(periodicity);
49
+ if (period === 'annual') return data.year;
50
+ if (period === 'semiannual') return data.semmester;
51
+ return data.month;
52
+ }
@@ -1,23 +1,23 @@
1
- import 'server-only';
2
-
3
- import type { SubscriptionItem } from '../types/subscription.type';
4
-
5
- interface PlanExtraInput {
6
- id_addon: number;
7
- value?: number;
8
- quantity: number;
9
- [key: string]: unknown;
10
- }
11
-
12
- export function resolvePlanExtrasPrices<T extends PlanExtraInput>(
13
- extras: T[],
14
- subscriptionItems: SubscriptionItem[]
15
- ): T[] {
16
- return extras.map((extra) => {
17
- const item = subscriptionItems.find((i) => i.id_addon === extra.id_addon);
18
- if (item) {
19
- return { ...extra, value: item.value };
20
- }
21
- return { ...extra, value: extra.value ?? 0 };
22
- });
23
- }
1
+ import 'server-only';
2
+
3
+ import type { SubscriptionItem } from '../types/subscription.type';
4
+
5
+ interface PlanExtraInput {
6
+ id_addon: number;
7
+ value?: number;
8
+ quantity: number;
9
+ [key: string]: unknown;
10
+ }
11
+
12
+ export function resolvePlanExtrasPrices<T extends PlanExtraInput>(
13
+ extras: T[],
14
+ subscriptionItems: SubscriptionItem[]
15
+ ): T[] {
16
+ return extras.map((extra) => {
17
+ const item = subscriptionItems.find((i) => i.id_addon === extra.id_addon);
18
+ if (item) {
19
+ return { ...extra, value: item.value };
20
+ }
21
+ return { ...extra, value: extra.value ?? 0 };
22
+ });
23
+ }
@@ -1,8 +1,8 @@
1
- 'use server';
2
-
3
- import { safeServerAction } from '../../../utils/safeServerAction';
4
- import { userService } from '../services/user.service';
5
-
6
- export async function findUserById() {
7
- return safeServerAction(() => userService.findById());
8
- }
1
+ 'use server';
2
+
3
+ import { safeServerAction } from '../../../utils/safeServerAction';
4
+ import { userService } from '../services/user.service';
5
+
6
+ export async function findUserById() {
7
+ return safeServerAction(() => userService.findById());
8
+ }
@@ -1,12 +1,12 @@
1
- 'use server';
2
-
3
- import { safeServerAction } from '../../../utils/safeServerAction';
4
- import { messagesService } from '../services/messages.service';
5
- import type { FindMessagesParams } from '../schema/messages.schema';
6
-
7
- export async function listMessagesAction(params?: Partial<FindMessagesParams>) {
8
- return safeServerAction(async () => {
9
- const result = await messagesService.listMessages(params);
10
- return { data: result.data, total: result.total, totalUnread: result.totalUnread };
11
- });
12
- }
1
+ 'use server';
2
+
3
+ import { safeServerAction } from '../../../utils/safeServerAction';
4
+ import { messagesService } from '../services/messages.service';
5
+ import type { FindMessagesParams } from '../schema/messages.schema';
6
+
7
+ export async function listMessagesAction(params?: Partial<FindMessagesParams>) {
8
+ return safeServerAction(async () => {
9
+ const result = await messagesService.listMessages(params);
10
+ return { data: result.data, total: result.total, totalUnread: result.totalUnread };
11
+ });
12
+ }
@@ -1,8 +1,8 @@
1
- 'use server';
2
-
3
- import { safeServerAction } from '../../../utils/safeServerAction';
4
- import { messagesService } from '../services/messages.service';
5
-
6
- export async function markAllMessagesAsReadAction() {
7
- return safeServerAction(() => messagesService.markAllAsRead());
8
- }
1
+ 'use server';
2
+
3
+ import { safeServerAction } from '../../../utils/safeServerAction';
4
+ import { messagesService } from '../services/messages.service';
5
+
6
+ export async function markAllMessagesAsReadAction() {
7
+ return safeServerAction(() => messagesService.markAllAsRead());
8
+ }
@@ -1,8 +1,8 @@
1
- 'use server';
2
-
3
- import { safeServerAction } from '../../../utils/safeServerAction';
4
- import { messagesService } from '../services/messages.service';
5
-
6
- export async function markMessageAsReadAction(messageId: string) {
7
- return safeServerAction(() => messagesService.markAsRead(messageId));
8
- }
1
+ 'use server';
2
+
3
+ import { safeServerAction } from '../../../utils/safeServerAction';
4
+ import { messagesService } from '../services/messages.service';
5
+
6
+ export async function markMessageAsReadAction(messageId: string) {
7
+ return safeServerAction(() => messagesService.markAsRead(messageId));
8
+ }
@@ -1,60 +1,60 @@
1
- 'use client';
2
-
3
- import { useInfiniteQuery, useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
4
- import { listMessagesAction } from '../action/list-messages.action';
5
- import { markMessageAsReadAction } from '../action/mark-message-as-read.action';
6
- import { markAllMessagesAsReadAction } from '../action/mark-all-messages-as-read.action';
7
- import { withAction } from '../../../utils/withAction';
8
- import type { FindMessagesParams } from '../schema/messages.schema';
9
-
10
- export const MESSAGES_QUERY_KEY = ['messages'];
11
-
12
- const INFINITE_MESSAGES_PAGE_SIZE = 10;
13
-
14
- export function useMessages(params?: Partial<FindMessagesParams>) {
15
- return useQuery({
16
- queryKey: [...MESSAGES_QUERY_KEY, params],
17
- queryFn: withAction(() => listMessagesAction(params)),
18
- });
19
- }
20
-
21
- export function useInfiniteMessages(params?: Partial<Omit<FindMessagesParams, 'page' | 'limit'>>) {
22
- return useInfiniteQuery({
23
- queryKey: [...MESSAGES_QUERY_KEY, 'infinite', params],
24
- queryFn: ({ pageParam }) =>
25
- withAction(() =>
26
- listMessagesAction({
27
- ...params,
28
- page: pageParam as number,
29
- limit: INFINITE_MESSAGES_PAGE_SIZE,
30
- })
31
- )(),
32
- getNextPageParam: (lastPage, allPages) => {
33
- const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);
34
- return loaded < lastPage.total ? allPages.length + 1 : undefined;
35
- },
36
- initialPageParam: 1,
37
- });
38
- }
39
-
40
- export function useMarkMessageAsRead() {
41
- const queryClient = useQueryClient();
42
-
43
- return useMutation({
44
- mutationFn: withAction(markMessageAsReadAction),
45
- onSuccess: () => {
46
- queryClient.invalidateQueries({ queryKey: MESSAGES_QUERY_KEY });
47
- },
48
- });
49
- }
50
-
51
- export function useMarkAllMessagesAsRead() {
52
- const queryClient = useQueryClient();
53
-
54
- return useMutation({
55
- mutationFn: withAction(markAllMessagesAsReadAction),
56
- onSuccess: () => {
57
- queryClient.invalidateQueries({ queryKey: MESSAGES_QUERY_KEY });
58
- },
59
- });
60
- }
1
+ 'use client';
2
+
3
+ import { useInfiniteQuery, useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
4
+ import { listMessagesAction } from '../action/list-messages.action';
5
+ import { markMessageAsReadAction } from '../action/mark-message-as-read.action';
6
+ import { markAllMessagesAsReadAction } from '../action/mark-all-messages-as-read.action';
7
+ import { withAction } from '../../../utils/withAction';
8
+ import type { FindMessagesParams } from '../schema/messages.schema';
9
+
10
+ export const MESSAGES_QUERY_KEY = ['messages'];
11
+
12
+ const INFINITE_MESSAGES_PAGE_SIZE = 10;
13
+
14
+ export function useMessages(params?: Partial<FindMessagesParams>) {
15
+ return useQuery({
16
+ queryKey: [...MESSAGES_QUERY_KEY, params],
17
+ queryFn: withAction(() => listMessagesAction(params)),
18
+ });
19
+ }
20
+
21
+ export function useInfiniteMessages(params?: Partial<Omit<FindMessagesParams, 'page' | 'limit'>>) {
22
+ return useInfiniteQuery({
23
+ queryKey: [...MESSAGES_QUERY_KEY, 'infinite', params],
24
+ queryFn: ({ pageParam }) =>
25
+ withAction(() =>
26
+ listMessagesAction({
27
+ ...params,
28
+ page: pageParam as number,
29
+ limit: INFINITE_MESSAGES_PAGE_SIZE,
30
+ })
31
+ )(),
32
+ getNextPageParam: (lastPage, allPages) => {
33
+ const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);
34
+ return loaded < lastPage.total ? allPages.length + 1 : undefined;
35
+ },
36
+ initialPageParam: 1,
37
+ });
38
+ }
39
+
40
+ export function useMarkMessageAsRead() {
41
+ const queryClient = useQueryClient();
42
+
43
+ return useMutation({
44
+ mutationFn: withAction(markMessageAsReadAction),
45
+ onSuccess: () => {
46
+ queryClient.invalidateQueries({ queryKey: MESSAGES_QUERY_KEY });
47
+ },
48
+ });
49
+ }
50
+
51
+ export function useMarkAllMessagesAsRead() {
52
+ const queryClient = useQueryClient();
53
+
54
+ return useMutation({
55
+ mutationFn: withAction(markAllMessagesAsReadAction),
56
+ onSuccess: () => {
57
+ queryClient.invalidateQueries({ queryKey: MESSAGES_QUERY_KEY });
58
+ },
59
+ });
60
+ }
@@ -1,48 +1,48 @@
1
- import 'server-only';
2
-
3
- import { api } from '../../../infra/api/client';
4
- import { buildQueryParams } from '../../../infra/utils/params';
5
- import { getUserContext } from '../../auth/utils/get-user-context';
6
- import {
7
- FindMessagesParams,
8
- ListMessagesApiResponse,
9
- MarkAsReadApiResponse,
10
- MarkAllAsReadApiResponse,
11
- } from '../schema/messages.schema';
12
-
13
- class MessagesService {
14
- async listMessages(
15
- params?: Partial<FindMessagesParams>
16
- ): Promise<ListMessagesApiResponse> {
17
- const { id_account, id_user } = await getUserContext();
18
-
19
- const query = buildQueryParams({
20
- id_account,
21
- id_user,
22
- type: 'notification',
23
- limit: 20,
24
- page: 1,
25
- order: 'desc',
26
- ...params,
27
- });
28
-
29
- const url = `/accounts/${id_account}/messages${query ? `?${query}` : ''}`;
30
- return api.apps.get<ListMessagesApiResponse>(url);
31
- }
32
-
33
- async markAsRead(messageId: string): Promise<MarkAsReadApiResponse> {
34
- const { id_account } = await getUserContext();
35
-
36
- const url = `/accounts/${id_account}/messages/${messageId}/action/markAsRead`;
37
- return api.apps.put<MarkAsReadApiResponse>(url);
38
- }
39
-
40
- async markAllAsRead(): Promise<MarkAllAsReadApiResponse> {
41
- const { id_account, id_user } = await getUserContext();
42
-
43
- const url = `/accounts/${id_account}/messages/action/markAllAsRead`;
44
- return api.apps.put<MarkAllAsReadApiResponse>(url, { id_user });
45
- }
46
- }
47
-
48
- export const messagesService = new MessagesService();
1
+ import 'server-only';
2
+
3
+ import { api } from '../../../infra/api/client';
4
+ import { buildQueryParams } from '../../../infra/utils/params';
5
+ import { getUserContext } from '../../auth/utils/get-user-context';
6
+ import {
7
+ FindMessagesParams,
8
+ ListMessagesApiResponse,
9
+ MarkAsReadApiResponse,
10
+ MarkAllAsReadApiResponse,
11
+ } from '../schema/messages.schema';
12
+
13
+ class MessagesService {
14
+ async listMessages(
15
+ params?: Partial<FindMessagesParams>
16
+ ): Promise<ListMessagesApiResponse> {
17
+ const { id_account, id_user } = await getUserContext();
18
+
19
+ const query = buildQueryParams({
20
+ id_account,
21
+ id_user,
22
+ type: 'notification',
23
+ limit: 20,
24
+ page: 1,
25
+ order: 'desc',
26
+ ...params,
27
+ });
28
+
29
+ const url = `/accounts/${id_account}/messages${query ? `?${query}` : ''}`;
30
+ return api.apps.get<ListMessagesApiResponse>(url);
31
+ }
32
+
33
+ async markAsRead(messageId: string): Promise<MarkAsReadApiResponse> {
34
+ const { id_account } = await getUserContext();
35
+
36
+ const url = `/accounts/${id_account}/messages/${messageId}/action/markAsRead`;
37
+ return api.apps.put<MarkAsReadApiResponse>(url);
38
+ }
39
+
40
+ async markAllAsRead(): Promise<MarkAllAsReadApiResponse> {
41
+ const { id_account, id_user } = await getUserContext();
42
+
43
+ const url = `/accounts/${id_account}/messages/action/markAllAsRead`;
44
+ return api.apps.put<MarkAllAsReadApiResponse>(url, { id_user });
45
+ }
46
+ }
47
+
48
+ export const messagesService = new MessagesService();
@@ -1,24 +1,24 @@
1
- 'use server';
2
-
3
-
4
- import { headers } from "next/headers";
5
- import { whitelabelService } from "../services/whitelabel.service";
6
- import { ApiError } from "../../../infra/api/types";
7
- import { cache } from "react";
8
-
9
- export const findWhitelabel = cache(async () => {
10
- const headersList = await headers();
11
- const host = headersList.get('host');
12
-
13
- if (!host) {
14
- throw new ApiError('Host header not found', 'HOST_NOT_FOUND', 400);
15
- }
16
-
17
- const whitelabel = await whitelabelService.getTokenByDomain(host);
18
-
19
- if (!whitelabel) {
20
- throw new ApiError('Whitelabel not found', 'WL_NOT_FOUND', 404);
21
- }
22
-
23
- return whitelabel;
1
+ 'use server';
2
+
3
+
4
+ import { headers } from "next/headers";
5
+ import { whitelabelService } from "../services/whitelabel.service";
6
+ import { ApiError } from "../../../infra/api/types";
7
+ import { cache } from "react";
8
+
9
+ export const findWhitelabel = cache(async () => {
10
+ const headersList = await headers();
11
+ const host = headersList.get('host');
12
+
13
+ if (!host) {
14
+ throw new ApiError('Host header not found', 'HOST_NOT_FOUND', 400);
15
+ }
16
+
17
+ const whitelabel = await whitelabelService.getTokenByDomain(host);
18
+
19
+ if (!whitelabel) {
20
+ throw new ApiError('Whitelabel not found', 'WL_NOT_FOUND', 404);
21
+ }
22
+
23
+ return whitelabel;
24
24
  });