@greatapps/common 1.1.255 → 1.1.257

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 (303) 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 +3 -2
  22. package/dist/components/layouts/AppMobileNavBar.mjs.map +1 -1
  23. package/dist/components/layouts/AppNavBar.mjs.map +1 -1
  24. package/dist/components/layouts/MdSideBarNavigation.mjs.map +1 -1
  25. package/dist/components/layouts/NavBar.mjs.map +1 -1
  26. package/dist/components/layouts/NotificationsPopover.mjs.map +1 -1
  27. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  28. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  29. package/dist/components/modals/BuyCreditsModal.mjs.map +1 -1
  30. package/dist/components/modals/ModalManager.mjs.map +1 -1
  31. package/dist/components/modals/Modals.mjs.map +1 -1
  32. package/dist/components/navigation/AppNavigation.mjs +2 -1
  33. package/dist/components/navigation/AppNavigation.mjs.map +1 -1
  34. package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
  35. package/dist/components/navigation/NavItemsContext.mjs.map +1 -1
  36. package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
  37. package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
  38. package/dist/components/navigation/subcomponents/ProjectSelector.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.map +1 -1
  79. package/dist/components/widgets/notifications/NotificationCard.mjs.map +1 -1
  80. package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
  81. package/dist/hooks/useDebounce.mjs.map +1 -1
  82. package/dist/hooks/useDebounceState.mjs.map +1 -1
  83. package/dist/hooks/useDebouncedEffect.mjs.map +1 -1
  84. package/dist/index.mjs.map +1 -1
  85. package/dist/infra/utils/clsx.mjs.map +1 -1
  86. package/dist/infra/utils/parser.mjs.map +1 -1
  87. package/dist/infra/utils/percentage.mjs.map +1 -1
  88. package/dist/middleware.mjs.map +1 -1
  89. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  90. package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
  91. package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
  92. package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
  93. package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
  94. package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
  95. package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
  96. package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
  97. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  98. package/dist/modules/auth/actions/validate-session.action.mjs.map +1 -1
  99. package/dist/modules/auth/hooks/login.hook.mjs.map +1 -1
  100. package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -1
  101. package/dist/modules/auth/hooks/register.hook.mjs.map +1 -1
  102. package/dist/modules/cards/actions/list-cards.action.mjs.map +1 -1
  103. package/dist/modules/cards/hooks/cards.hook.mjs.map +1 -1
  104. package/dist/modules/cards/services/cards.service.mjs.map +1 -1
  105. package/dist/modules/cards/types.mjs.map +1 -1
  106. package/dist/modules/ia-credits/actions/list-ia-credits.action.mjs.map +1 -1
  107. package/dist/modules/plans/actions/find-plan-by-id.action.mjs.map +1 -1
  108. package/dist/modules/plans/hooks/use-has-plan-addon.hook.mjs.map +1 -1
  109. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
  110. package/dist/modules/plans/services/plans.service.mjs.map +1 -1
  111. package/dist/modules/plans/types/plan.type.mjs.map +1 -1
  112. package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
  113. package/dist/modules/projects/actions/list-all-account-users.action.mjs.map +1 -1
  114. package/dist/modules/projects/actions/list-available-users.action.mjs.map +1 -1
  115. package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
  116. package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
  117. package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
  118. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  119. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  120. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  121. package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
  122. package/dist/modules/subscriptions/actions/calculate-subscription.action.mjs.map +1 -1
  123. package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
  124. package/dist/modules/subscriptions/actions/update-subscription-plan.action.mjs.map +1 -1
  125. package/dist/modules/subscriptions/constants/query-keys.constants.mjs.map +1 -1
  126. package/dist/modules/subscriptions/hooks/calculate-subscription.hook.mjs.map +1 -1
  127. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  128. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  129. package/dist/modules/subscriptions/hooks/update-subscription-plan.hook.mjs.map +1 -1
  130. package/dist/modules/subscriptions/types/calculate-subscription.type.mjs.map +1 -1
  131. package/dist/modules/subscriptions/utils/build-plan-extras.mjs.map +1 -1
  132. package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
  133. package/dist/modules/subscriptions/utils/resolve-plan-extras-prices.mjs.map +1 -1
  134. package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
  135. package/dist/modules/users/action/list-messages.action.mjs.map +1 -1
  136. package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
  137. package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
  138. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  139. package/dist/modules/users/services/messages.service.mjs.map +1 -1
  140. package/dist/modules/whitelabel/actions/find-whitelabel-styles.action.mjs.map +1 -1
  141. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
  142. package/dist/modules/whitelabel/actions/revalidate-whitelabel-styles.action.mjs.map +1 -1
  143. package/dist/modules/whitelabel/actions/revalidate-whitelabel.action.mjs.map +1 -1
  144. package/dist/modules/whitelabel/services/whitelabel-styles.service.mjs.map +1 -1
  145. package/dist/providers/whitelabel.provider.mjs.map +1 -1
  146. package/dist/store/useAccountModals.mjs.map +1 -1
  147. package/dist/store/useBuyCreditsModal.mjs.map +1 -1
  148. package/dist/store/useModalManager.mjs.map +1 -1
  149. package/dist/utils/countries.mjs.map +1 -1
  150. package/dist/utils/safeServerAction.mjs.map +1 -1
  151. package/dist/utils/withAction.mjs.map +1 -1
  152. package/package.json +89 -89
  153. package/src/components/account/AccountModals.tsx +17 -17
  154. package/src/components/account/ConfigurationsMyAccountModal.tsx +150 -150
  155. package/src/components/account/ConfirmDeleteAccountModal.tsx +55 -55
  156. package/src/components/account/ConfirmGlobalPreferencesModal.tsx +66 -66
  157. package/src/components/account/DeleteAccountModal.tsx +130 -130
  158. package/src/components/account/DisableTwoFactorAuthModal.tsx +86 -86
  159. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +49 -49
  160. package/src/components/account/TwoFactorAuthModal.tsx +223 -223
  161. package/src/components/account/hooks/useChangePhoneForm.tsx +81 -81
  162. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +101 -101
  163. package/src/components/account/sections/ChangeEmailModal.tsx +225 -225
  164. package/src/components/account/sections/ChangePasswordSection.tsx +64 -64
  165. package/src/components/account/sections/ChangePhoneModal.tsx +231 -231
  166. package/src/components/account/sections/MyProfileSection.tsx +327 -327
  167. package/src/components/account/sections/PreferencesSection.tsx +273 -273
  168. package/src/components/account/sections/SecuritySection.tsx +160 -160
  169. package/src/components/embeds/CrispEmbed.tsx +101 -101
  170. package/src/components/embeds/FrillEmbed.tsx +119 -119
  171. package/src/components/handlers/SearchParamsHandler.tsx +61 -61
  172. package/src/components/layouts/AppMobileNavBar.tsx +118 -114
  173. package/src/components/layouts/AppNavBar.tsx +51 -51
  174. package/src/components/layouts/MdSideBarNavigation.tsx +56 -56
  175. package/src/components/layouts/NavBar.tsx +120 -120
  176. package/src/components/layouts/NotificationsPopover.tsx +115 -115
  177. package/src/components/layouts/ProfilePopover.tsx +164 -164
  178. package/src/components/layouts/UsersSelectorPopover.tsx +238 -238
  179. package/src/components/modals/BuyCreditsModal.tsx +301 -301
  180. package/src/components/modals/ModalManager.tsx +29 -29
  181. package/src/components/modals/Modals.tsx +26 -26
  182. package/src/components/navigation/AppNavigation.tsx +2 -3
  183. package/src/components/navigation/CancelledSubscriptionBanner.tsx +69 -69
  184. package/src/components/navigation/NavItemsContext.ts +20 -20
  185. package/src/components/navigation/ProjectSelectorPopover.tsx +157 -157
  186. package/src/components/navigation/shells/TabsMobileShell.tsx +72 -72
  187. package/src/components/navigation/subcomponents/ProjectSelector.tsx +156 -156
  188. package/src/components/pages/notifications/Notifications.tsx +160 -160
  189. package/src/components/ui/buttons/Button.tsx +57 -57
  190. package/src/components/ui/buttons/CancelButton.tsx +14 -14
  191. package/src/components/ui/buttons/CopyButton.tsx +54 -54
  192. package/src/components/ui/data-display/Accordion.tsx +81 -81
  193. package/src/components/ui/data-display/Badge.tsx +47 -47
  194. package/src/components/ui/data-display/Card.tsx +93 -93
  195. package/src/components/ui/data-display/CardBrandIcons.tsx +336 -336
  196. package/src/components/ui/data-display/CardItem.tsx +75 -75
  197. package/src/components/ui/data-display/Pagination.tsx +126 -126
  198. package/src/components/ui/data-display/PaymentInfoCard.tsx +186 -186
  199. package/src/components/ui/data-display/ScrollArea.tsx +59 -59
  200. package/src/components/ui/data-display/Separator.tsx +29 -29
  201. package/src/components/ui/data-display/Table.tsx +117 -117
  202. package/src/components/ui/data-display/Tabs.tsx +67 -67
  203. package/src/components/ui/feedback/CircularProgress.tsx +75 -75
  204. package/src/components/ui/feedback/DefaultCircularProgress.tsx +61 -61
  205. package/src/components/ui/feedback/LoadingOverlay.tsx +31 -31
  206. package/src/components/ui/feedback/Progress.tsx +40 -40
  207. package/src/components/ui/feedback/Skeleton.tsx +5 -5
  208. package/src/components/ui/feedback/Toast.tsx +101 -101
  209. package/src/components/ui/form/Calendar.tsx +228 -228
  210. package/src/components/ui/form/Checkbox.tsx +31 -31
  211. package/src/components/ui/form/ComboboxField.tsx +154 -154
  212. package/src/components/ui/form/DatePicker.tsx +97 -97
  213. package/src/components/ui/form/DateRangePicker.tsx +108 -108
  214. package/src/components/ui/form/FormField.tsx +131 -131
  215. package/src/components/ui/form/Input.tsx +20 -20
  216. package/src/components/ui/form/InputOtp.tsx +80 -80
  217. package/src/components/ui/form/PhoneInput.tsx +205 -205
  218. package/src/components/ui/form/RadioGroup.tsx +45 -45
  219. package/src/components/ui/form/Select.tsx +200 -200
  220. package/src/components/ui/form/Switch.tsx +32 -32
  221. package/src/components/ui/form/Textarea.tsx +19 -19
  222. package/src/components/ui/overlay/Command.tsx +185 -185
  223. package/src/components/ui/overlay/Dialog.tsx +151 -151
  224. package/src/components/ui/overlay/Popover.tsx +49 -49
  225. package/src/components/ui/overlay/Sheet.tsx +166 -166
  226. package/src/components/ui/overlay/Tooltip.tsx +62 -62
  227. package/src/components/widgets/notifications/NotificationCard.tsx +68 -68
  228. package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
  229. package/src/hooks/useDebounce.ts +26 -26
  230. package/src/hooks/useDebounceState.ts +11 -11
  231. package/src/hooks/useDebouncedEffect.ts +69 -69
  232. package/src/index.ts +376 -376
  233. package/src/infra/utils/clsx.ts +6 -6
  234. package/src/infra/utils/parser.ts +52 -52
  235. package/src/infra/utils/percentage.ts +42 -42
  236. package/src/middleware.ts +4 -4
  237. package/src/modules/accounts/actions/account-management.action.ts +91 -91
  238. package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
  239. package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
  240. package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
  241. package/src/modules/accounts/hooks/current-account.hook.tsx +22 -22
  242. package/src/modules/accounts/hooks/useAccountManagement.ts +85 -85
  243. package/src/modules/accounts/hooks/useCurrencies.ts +15 -15
  244. package/src/modules/accounts/hooks/useTimezones.ts +15 -15
  245. package/src/modules/accounts/services/account.service.ts +236 -236
  246. package/src/modules/accounts/types.ts +214 -214
  247. package/src/modules/auth/actions/validate-session.action.ts +56 -56
  248. package/src/modules/auth/hooks/login.hook.tsx +13 -13
  249. package/src/modules/auth/hooks/logout.hook.tsx +11 -11
  250. package/src/modules/auth/hooks/register.hook.tsx +11 -11
  251. package/src/modules/cards/actions/list-cards.action.ts +8 -8
  252. package/src/modules/cards/hooks/cards.hook.ts +14 -14
  253. package/src/modules/cards/services/cards.service.ts +32 -32
  254. package/src/modules/cards/types.ts +32 -32
  255. package/src/modules/ia-credits/actions/list-ia-credits.action.ts +8 -8
  256. package/src/modules/plans/actions/find-plan-by-id.action.ts +8 -8
  257. package/src/modules/plans/hooks/use-has-plan-addon.hook.ts +17 -17
  258. package/src/modules/plans/hooks/use-plan-by-id.hook.ts +13 -13
  259. package/src/modules/plans/services/plans.service.ts +36 -36
  260. package/src/modules/plans/types/plan.type.ts +21 -21
  261. package/src/modules/projects/actions/add-project-user.action.ts +9 -9
  262. package/src/modules/projects/actions/list-all-account-users.action.ts +9 -9
  263. package/src/modules/projects/actions/list-available-users.action.ts +9 -9
  264. package/src/modules/projects/actions/list-project-users.action.ts +9 -9
  265. package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
  266. package/src/modules/projects/hooks/add-project-user.hook.ts +69 -69
  267. package/src/modules/projects/hooks/list-all-account-users.hook.ts +34 -34
  268. package/src/modules/projects/hooks/list-available-users.hook.ts +33 -33
  269. package/src/modules/projects/hooks/list-project-users.hook.ts +33 -33
  270. package/src/modules/projects/hooks/remove-project-user.hook.ts +69 -69
  271. package/src/modules/subscriptions/actions/calculate-subscription.action.ts +9 -9
  272. package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
  273. package/src/modules/subscriptions/actions/update-subscription-plan.action.ts +26 -26
  274. package/src/modules/subscriptions/constants/query-keys.constants.ts +1 -1
  275. package/src/modules/subscriptions/hooks/calculate-subscription.hook.ts +13 -13
  276. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +19 -19
  277. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +16 -16
  278. package/src/modules/subscriptions/hooks/update-subscription-plan.hook.ts +25 -25
  279. package/src/modules/subscriptions/types/billing-period.type.ts +1 -1
  280. package/src/modules/subscriptions/types/calculate-subscription.type.ts +75 -75
  281. package/src/modules/subscriptions/utils/build-plan-extras.ts +56 -56
  282. package/src/modules/subscriptions/utils/periodicity.ts +52 -52
  283. package/src/modules/subscriptions/utils/resolve-plan-extras-prices.ts +23 -23
  284. package/src/modules/users/action/find-user-by-id.action.ts +8 -8
  285. package/src/modules/users/action/list-messages.action.ts +12 -12
  286. package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
  287. package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
  288. package/src/modules/users/hooks/messages.hook.ts +60 -60
  289. package/src/modules/users/services/messages.service.ts +48 -48
  290. package/src/modules/whitelabel/actions/find-whitelabel-styles.action.ts +14 -14
  291. package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
  292. package/src/modules/whitelabel/actions/revalidate-whitelabel-styles.action.ts +10 -10
  293. package/src/modules/whitelabel/actions/revalidate-whitelabel.action.ts +19 -19
  294. package/src/modules/whitelabel/schema.ts +83 -81
  295. package/src/modules/whitelabel/services/whitelabel-styles.service.ts +129 -129
  296. package/src/modules/whitelabel/styles-schema.ts +37 -37
  297. package/src/providers/whitelabel.provider.tsx +54 -54
  298. package/src/store/useAccountModals.ts +55 -55
  299. package/src/store/useBuyCreditsModal.ts +25 -25
  300. package/src/store/useModalManager.ts +104 -104
  301. package/src/utils/countries.ts +224 -224
  302. package/src/utils/safeServerAction.ts +21 -21
  303. package/src/utils/withAction.ts +13 -13
