@greatapps/common 1.1.261 → 1.1.262

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 (272) 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 +1 -1
  20. package/dist/components/layouts/AppMobileNavBar.mjs.map +1 -1
  21. package/dist/components/layouts/AppNavBar.mjs.map +1 -1
  22. package/dist/components/layouts/MdSideBarNavigation.mjs.map +1 -1
  23. package/dist/components/layouts/NavBar.mjs.map +1 -1
  24. package/dist/components/layouts/NotificationsPopover.mjs.map +1 -1
  25. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  26. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  27. package/dist/components/modals/BuyCreditsModal.mjs.map +1 -1
  28. package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
  29. package/dist/components/navigation/NavItemsContext.mjs.map +1 -1
  30. package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
  31. package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
  32. package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
  33. package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
  34. package/dist/components/ui/buttons/Button.mjs.map +1 -1
  35. package/dist/components/ui/buttons/CancelButton.mjs.map +1 -1
  36. package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
  37. package/dist/components/ui/data-display/Accordion.mjs.map +1 -1
  38. package/dist/components/ui/data-display/Badge.mjs.map +1 -1
  39. package/dist/components/ui/data-display/Card.mjs.map +1 -1
  40. package/dist/components/ui/data-display/CardBrandIcons.mjs.map +1 -1
  41. package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
  42. package/dist/components/ui/data-display/Pagination.mjs.map +1 -1
  43. package/dist/components/ui/data-display/PaymentInfoCard.mjs.map +1 -1
  44. package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -1
  45. package/dist/components/ui/data-display/Separator.mjs.map +1 -1
  46. package/dist/components/ui/data-display/Table.mjs.map +1 -1
  47. package/dist/components/ui/data-display/Tabs.mjs.map +1 -1
  48. package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -1
  49. package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
  50. package/dist/components/ui/feedback/LoadingOverlay.mjs.map +1 -1
  51. package/dist/components/ui/feedback/Progress.mjs.map +1 -1
  52. package/dist/components/ui/feedback/Skeleton.mjs.map +1 -1
  53. package/dist/components/ui/feedback/Toast.mjs.map +1 -1
  54. package/dist/components/ui/form/Calendar.mjs.map +1 -1
  55. package/dist/components/ui/form/Checkbox.mjs.map +1 -1
  56. package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
  57. package/dist/components/ui/form/DatePicker.mjs.map +1 -1
  58. package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
  59. package/dist/components/ui/form/FormField.mjs.map +1 -1
  60. package/dist/components/ui/form/Input.mjs.map +1 -1
  61. package/dist/components/ui/form/InputOtp.mjs.map +1 -1
  62. package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
  63. package/dist/components/ui/form/RadioGroup.mjs.map +1 -1
  64. package/dist/components/ui/form/Select.mjs +1 -1
  65. package/dist/components/ui/form/Select.mjs.map +1 -1
  66. package/dist/components/ui/form/Switch.mjs.map +1 -1
  67. package/dist/components/ui/form/Textarea.mjs.map +1 -1
  68. package/dist/components/ui/overlay/Command.mjs.map +1 -1
  69. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  70. package/dist/components/ui/overlay/Popover.mjs.map +1 -1
  71. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  72. package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
  73. package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
  74. package/dist/index.mjs.map +1 -1
  75. package/dist/middleware.mjs.map +1 -1
  76. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  77. package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
  78. package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
  79. package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
  80. package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
  81. package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
  82. package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
  83. package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
  84. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  85. package/dist/modules/auth/actions/validate-session.action.mjs.map +1 -1
  86. package/dist/modules/auth/hooks/login.hook.mjs.map +1 -1
  87. package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -1
  88. package/dist/modules/auth/hooks/register.hook.mjs.map +1 -1
  89. package/dist/modules/cards/actions/list-cards.action.mjs.map +1 -1
  90. package/dist/modules/cards/hooks/cards.hook.mjs.map +1 -1
  91. package/dist/modules/cards/services/cards.service.mjs.map +1 -1
  92. package/dist/modules/cards/types.mjs.map +1 -1
  93. package/dist/modules/ia-credits/actions/list-ia-credits.action.mjs.map +1 -1
  94. package/dist/modules/plans/actions/find-plan-by-id.action.mjs.map +1 -1
  95. package/dist/modules/plans/hooks/use-has-plan-addon.hook.mjs.map +1 -1
  96. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
  97. package/dist/modules/plans/services/plans.service.mjs.map +1 -1
  98. package/dist/modules/plans/types/plan.type.mjs.map +1 -1
  99. package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
  100. package/dist/modules/projects/actions/list-all-account-users.action.mjs.map +1 -1
  101. package/dist/modules/projects/actions/list-available-users.action.mjs.map +1 -1
  102. package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
  103. package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
  104. package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
  105. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  106. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  107. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  108. package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
  109. package/dist/modules/subscriptions/actions/calculate-subscription.action.mjs.map +1 -1
  110. package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
  111. package/dist/modules/subscriptions/actions/update-subscription-plan.action.mjs.map +1 -1
  112. package/dist/modules/subscriptions/constants/query-keys.constants.mjs.map +1 -1
  113. package/dist/modules/subscriptions/hooks/calculate-subscription.hook.mjs.map +1 -1
  114. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  115. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  116. package/dist/modules/subscriptions/hooks/update-subscription-plan.hook.mjs.map +1 -1
  117. package/dist/modules/subscriptions/types/calculate-subscription.type.mjs.map +1 -1
  118. package/dist/modules/subscriptions/utils/build-plan-extras.mjs.map +1 -1
  119. package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
  120. package/dist/modules/subscriptions/utils/resolve-plan-extras-prices.mjs.map +1 -1
  121. package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
  122. package/dist/modules/users/action/list-messages.action.mjs.map +1 -1
  123. package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
  124. package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
  125. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  126. package/dist/modules/whitelabel/actions/find-whitelabel-styles.action.mjs.map +1 -1
  127. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
  128. package/dist/modules/whitelabel/actions/revalidate-whitelabel-styles.action.mjs.map +1 -1
  129. package/dist/modules/whitelabel/actions/revalidate-whitelabel.action.mjs.map +1 -1
  130. package/dist/modules/whitelabel/services/whitelabel-styles.service.mjs.map +1 -1
  131. package/dist/providers/whitelabel.provider.mjs.map +1 -1
  132. package/dist/store/useBuyCreditsModal.mjs.map +1 -1
  133. package/dist/utils/countries.mjs.map +1 -1
  134. package/dist/utils/safeServerAction.mjs.map +1 -1
  135. package/dist/utils/withAction.mjs.map +1 -1
  136. package/package.json +89 -89
  137. package/src/components/account/ConfigurationsMyAccountModal.tsx +150 -150
  138. package/src/components/account/ConfirmDeleteAccountModal.tsx +55 -55
  139. package/src/components/account/ConfirmGlobalPreferencesModal.tsx +66 -66
  140. package/src/components/account/DeleteAccountModal.tsx +130 -130
  141. package/src/components/account/DisableTwoFactorAuthModal.tsx +86 -86
  142. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +49 -49
  143. package/src/components/account/TwoFactorAuthModal.tsx +223 -223
  144. package/src/components/account/hooks/useChangePhoneForm.tsx +81 -81
  145. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +101 -101
  146. package/src/components/account/sections/ChangeEmailModal.tsx +225 -225
  147. package/src/components/account/sections/ChangePasswordSection.tsx +64 -64
  148. package/src/components/account/sections/ChangePhoneModal.tsx +231 -231
  149. package/src/components/account/sections/MyProfileSection.tsx +327 -327
  150. package/src/components/account/sections/PreferencesSection.tsx +273 -273
  151. package/src/components/account/sections/SecuritySection.tsx +160 -160
  152. package/src/components/embeds/CrispEmbed.tsx +101 -101
  153. package/src/components/embeds/FrillEmbed.tsx +119 -119
  154. package/src/components/layouts/AppMobileNavBar.tsx +118 -118
  155. package/src/components/layouts/AppNavBar.tsx +51 -51
  156. package/src/components/layouts/MdSideBarNavigation.tsx +56 -56
  157. package/src/components/layouts/NavBar.tsx +120 -120
  158. package/src/components/layouts/NotificationsPopover.tsx +115 -115
  159. package/src/components/layouts/ProfilePopover.tsx +164 -164
  160. package/src/components/layouts/UsersSelectorPopover.tsx +238 -238
  161. package/src/components/modals/BuyCreditsModal.tsx +301 -301
  162. package/src/components/navigation/CancelledSubscriptionBanner.tsx +69 -69
  163. package/src/components/navigation/NavItemsContext.ts +20 -20
  164. package/src/components/navigation/ProjectSelectorPopover.tsx +157 -157
  165. package/src/components/navigation/shells/TabsMobileShell.tsx +72 -72
  166. package/src/components/navigation/subcomponents/ProjectSelector.tsx +156 -156
  167. package/src/components/pages/notifications/Notifications.tsx +160 -160
  168. package/src/components/ui/buttons/Button.tsx +57 -57
  169. package/src/components/ui/buttons/CancelButton.tsx +14 -14
  170. package/src/components/ui/buttons/CopyButton.tsx +54 -54
  171. package/src/components/ui/data-display/Accordion.tsx +81 -81
  172. package/src/components/ui/data-display/Badge.tsx +47 -47
  173. package/src/components/ui/data-display/Card.tsx +93 -93
  174. package/src/components/ui/data-display/CardBrandIcons.tsx +336 -336
  175. package/src/components/ui/data-display/CardItem.tsx +75 -75
  176. package/src/components/ui/data-display/Pagination.tsx +126 -126
  177. package/src/components/ui/data-display/PaymentInfoCard.tsx +186 -186
  178. package/src/components/ui/data-display/ScrollArea.tsx +59 -59
  179. package/src/components/ui/data-display/Separator.tsx +29 -29
  180. package/src/components/ui/data-display/Table.tsx +117 -117
  181. package/src/components/ui/data-display/Tabs.tsx +67 -67
  182. package/src/components/ui/feedback/CircularProgress.tsx +75 -75
  183. package/src/components/ui/feedback/DefaultCircularProgress.tsx +61 -61
  184. package/src/components/ui/feedback/LoadingOverlay.tsx +31 -31
  185. package/src/components/ui/feedback/Progress.tsx +40 -40
  186. package/src/components/ui/feedback/Skeleton.tsx +5 -5
  187. package/src/components/ui/feedback/Toast.tsx +101 -101
  188. package/src/components/ui/form/Calendar.tsx +228 -228
  189. package/src/components/ui/form/Checkbox.tsx +31 -31
  190. package/src/components/ui/form/ComboboxField.tsx +154 -154
  191. package/src/components/ui/form/DatePicker.tsx +97 -97
  192. package/src/components/ui/form/DateRangePicker.tsx +108 -108
  193. package/src/components/ui/form/FormField.tsx +131 -131
  194. package/src/components/ui/form/Input.tsx +20 -20
  195. package/src/components/ui/form/InputOtp.tsx +80 -80
  196. package/src/components/ui/form/PhoneInput.tsx +205 -205
  197. package/src/components/ui/form/RadioGroup.tsx +45 -45
  198. package/src/components/ui/form/Select.tsx +200 -200
  199. package/src/components/ui/form/Switch.tsx +32 -32
  200. package/src/components/ui/form/Textarea.tsx +19 -19
  201. package/src/components/ui/overlay/Command.tsx +185 -185
  202. package/src/components/ui/overlay/Dialog.tsx +151 -151
  203. package/src/components/ui/overlay/Popover.tsx +49 -49
  204. package/src/components/ui/overlay/Sheet.tsx +166 -166
  205. package/src/components/ui/overlay/Tooltip.tsx +62 -62
  206. package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
  207. package/src/index.ts +376 -376
  208. package/src/middleware.ts +4 -4
  209. package/src/modules/accounts/actions/account-management.action.ts +91 -91
  210. package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
  211. package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
  212. package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
  213. package/src/modules/accounts/hooks/current-account.hook.tsx +22 -22
  214. package/src/modules/accounts/hooks/useAccountManagement.ts +85 -85
  215. package/src/modules/accounts/hooks/useCurrencies.ts +15 -15
  216. package/src/modules/accounts/hooks/useTimezones.ts +15 -15
  217. package/src/modules/accounts/services/account.service.ts +236 -236
  218. package/src/modules/accounts/types.ts +214 -214
  219. package/src/modules/auth/actions/validate-session.action.ts +56 -56
  220. package/src/modules/auth/hooks/login.hook.tsx +13 -13
  221. package/src/modules/auth/hooks/logout.hook.tsx +11 -11
  222. package/src/modules/auth/hooks/register.hook.tsx +11 -11
  223. package/src/modules/cards/actions/list-cards.action.ts +8 -8
  224. package/src/modules/cards/hooks/cards.hook.ts +14 -14
  225. package/src/modules/cards/services/cards.service.ts +32 -32
  226. package/src/modules/cards/types.ts +32 -32
  227. package/src/modules/ia-credits/actions/list-ia-credits.action.ts +8 -8
  228. package/src/modules/plans/actions/find-plan-by-id.action.ts +8 -8
  229. package/src/modules/plans/hooks/use-has-plan-addon.hook.ts +17 -17
  230. package/src/modules/plans/hooks/use-plan-by-id.hook.ts +13 -13
  231. package/src/modules/plans/services/plans.service.ts +36 -36
  232. package/src/modules/plans/types/plan.type.ts +21 -21
  233. package/src/modules/projects/actions/add-project-user.action.ts +9 -9
  234. package/src/modules/projects/actions/list-all-account-users.action.ts +9 -9
  235. package/src/modules/projects/actions/list-available-users.action.ts +9 -9
  236. package/src/modules/projects/actions/list-project-users.action.ts +9 -9
  237. package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
  238. package/src/modules/projects/hooks/add-project-user.hook.ts +69 -69
  239. package/src/modules/projects/hooks/list-all-account-users.hook.ts +34 -34
  240. package/src/modules/projects/hooks/list-available-users.hook.ts +33 -33
  241. package/src/modules/projects/hooks/list-project-users.hook.ts +33 -33
  242. package/src/modules/projects/hooks/remove-project-user.hook.ts +69 -69
  243. package/src/modules/subscriptions/actions/calculate-subscription.action.ts +9 -9
  244. package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
  245. package/src/modules/subscriptions/actions/update-subscription-plan.action.ts +26 -26
  246. package/src/modules/subscriptions/constants/query-keys.constants.ts +1 -1
  247. package/src/modules/subscriptions/hooks/calculate-subscription.hook.ts +13 -13
  248. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +19 -19
  249. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +16 -16
  250. package/src/modules/subscriptions/hooks/update-subscription-plan.hook.ts +25 -25
  251. package/src/modules/subscriptions/types/billing-period.type.ts +1 -1
  252. package/src/modules/subscriptions/types/calculate-subscription.type.ts +75 -75
  253. package/src/modules/subscriptions/utils/build-plan-extras.ts +56 -56
  254. package/src/modules/subscriptions/utils/periodicity.ts +52 -52
  255. package/src/modules/subscriptions/utils/resolve-plan-extras-prices.ts +23 -23
  256. package/src/modules/users/action/find-user-by-id.action.ts +8 -8
  257. package/src/modules/users/action/list-messages.action.ts +12 -12
  258. package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
  259. package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
  260. package/src/modules/users/hooks/messages.hook.ts +60 -60
  261. package/src/modules/whitelabel/actions/find-whitelabel-styles.action.ts +14 -14
  262. package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
  263. package/src/modules/whitelabel/actions/revalidate-whitelabel-styles.action.ts +10 -10
  264. package/src/modules/whitelabel/actions/revalidate-whitelabel.action.ts +19 -19
  265. package/src/modules/whitelabel/schema.ts +83 -83
  266. package/src/modules/whitelabel/services/whitelabel-styles.service.ts +129 -129
  267. package/src/modules/whitelabel/styles-schema.ts +37 -37
  268. package/src/providers/whitelabel.provider.tsx +54 -54
  269. package/src/store/useBuyCreditsModal.ts +25 -25
  270. package/src/utils/countries.ts +224 -224
  271. package/src/utils/safeServerAction.ts +21 -21
  272. 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
+ }
@@ -1,14 +1,14 @@
1
- 'use server';
2
-
3
- import { cache } from 'react';
4
- import { whitelabelStylesService } from '../services/whitelabel-styles.service';
5
- import { WhitelabelStylesData } from '../styles-schema';
6
-
7
- export const findWhitelabelStyles = cache(async (id_wl: number): Promise<WhitelabelStylesData | null> => {
8
- try {
9
- return await whitelabelStylesService.getByWlId(id_wl);
10
- } catch (error) {
11
- console.error('[findWhitelabelStyles] Error fetching styles:', error);
12
- return null;
13
- }
14
- });
1
+ 'use server';
2
+
3
+ import { cache } from 'react';
4
+ import { whitelabelStylesService } from '../services/whitelabel-styles.service';
5
+ import { WhitelabelStylesData } from '../styles-schema';
6
+
7
+ export const findWhitelabelStyles = cache(async (id_wl: number): Promise<WhitelabelStylesData | null> => {
8
+ try {
9
+ return await whitelabelStylesService.getByWlId(id_wl);
10
+ } catch (error) {
11
+ console.error('[findWhitelabelStyles] Error fetching styles:', error);
12
+ return null;
13
+ }
14
+ });