@@ -1,75 +1,75 @@
1
- import z from 'zod';
2
-
3
- export const CalculateSubscriptionPlanExtraRequestSchema = z.object({
4
- id_addon: z.number(),
5
- value: z.number(),
6
- quantity: z.number(),
7
- currency: z.string(),
8
- });
9
-
10
- export const CalculateSubscriptionRequestSchema = z.object({
11
- id_product: z.number(),
12
- id_plan: z.number().optional(),
13
- id_subscription: z.union([z.number(), z.string()]).optional(),
14
- id_coupon: z.number().optional(),
15
- plan_extras: z.array(CalculateSubscriptionPlanExtraRequestSchema.partial({ value: true })).optional(),
16
- });
17
-
18
- export type CalculateSubscriptionRequest = z.infer<typeof CalculateSubscriptionRequestSchema>;
19
-
20
- export const CalculateSubscriptionPlanExtraResponseSchema = z.object({
21
- id_addon: z.number(),
22
- value: z.number(),
23
- value_original: z.number().optional().default(0),
24
- value_discount: z.number().optional().default(0),
25
- quantity: z.number(),
26
- currency: z.string(),
27
- });
28
-
29
- export const CalculateSubscriptionResponseSchema = z.object({
30
- name: z.string(),
31
- month: z.number(),
32
- month_discount: z.number(),
33
- month_discount_coupom: z.number().optional().default(0),
34
- month_original: z.number(),
35
- month_original_discount: z.number().optional().default(0),
36
- month_original_discount_cupom: z.number().optional().default(0),
37
- semmester: z.number(),
38
- semmester_price: z.number().optional().default(0),
39
- semmester_discount: z.number(),
40
- semmester_discount_coupom: z.number().optional().default(0),
41
- semmester_original: z.number(),
42
- semmester_original_discount: z.number().optional().default(0),
43
- semmester_original_discount_cupom: z.number().optional().default(0),
44
- year: z.number(),
45
- year_discount: z.number(),
46
- year_discount_coupom: z.number().optional().default(0),
47
- year_original: z.number(),
48
- year_original_discount: z.number().optional().default(0),
49
- year_original_discount_cupom: z.number().optional().default(0),
50
- plan_extras: z.array(CalculateSubscriptionPlanExtraResponseSchema),
51
- });
52
-
53
- export type CalculateSubscriptionResponse = z.infer<typeof CalculateSubscriptionResponseSchema>;
54
-
55
- export const UpdateSubscriptionPlanExtraSchema = z.object({
56
- id_addon: z.number(),
57
- value: z.number().optional(),
58
- quantity: z.number(),
59
- price: z.string().optional(),
60
- trial: z.boolean().optional(),
61
- trial_days: z.number().optional(),
62
- });
63
-
64
- export const UpdateSubscriptionPlanRequestSchema = z.object({
65
- id_plan: z.number().optional(),
66
- id_coupon: z.union([z.number(), z.null()]).optional(),
67
- date_due: z.string().optional(),
68
- type: z.string().optional(),
69
- active: z.boolean().optional(),
70
- periodicity: z.number().optional(),
71
- plan_extras: z.array(UpdateSubscriptionPlanExtraSchema).optional(),
72
- enable_charge: z.boolean().optional(),
73
- });
74
-
75
- export type UpdateSubscriptionPlanRequest = z.infer<typeof UpdateSubscriptionPlanRequestSchema>;
1
+ import z from 'zod';
2
+
3
+ export const CalculateSubscriptionPlanExtraRequestSchema = z.object({
4
+ id_addon: z.number(),
5
+ value: z.number(),
6
+ quantity: z.number(),
7
+ currency: z.string(),
8
+ });
9
+
10
+ export const CalculateSubscriptionRequestSchema = z.object({
11
+ id_product: z.number(),
12
+ id_plan: z.number().optional(),
13
+ id_subscription: z.union([z.number(), z.string()]).optional(),
14
+ id_coupon: z.number().optional(),
15
+ plan_extras: z.array(CalculateSubscriptionPlanExtraRequestSchema.partial({ value: true })).optional(),
16
+ });
17
+
18
+ export type CalculateSubscriptionRequest = z.infer<typeof CalculateSubscriptionRequestSchema>;
19
+
20
+ export const CalculateSubscriptionPlanExtraResponseSchema = z.object({
21
+ id_addon: z.number(),
22
+ value: z.number(),
23
+ value_original: z.number().optional().default(0),
24
+ value_discount: z.number().optional().default(0),
25
+ quantity: z.number(),
26
+ currency: z.string(),
27
+ });
28
+
29
+ export const CalculateSubscriptionResponseSchema = z.object({
30
+ name: z.string(),
31
+ month: z.number(),
32
+ month_discount: z.number(),
33
+ month_discount_coupom: z.number().optional().default(0),
34
+ month_original: z.number(),
35
+ month_original_discount: z.number().optional().default(0),
36
+ month_original_discount_cupom: z.number().optional().default(0),
37
+ semmester: z.number(),
38
+ semmester_price: z.number().optional().default(0),
39
+ semmester_discount: z.number(),
40
+ semmester_discount_coupom: z.number().optional().default(0),
41
+ semmester_original: z.number(),
42
+ semmester_original_discount: z.number().optional().default(0),
43
+ semmester_original_discount_cupom: z.number().optional().default(0),
44
+ year: z.number(),
45
+ year_discount: z.number(),
46
+ year_discount_coupom: z.number().optional().default(0),
47
+ year_original: z.number(),
48
+ year_original_discount: z.number().optional().default(0),
49
+ year_original_discount_cupom: z.number().optional().default(0),
50
+ plan_extras: z.array(CalculateSubscriptionPlanExtraResponseSchema),
51
+ });
52
+
53
+ export type CalculateSubscriptionResponse = z.infer<typeof CalculateSubscriptionResponseSchema>;
54
+
55
+ export const UpdateSubscriptionPlanExtraSchema = z.object({
56
+ id_addon: z.number(),
57
+ value: z.number().optional(),
58
+ quantity: z.number(),
59
+ price: z.string().optional(),
60
+ trial: z.boolean().optional(),
61
+ trial_days: z.number().optional(),
62
+ });
63
+
64
+ export const UpdateSubscriptionPlanRequestSchema = z.object({
65
+ id_plan: z.number().optional(),
66
+ id_coupon: z.union([z.number(), z.null()]).optional(),
67
+ date_due: z.string().optional(),
68
+ type: z.string().optional(),
69
+ active: z.boolean().optional(),
70
+ periodicity: z.number().optional(),
71
+ plan_extras: z.array(UpdateSubscriptionPlanExtraSchema).optional(),
72
+ enable_charge: z.boolean().optional(),
73
+ });
74
+
75
+ export type UpdateSubscriptionPlanRequest = z.infer<typeof UpdateSubscriptionPlanRequestSchema>;
@@ -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,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
+ }