@opexa/portal-components 0.0.931 → 0.0.933

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 (183) hide show
  1. package/dist/components/DepositWithdrawal/Deposit/AurixPayPayMayaDeposit/AurixPayGrabPayDeposit.js +2 -21
  2. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositContext.d.ts +2 -2
  3. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/useOnlineBankDeposit.d.ts +1 -1
  4. package/dist/components/PortalProvider/SessionWatcher.js +2 -0
  5. package/dist/components/Search/Search.lazy.js +4 -2
  6. package/dist/components/SingleSignOn/SingleSignOn.d.ts +1 -1
  7. package/dist/components/SingleSignOn/SingleSignOn.js +15 -7
  8. package/dist/ui/QrCode/QrCode.d.ts +25 -25
  9. package/dist/ui/QrCode/qrCode.recipe.d.ts +5 -5
  10. package/package.json +1 -1
  11. package/dist/assets/providers/alize.png +0 -0
  12. package/dist/assets/providers/bigtime-gaming.png +0 -0
  13. package/dist/assets/providers/bng.png +0 -0
  14. package/dist/assets/providers/boongo.png +0 -0
  15. package/dist/assets/providers/btg.png +0 -0
  16. package/dist/assets/providers/cq9.png +0 -0
  17. package/dist/assets/providers/darwin.png +0 -0
  18. package/dist/assets/providers/digitain.png +0 -0
  19. package/dist/assets/providers/evolution.png +0 -0
  20. package/dist/assets/providers/fantasma-games.png +0 -0
  21. package/dist/assets/providers/fc.png +0 -0
  22. package/dist/assets/providers/fp.png +0 -0
  23. package/dist/assets/providers/habanero.png +0 -0
  24. package/dist/assets/providers/hacksaw.png +0 -0
  25. package/dist/assets/providers/jdb.png +0 -0
  26. package/dist/assets/providers/jili.png +0 -0
  27. package/dist/assets/providers/leap.png +0 -0
  28. package/dist/assets/providers/live-22-metaverse.png +0 -0
  29. package/dist/assets/providers/netent.png +0 -0
  30. package/dist/assets/providers/no-limit.png +0 -0
  31. package/dist/assets/providers/pg.png +0 -0
  32. package/dist/assets/providers/pgsoft.png +0 -0
  33. package/dist/assets/providers/pragmatic-play.png +0 -0
  34. package/dist/assets/providers/realtime-gaming.png +0 -0
  35. package/dist/assets/providers/redtiger.png +0 -0
  36. package/dist/assets/providers/rtg.png +0 -0
  37. package/dist/assets/providers/sagaming.png +0 -0
  38. package/dist/client/hooks/useAiOGCashDepositMutation.d.ts +0 -4
  39. package/dist/client/hooks/useAiOGCashDepositMutation.js +0 -90
  40. package/dist/client/hooks/useAiOGrabPayDepositMutation.d.ts +0 -4
  41. package/dist/client/hooks/useAiOGrabPayDepositMutation.js +0 -80
  42. package/dist/client/hooks/useAiOPalawanPayDepositMutation.d.ts +0 -4
  43. package/dist/client/hooks/useAiOPalawanPayDepositMutation.js +0 -80
  44. package/dist/client/hooks/useAiOPayMayaDepositMutation.d.ts +0 -4
  45. package/dist/client/hooks/useAiOPayMayaDepositMutation.js +0 -80
  46. package/dist/components/Banner/Banner.client.d.ts +0 -12
  47. package/dist/components/Banner/Banner.client.js +0 -49
  48. package/dist/components/DepositWithdrawal/AiOPaymentMethods.d.ts +0 -11
  49. package/dist/components/DepositWithdrawal/AiOPaymentMethods.js +0 -55
  50. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositAlert.d.ts +0 -1
  51. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositAlert.js +0 -99
  52. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositDetails.d.ts +0 -1
  53. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositDetails.js +0 -17
  54. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositForm.d.ts +0 -1
  55. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositForm.js +0 -116
  56. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHQRCode.d.ts +0 -3
  57. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHQRCode.js +0 -69
  58. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDeposit.d.ts +0 -1
  59. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDeposit.js +0 -10
  60. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositAlert.d.ts +0 -1
  61. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositAlert.js +0 -99
  62. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositContext.d.ts +0 -25
  63. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositContext.js +0 -2
  64. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositDetails.d.ts +0 -1
  65. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositDetails.js +0 -17
  66. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositForm.d.ts +0 -1
  67. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositForm.js +0 -116
  68. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHQRCode.d.ts +0 -3
  69. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHQRCode.js +0 -69
  70. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/useQRPHDeposit.d.ts +0 -13
  71. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/useQRPHDeposit.js +0 -85
  72. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGCashDeposit/AiOGCashDeposit.d.ts +0 -1
  73. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGCashDeposit/AiOGCashDeposit.js +0 -173
  74. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGrabPayDeposit/AiOGrabPayDeposit.d.ts +0 -1
  75. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGrabPayDeposit/AiOGrabPayDeposit.js +0 -171
  76. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPalawanPayDeposit/AiOPalawanPayDeposit.d.ts +0 -1
  77. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPalawanPayDeposit/AiOPalawanPayDeposit.js +0 -171
  78. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPayMayaDeposit/AiOPayMayaDeposit.d.ts +0 -1
  79. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPayMayaDeposit/AiOPayMayaDeposit.js +0 -171
  80. package/dist/components/DepositWithdrawal/Deposit__legacy/AvailablePromos.d.ts +0 -8
  81. package/dist/components/DepositWithdrawal/Deposit__legacy/AvailablePromos.js +0 -33
  82. package/dist/components/DepositWithdrawal/Deposit__legacy/Deposit.d.ts +0 -1
  83. package/dist/components/DepositWithdrawal/Deposit__legacy/Deposit.js +0 -120
  84. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashDeposit/GCashDeposit.d.ts +0 -1
  85. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashDeposit/GCashDeposit.js +0 -163
  86. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashWebpayDeposit/GCashWebpayDeposit.d.ts +0 -1
  87. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashWebpayDeposit/GCashWebpayDeposit.js +0 -165
  88. package/dist/components/DepositWithdrawal/Deposit__legacy/LibanganDeposit/LibanganDeposit.d.ts +0 -1
  89. package/dist/components/DepositWithdrawal/Deposit__legacy/LibanganDeposit/LibanganDeposit.js +0 -186
  90. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaAppDeposit/MayaAppDeposit.d.ts +0 -1
  91. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaAppDeposit/MayaAppDeposit.js +0 -157
  92. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaDeposit/MayaDeposit.d.ts +0 -1
  93. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaDeposit/MayaDeposit.js +0 -163
  94. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaWebpayDeposit/MayaWebpayDeposit.d.ts +0 -1
  95. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaWebpayDeposit/MayaWebpayDeposit.js +0 -166
  96. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDeposit.d.ts +0 -1
  97. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDeposit.js +0 -10
  98. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositAlert.d.ts +0 -1
  99. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositAlert.js +0 -99
  100. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositContext.d.ts +0 -25
  101. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositContext.js +0 -2
  102. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositDetails.d.ts +0 -1
  103. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositDetails.js +0 -19
  104. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositForm.d.ts +0 -1
  105. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositForm.js +0 -115
  106. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/useOnlineBankDeposit.d.ts +0 -13
  107. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/useOnlineBankDeposit.js +0 -81
  108. package/dist/components/DepositWithdrawal/Deposit__legacy/PisoPayDeposit/PisoPayDeposit.d.ts +0 -1
  109. package/dist/components/DepositWithdrawal/Deposit__legacy/PisoPayDeposit/PisoPayDeposit.js +0 -180
  110. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDeposit.d.ts +0 -1
  111. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDeposit.js +0 -10
  112. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositAlert.d.ts +0 -1
  113. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositAlert.js +0 -99
  114. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositContext.d.ts +0 -25
  115. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositContext.js +0 -2
  116. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositDetails.d.ts +0 -1
  117. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositDetails.js +0 -17
  118. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositForm.d.ts +0 -1
  119. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositForm.js +0 -116
  120. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHQRCode.d.ts +0 -3
  121. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHQRCode.js +0 -69
  122. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/useQRPHDeposit.d.ts +0 -13
  123. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/useQRPHDeposit.js +0 -85
  124. package/dist/components/DigitainLauncher/Loading.d.ts +0 -1
  125. package/dist/components/DigitainLauncher/Loading.js +0 -5
  126. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.module.css +0 -184
  127. package/dist/components/Jackpots/JackpotsList/JackpotsListItem.module.css +0 -184
  128. package/dist/components/KYC/BasicInformation.d.ts +0 -1
  129. package/dist/components/KYC/BasicInformation.js +0 -101
  130. package/dist/components/KYC/IdentityVerification.d.ts +0 -1
  131. package/dist/components/KYC/IdentityVerification.js +0 -120
  132. package/dist/components/KYC/Indicator.d.ts +0 -1
  133. package/dist/components/KYC/Indicator.js +0 -8
  134. package/dist/components/KYC/KYC.lazy.d.ts +0 -6
  135. package/dist/components/KYC/KYC.lazy.js +0 -45
  136. package/dist/components/KYC/KYCContext.d.ts +0 -6
  137. package/dist/components/KYC/KYCContext.js +0 -2
  138. package/dist/components/KYC/KYCDefault/BasicInformation.d.ts +0 -1
  139. package/dist/components/KYC/KYCDefault/BasicInformation.js +0 -101
  140. package/dist/components/KYC/KYCVerificationStatus.d.ts +0 -1
  141. package/dist/components/KYC/KYCVerificationStatus.js +0 -10
  142. package/dist/components/KYC/KYCVerificationStatus.lazy.d.ts +0 -1
  143. package/dist/components/KYC/KYCVerificationStatus.lazy.js +0 -36
  144. package/dist/components/KYC/PersonalInformation.d.ts +0 -1
  145. package/dist/components/KYC/PersonalInformation.js +0 -122
  146. package/dist/components/KYC/useKYC.d.ts +0 -25
  147. package/dist/components/KYC/useKYC.js +0 -38
  148. package/dist/components/KYCNotRequired/KYCNotRequired.d.ts +0 -0
  149. package/dist/components/KYCNotRequired/KYCNotRequired.js +0 -1
  150. package/dist/components/PortalProvider/AndroidOnlyComponents.d.ts +0 -1
  151. package/dist/components/PortalProvider/AndroidOnlyComponents.js +0 -12
  152. package/dist/components/PortalProvider/CXDTokenObserver.d.ts +0 -1
  153. package/dist/components/PortalProvider/CXDTokenObserver.js +0 -30
  154. package/dist/components/PortalProvider/LinkGoogleAccountObserver.d.ts +0 -1
  155. package/dist/components/PortalProvider/LinkGoogleAccountObserver.js +0 -29
  156. package/dist/components/Quests/MultiWageringQuest.d.ts +0 -1
  157. package/dist/components/Quests/MultiWageringQuest.js +0 -111
  158. package/dist/components/SessionWatcher/SessionWatcher.d.ts +0 -1
  159. package/dist/components/SessionWatcher/SessionWatcher.js +0 -20
  160. package/dist/components/SessionWatcher/index.d.ts +0 -1
  161. package/dist/components/SessionWatcher/index.js +0 -1
  162. package/dist/components/SignIn/utils.d.ts +0 -8
  163. package/dist/components/SignIn/utils.js +0 -26
  164. package/dist/constants/Branches.d.ts +0 -2
  165. package/dist/constants/Branches.js +0 -42
  166. package/dist/images/game-providers/ALPHACHINKO.png +0 -0
  167. package/dist/images/responsible-gaming-yellow.png +0 -0
  168. package/dist/third-parties/FacebookPixel/FacebookPixel.d.ts +0 -4
  169. package/dist/third-parties/FacebookPixel/FacebookPixel.js +0 -4
  170. package/dist/third-parties/FacebookPixel/api.d.ts +0 -0
  171. package/dist/third-parties/FacebookPixel/api.js +0 -1
  172. package/dist/third-parties/FacebookPixel/index.d.ts +0 -1
  173. package/dist/third-parties/FacebookPixel/index.js +0 -1
  174. package/dist/third-parties/GoogleRecaptcha/GoogleRecaptcha.d.ts +0 -4
  175. package/dist/third-parties/GoogleRecaptcha/GoogleRecaptcha.js +0 -4
  176. package/dist/third-parties/GoogleRecaptcha/api.d.ts +0 -0
  177. package/dist/third-parties/GoogleRecaptcha/api.js +0 -1
  178. package/dist/third-parties/GoogleRecaptcha/index.d.ts +0 -1
  179. package/dist/third-parties/GoogleRecaptcha/index.js +0 -1
  180. package/dist/third-parties/index.d.ts +0 -2
  181. package/dist/third-parties/index.js +0 -2
  182. package/dist/utils/getLocaleInfo.d.ts +0 -79
  183. package/dist/utils/getLocaleInfo.js +0 -175
@@ -1,80 +0,0 @@
1
- import { ObjectId } from '@opexa/object-id';
2
- import { useMutation } from '@tanstack/react-query';
3
- import { clamp } from 'lodash-es';
4
- import invariant from 'tiny-invariant';
5
- import { OPEXAPAY_ENDPOINT } from '../../constants/index.js';
6
- import { ObjectType } from '../../services/ObjectType.js';
7
- import { createAiOGrabPayDeposit, getDeposit, } from '../../services/wallet.js';
8
- import { createPoll } from '../../utils/createPoll.js';
9
- import { getQueryClient } from '../../utils/getQueryClient.js';
10
- import { getCreateAiOGrabPayDepositMutationKey } from '../../utils/mutationKeys.js';
11
- import { parseDecimal } from '../../utils/parseDecimal.js';
12
- import { getAvailableQuestsQueryKey, getDepositsCountQueryKey, } from '../../utils/queryKeys.js';
13
- import { getSession } from '../services/getSession.js';
14
- export const useCreateAiOGrabPayDepositMutation = (config) => {
15
- const queryClient = getQueryClient();
16
- const mutation = useMutation({
17
- ...config,
18
- mutationKey: getCreateAiOGrabPayDepositMutationKey(),
19
- mutationFn: async (input) => {
20
- const id = input.id ?? ObjectId.generate(ObjectType.Deposit).toString();
21
- const session = await getSession();
22
- invariant(session.status === 'authenticated');
23
- const successRedirectUrl = new URL('/transactions', input.redirectUrl);
24
- successRedirectUrl.searchParams.set('tab', 'deposits');
25
- successRedirectUrl.searchParams.set('id', id);
26
- await createAiOGrabPayDeposit({
27
- ...input,
28
- id,
29
- redirectUrl: `${OPEXAPAY_ENDPOINT}/aio/success?redirectUrl=${encodeURIComponent(successRedirectUrl.toString())}`,
30
- }, {
31
- headers: {
32
- Authorization: `Bearer ${session.token}`,
33
- ...(session.domain && {
34
- Domain: session.domain,
35
- }),
36
- },
37
- });
38
- const poll = createPoll(async () => {
39
- const session = await getSession();
40
- invariant(session.status === 'authenticated');
41
- return await getDeposit(id, {
42
- headers: {
43
- Authorization: `Bearer ${session.token}`,
44
- },
45
- });
46
- }, {
47
- until(res) {
48
- return (!!res?.checkoutUrl || !!res?.error || res?.status === 'FAILED');
49
- },
50
- interval: 1000,
51
- maxAttempt: 20,
52
- });
53
- const res = await poll();
54
- if (!res?.checkoutUrl) {
55
- const error = new Error();
56
- error.name = 'AiOGrabPayDepositError';
57
- error.message = 'Failed to process Grab Pay deposit';
58
- throw error;
59
- }
60
- const depositsCount = queryClient.getQueryData(getDepositsCountQueryKey()) ?? 0;
61
- if (depositsCount <= 0) {
62
- queryClient.setQueryData(getAvailableQuestsQueryKey(), (prev) => {
63
- return prev?.map((quest) => {
64
- const progressPercentage = clamp(parseDecimal(quest.progressPercentage, 0) + 50, 100);
65
- if (quest.type === 'ONBOARDING') {
66
- return {
67
- ...quest,
68
- status: progressPercentage >= 100 ? 'COMPLETED' : quest.status,
69
- progressPercentage: progressPercentage.toFixed(2),
70
- };
71
- }
72
- return quest;
73
- });
74
- });
75
- }
76
- return res;
77
- },
78
- });
79
- return mutation;
80
- };
@@ -1,4 +0,0 @@
1
- import type { SetOptional } from 'type-fest';
2
- import { type CreateAiOPalawanPayDepositInput } from '../../services/wallet';
3
- import type { Deposit, Mutation } from '../../types';
4
- export declare const useCreateAiOPalawanPayDepositMutation: Mutation<Deposit, SetOptional<CreateAiOPalawanPayDepositInput, 'id'>>;
@@ -1,80 +0,0 @@
1
- import { ObjectId } from '@opexa/object-id';
2
- import { useMutation } from '@tanstack/react-query';
3
- import { clamp } from 'lodash-es';
4
- import invariant from 'tiny-invariant';
5
- import { OPEXAPAY_ENDPOINT } from '../../constants/index.js';
6
- import { ObjectType } from '../../services/ObjectType.js';
7
- import { createAiOPalawanPayDeposit, getDeposit, } from '../../services/wallet.js';
8
- import { createPoll } from '../../utils/createPoll.js';
9
- import { getQueryClient } from '../../utils/getQueryClient.js';
10
- import { getCreateAiOPalawanPayDepositMutationKey } from '../../utils/mutationKeys.js';
11
- import { parseDecimal } from '../../utils/parseDecimal.js';
12
- import { getAvailableQuestsQueryKey, getDepositsCountQueryKey, } from '../../utils/queryKeys.js';
13
- import { getSession } from '../services/getSession.js';
14
- export const useCreateAiOPalawanPayDepositMutation = (config) => {
15
- const queryClient = getQueryClient();
16
- const mutation = useMutation({
17
- ...config,
18
- mutationKey: getCreateAiOPalawanPayDepositMutationKey(),
19
- mutationFn: async (input) => {
20
- const id = input.id ?? ObjectId.generate(ObjectType.Deposit).toString();
21
- const session = await getSession();
22
- invariant(session.status === 'authenticated');
23
- const successRedirectUrl = new URL('/transactions', input.redirectUrl);
24
- successRedirectUrl.searchParams.set('tab', 'deposits');
25
- successRedirectUrl.searchParams.set('id', id);
26
- await createAiOPalawanPayDeposit({
27
- ...input,
28
- id,
29
- redirectUrl: `${OPEXAPAY_ENDPOINT}/aio/success?redirectUrl=${encodeURIComponent(successRedirectUrl.toString())}`,
30
- }, {
31
- headers: {
32
- Authorization: `Bearer ${session.token}`,
33
- ...(session.domain && {
34
- Domain: session.domain,
35
- }),
36
- },
37
- });
38
- const poll = createPoll(async () => {
39
- const session = await getSession();
40
- invariant(session.status === 'authenticated');
41
- return await getDeposit(id, {
42
- headers: {
43
- Authorization: `Bearer ${session.token}`,
44
- },
45
- });
46
- }, {
47
- until(res) {
48
- return (!!res?.checkoutUrl || !!res?.error || res?.status === 'FAILED');
49
- },
50
- interval: 1000,
51
- maxAttempt: 20,
52
- });
53
- const res = await poll();
54
- if (!res?.checkoutUrl) {
55
- const error = new Error();
56
- error.name = 'AiOPalawanPayDepositError';
57
- error.message = 'Failed to process Palawan Pay deposit';
58
- throw error;
59
- }
60
- const depositsCount = queryClient.getQueryData(getDepositsCountQueryKey()) ?? 0;
61
- if (depositsCount <= 0) {
62
- queryClient.setQueryData(getAvailableQuestsQueryKey(), (prev) => {
63
- return prev?.map((quest) => {
64
- const progressPercentage = clamp(parseDecimal(quest.progressPercentage, 0) + 50, 100);
65
- if (quest.type === 'ONBOARDING') {
66
- return {
67
- ...quest,
68
- status: progressPercentage >= 100 ? 'COMPLETED' : quest.status,
69
- progressPercentage: progressPercentage.toFixed(2),
70
- };
71
- }
72
- return quest;
73
- });
74
- });
75
- }
76
- return res;
77
- },
78
- });
79
- return mutation;
80
- };
@@ -1,4 +0,0 @@
1
- import type { SetOptional } from 'type-fest';
2
- import { type CreateAiOPayMayaDepositInput } from '../../services/wallet';
3
- import type { Deposit, Mutation } from '../../types';
4
- export declare const useCreateAiOPayMayaDepositMutation: Mutation<Deposit, SetOptional<CreateAiOPayMayaDepositInput, 'id'>>;
@@ -1,80 +0,0 @@
1
- import { ObjectId } from '@opexa/object-id';
2
- import { useMutation } from '@tanstack/react-query';
3
- import { clamp } from 'lodash-es';
4
- import invariant from 'tiny-invariant';
5
- import { OPEXAPAY_ENDPOINT } from '../../constants/index.js';
6
- import { ObjectType } from '../../services/ObjectType.js';
7
- import { createAiOPayMayaDeposit, getDeposit, } from '../../services/wallet.js';
8
- import { createPoll } from '../../utils/createPoll.js';
9
- import { getQueryClient } from '../../utils/getQueryClient.js';
10
- import { getCreateAiOPayMayaDepositMutationKey } from '../../utils/mutationKeys.js';
11
- import { parseDecimal } from '../../utils/parseDecimal.js';
12
- import { getAvailableQuestsQueryKey, getDepositsCountQueryKey, } from '../../utils/queryKeys.js';
13
- import { getSession } from '../services/getSession.js';
14
- export const useCreateAiOPayMayaDepositMutation = (config) => {
15
- const queryClient = getQueryClient();
16
- const mutation = useMutation({
17
- ...config,
18
- mutationKey: getCreateAiOPayMayaDepositMutationKey(),
19
- mutationFn: async (input) => {
20
- const id = input.id ?? ObjectId.generate(ObjectType.Deposit).toString();
21
- const session = await getSession();
22
- invariant(session.status === 'authenticated');
23
- const successRedirectUrl = new URL('/transactions', input.redirectUrl);
24
- successRedirectUrl.searchParams.set('tab', 'deposits');
25
- successRedirectUrl.searchParams.set('id', id);
26
- await createAiOPayMayaDeposit({
27
- ...input,
28
- id,
29
- redirectUrl: `${OPEXAPAY_ENDPOINT}/aio/success?redirectUrl=${encodeURIComponent(successRedirectUrl.toString())}`,
30
- }, {
31
- headers: {
32
- Authorization: `Bearer ${session.token}`,
33
- ...(session.domain && {
34
- Domain: session.domain,
35
- }),
36
- },
37
- });
38
- const poll = createPoll(async () => {
39
- const session = await getSession();
40
- invariant(session.status === 'authenticated');
41
- return await getDeposit(id, {
42
- headers: {
43
- Authorization: `Bearer ${session.token}`,
44
- },
45
- });
46
- }, {
47
- until(res) {
48
- return (!!res?.checkoutUrl || !!res?.error || res?.status === 'FAILED');
49
- },
50
- interval: 1000,
51
- maxAttempt: 20,
52
- });
53
- const res = await poll();
54
- if (!res?.checkoutUrl) {
55
- const error = new Error();
56
- error.name = 'AiOPayMayaDepositError';
57
- error.message = 'Failed to process Pay Maya deposit';
58
- throw error;
59
- }
60
- const depositsCount = queryClient.getQueryData(getDepositsCountQueryKey()) ?? 0;
61
- if (depositsCount <= 0) {
62
- queryClient.setQueryData(getAvailableQuestsQueryKey(), (prev) => {
63
- return prev?.map((quest) => {
64
- const progressPercentage = clamp(parseDecimal(quest.progressPercentage, 0) + 50, 100);
65
- if (quest.type === 'ONBOARDING') {
66
- return {
67
- ...quest,
68
- status: progressPercentage >= 100 ? 'COMPLETED' : quest.status,
69
- progressPercentage: progressPercentage.toFixed(2),
70
- };
71
- }
72
- return quest;
73
- });
74
- });
75
- }
76
- return res;
77
- },
78
- });
79
- return mutation;
80
- };
@@ -1,12 +0,0 @@
1
- import type { ImageProps } from 'next/image';
2
- export interface BannerEntry {
3
- src: ImageProps['src'];
4
- redirectUrl?: string;
5
- }
6
- export interface BannerProps {
7
- banners: BannerEntry[];
8
- imageWidth?: number | [mobile: number, desktop: number];
9
- imageHeight?: number | [mobile: number, desktop: number];
10
- className?: string;
11
- }
12
- export declare function Banner__client(props: BannerProps): import("react/jsx-runtime").JSX.Element;
@@ -1,49 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import emblaCarouselAutoplay from 'embla-carousel-autoplay';
4
- import useEmblaCarousel, {} from 'embla-carousel-react';
5
- import isMobile from 'is-mobile';
6
- import Image from 'next/image';
7
- import Link from 'next/link';
8
- import { Fragment, useEffect, useState } from 'react';
9
- import { twMerge } from 'tailwind-merge';
10
- import { dataAttr } from '../../utils/dataAttr.js';
11
- export function Banner__client(props) {
12
- const [emblaRef, emblaApi] = useEmblaCarousel({
13
- loop: true,
14
- align: 'start',
15
- }, [
16
- emblaCarouselAutoplay({
17
- playOnInit: true,
18
- delay: 5000,
19
- }),
20
- ]);
21
- const [currentIndex, setCurrentIndex] = useState(0);
22
- useEffect(() => {
23
- function handler(detail) {
24
- setCurrentIndex(detail?.selectedScrollSnap() ?? 0);
25
- }
26
- emblaApi?.on('scroll', handler);
27
- emblaApi?.on('init', handler);
28
- return () => {
29
- emblaApi?.on('init', handler);
30
- emblaApi?.off('scroll', handler);
31
- };
32
- }, [emblaApi]);
33
- const imageWidth = !props.imageWidth
34
- ? [400, 1200]
35
- : Array.isArray(props.imageWidth)
36
- ? props.imageWidth
37
- : [props.imageWidth, props.imageWidth];
38
- const imageHeight = !props.imageHeight
39
- ? [225, 300]
40
- : Array.isArray(props.imageHeight)
41
- ? props.imageHeight
42
- : [props.imageHeight, props.imageHeight];
43
- return (_jsxs("div", { className: twMerge('relative', props.className), children: [_jsx("div", { ref: emblaRef, className: "overflow-hidden", children: _jsx("div", { className: "flex gap-2", children: props.banners.map((banner, index) => {
44
- const img = (_jsx(Image, { src: banner.src, alt: "", width: isMobile() ? imageWidth[0] : imageWidth[1], height: isMobile() ? imageHeight[0] : imageHeight[1], className: "block h-auto w-full", priority: index === 0 }));
45
- return (_jsx(Fragment, { children: !banner.redirectUrl ? (_jsx("div", { className: "w-full shrink-0", children: img })) : (_jsx(Link, { href: banner.redirectUrl, className: "block w-full shrink-0", "aria-label": `Open ${banner.redirectUrl}`, children: img })) }, index));
46
- }) }) }), _jsx("div", { className: "absolute bottom-lg left-1/2 flex w-fit -translate-x-1/2 gap-2", children: props.banners.map((_, index) => (_jsx("button", { type: "button", className: "ui-active:bg-brand-500 bg-gray-300 size-3 shrink-0 rounded-full border border-white transition-all duration-300 ui-active:w-9", onClick: () => {
47
- emblaApi?.scrollTo(index);
48
- }, "aria-label": `Go to slide ${index + 1}`, "data-active": dataAttr(index === currentIndex) }, index))) })] }));
49
- }
@@ -1,11 +0,0 @@
1
- import { type AiOeWalletPaymentMethod } from './utils';
2
- interface AiOPaymentMethodsProps {
3
- value?: AiOeWalletPaymentMethod;
4
- onChange?: (value: AiOeWalletPaymentMethod) => void;
5
- defaultValue?: AiOeWalletPaymentMethod;
6
- options?: AiOeWalletPaymentMethod[];
7
- className?: string;
8
- label?: string;
9
- }
10
- export declare function AiOPaymentMethods(props: AiOPaymentMethodsProps): import("react/jsx-runtime").JSX.Element;
11
- export {};
@@ -1,55 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import Image from 'next/image';
3
- import { twMerge } from 'tailwind-merge';
4
- import { useControllableState } from '../../client/hooks/useControllableState.js';
5
- import { CheckIcon } from '../../icons/CheckIcon.js';
6
- import gcash from '../../images/gcash.png';
7
- import grabPay from '../../images/grabpay.png';
8
- import maya from '../../images/maya.png';
9
- import palawanPay from '../../images/palawanpay.png';
10
- import { Checkbox } from '../../ui/Checkbox/index.js';
11
- import { Field } from '../../ui/Field/index.js';
12
- import { AiOeWalletPaymentMethodDefinition, } from './utils.js';
13
- const AIO_EWALLET_OPTIONS = [
14
- {
15
- value: 'AIO_GCASH',
16
- label: 'GCash',
17
- image: gcash,
18
- },
19
- {
20
- value: 'AIO_PAY_MAYA',
21
- label: 'Maya',
22
- image: maya,
23
- },
24
- {
25
- value: 'AIO_GRAB_PAY',
26
- label: 'GrabPay',
27
- image: grabPay,
28
- },
29
- {
30
- value: 'AIO_PALAWAN_PAY',
31
- label: 'Palawan Pay',
32
- image: palawanPay,
33
- },
34
- ];
35
- export function AiOPaymentMethods(props) {
36
- const options = props.options && props.options.length > 0
37
- ? AIO_EWALLET_OPTIONS.filter((option) => props.options?.includes(option.value))
38
- : AIO_EWALLET_OPTIONS;
39
- const [value, setValue] = useControllableState({
40
- value: props.value,
41
- defaultValue: props.defaultValue ?? options[0]?.value,
42
- onChange: props.onChange,
43
- });
44
- const parseValue = (val) => {
45
- return AiOeWalletPaymentMethodDefinition.parse(val);
46
- };
47
- return (_jsxs("div", { className: props.className, children: [_jsx(Field.Label, { asChild: true, children: _jsx("div", { children: props.label || 'AIO eWallet payment methods' }) }), _jsx(Checkbox.Group, { value: [value], onValueChange: (newValue) => {
48
- const lastValue = newValue.at(-1);
49
- if (!lastValue)
50
- return;
51
- setValue(parseValue(lastValue));
52
- }, className: "grid grid-cols-2 gap-x-4 gap-y-3", children: options.map((option) => (_jsxs(Checkbox.Root, { value: option.value, className: "flex cursor-pointer items-center justify-between rounded-xl border border-border-secondary ui-checked:border-border-brand-solid p-lg", children: [_jsx("div", { className: twMerge('rounded-xs', option.value === 'AIO_GRAB_PAY'
53
- ? 'bg-transparent px-0 py-0'
54
- : 'bg-white px-sm py-[0.688rem]', option.value === 'AIO_GCASH' && 'bg-[#017EFF]', option.value === 'AIO_PALAWAN_PAY' && 'bg-[#026308]', option.value === 'AIO_PAY_MAYA' && 'bg-black'), children: _jsx(Image, { src: option.image, alt: "", width: 200, height: 40, className: twMerge('h-[1.063rem] w-auto', option.value === 'AIO_GRAB_PAY' && 'h-[3rem] rounded-[4px]', option.value === 'AIO_PALAWAN_PAY' && 'h-[2rem]'), draggable: false }) }), _jsx(Checkbox.Control, { className: "shrink-0", children: _jsx(Checkbox.Indicator, { asChild: true, children: _jsx(CheckIcon, {}) }) }), _jsx(Checkbox.HiddenInput, {})] }, option.value))) })] }));
55
- }
@@ -1 +0,0 @@
1
- export declare function QRPHDepositAlert(): import("react/jsx-runtime").JSX.Element;
@@ -1,99 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { AlertCircleIcon } from '../../../../icons/AlertCircleIcon.js';
3
- import { SpinnerIcon } from '../../../../icons/SpinnerIcon.js';
4
- import { XIcon } from '../../../../icons/XIcon.js';
5
- import { AlertDialog } from '../../../../ui/AlertDialog/index.js';
6
- import { Button } from '../../../../ui/Button/index.js';
7
- import { Portal } from '../../../../ui/Portal/index.js';
8
- import { useQRPHDepositContext } from './QRPHDepositContext.js';
9
- export function QRPHDepositAlert() {
10
- const context = useQRPHDepositContext();
11
- const details = useDetails();
12
- return (_jsx(AlertDialog.Root, { open: context.status !== 'waiting' &&
13
- context.status !== 'verification-waiting', onOpenChange: (details) => {
14
- if (!details.open) {
15
- context.reset();
16
- }
17
- }, lazyMount: true, unmountOnExit: true, closeOnEscape: false, closeOnInteractOutside: false, children: _jsxs(Portal, { children: [_jsx(AlertDialog.Backdrop, { className: "!z-[calc(var(--z-dialog)+2)]" }), _jsx(AlertDialog.Positioner, { className: "!z-[calc(var(--z-dialog)+3)]", children: _jsxs(AlertDialog.Content, { children: [_jsx(AlertDialog.CloseTrigger, { disabled: details.type === 'loading', children: _jsx(XIcon, {}) }), _jsxs(AlertDialog.Header, { children: [details.type === 'loading' && (_jsx(SpinnerIcon, { className: "size-12 text-text-brand-primary-600" })), details.type === 'success' && (_jsx("div", { className: "flex size-12 items-center justify-center rounded-full bg-bg-success-secondary text-text-featured-icon-light-success", children: _jsx(AlertCircleIcon, {}) })), details.type === 'erorr' && (_jsx("div", { className: "flex size-12 items-center justify-center rounded-full bg-bg-error-secondary text-text-featured-icon-light-error", children: _jsx(AlertCircleIcon, {}) }))] }), _jsxs(AlertDialog.Body, { children: [_jsx(AlertDialog.Title, { children: details.title }), _jsx(AlertDialog.Description, { children: details.description })] }), (details.type === 'erorr' || details.type === 'success') && (_jsx(AlertDialog.Footer, { children: _jsx(AlertDialog.Context, { children: (api) => (_jsx(Button, { onClick: () => {
18
- api.setOpen(false);
19
- }, children: details.type === 'success' ? 'Ok' : 'Try Again' })) }) }))] }) })] }) }));
20
- }
21
- function useDetails() {
22
- const context = useQRPHDepositContext();
23
- const title = (() => {
24
- let s = '';
25
- if (context.status === 'processing') {
26
- s = 'Processing Deposit';
27
- }
28
- else if (context.status === 'failed') {
29
- s = 'Deposit Failed';
30
- }
31
- else if (context.status === 'verification-success') {
32
- s = 'Deposit Successful';
33
- }
34
- else if (context.status === 'verification-processing') {
35
- s = 'Verifying Deposit';
36
- }
37
- else if (context.status === 'verification-failed') {
38
- if (context.deposit?.status === 'CANCELLED') {
39
- s = 'Deposit Cancelled';
40
- }
41
- else if (context.deposit?.status === 'REJECTED') {
42
- s = 'Deposit Rejected';
43
- }
44
- else {
45
- s = 'Deposit Failed';
46
- }
47
- }
48
- return s;
49
- })();
50
- const description = (() => {
51
- let d = '';
52
- if (context.status === 'processing') {
53
- d = "We're verifying your account and amount. Please hold a moment.";
54
- }
55
- else if (context.status === 'failed') {
56
- d =
57
- 'Something went wrong while processing your deposit. ' +
58
- 'Please try again or contact support.';
59
- }
60
- else if (context.status === 'verification-success') {
61
- d = 'Your deposit has been successfully processed.';
62
- }
63
- else if (context.status === 'verification-processing') {
64
- d = 'Your deposit is being processed.';
65
- }
66
- else if (context.status === 'verification-failed') {
67
- if (context.deposit?.status === 'CANCELLED') {
68
- d = 'Your deposit has been cancelled.';
69
- }
70
- else if (context.deposit?.status === 'REJECTED') {
71
- d = 'Your deposit has been rejected.';
72
- }
73
- else if (context.deposit?.status === 'FAILED') {
74
- d = context.deposit.error ?? 'Your deposit has failed.';
75
- }
76
- else {
77
- d =
78
- 'Something went wrong while processing your deposit. ' +
79
- 'Please try again or contact support.';
80
- }
81
- }
82
- return d;
83
- })();
84
- const type = (() => {
85
- if (context.status === 'failed' ||
86
- context.status === 'verification-failed') {
87
- return 'erorr';
88
- }
89
- if (context.status === 'verification-success') {
90
- return 'success';
91
- }
92
- return 'loading';
93
- })();
94
- return {
95
- type,
96
- title,
97
- description,
98
- };
99
- }
@@ -1 +0,0 @@
1
- export declare function QRPHDepositDetails(): import("react/jsx-runtime").JSX.Element | null;
@@ -1,17 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { QrCode02Icon } from '../../../../icons/QrCode02Icon.js';
3
- import { XIcon } from '../../../../icons/XIcon.js';
4
- import { Button } from '../../../../ui/Button/index.js';
5
- import { Dialog } from '../../../../ui/Dialog/index.js';
6
- import { Portal } from '../../../../ui/Portal/index.js';
7
- import { useQRPHDepositContext } from './QRPHDepositContext.js';
8
- import { QRPHQRCode } from './QRPHQRCode.js';
9
- export function QRPHDepositDetails() {
10
- const context = useQRPHDepositContext();
11
- if (context.view !== 'qrCode')
12
- return null;
13
- return (_jsxs("div", { className: "rounded-lg bg-bg-primary-alt p-2xl", children: [_jsx("p", { className: "text-center font-semibold text-lg lg:text-xl", children: "QR Code" }), _jsx("p", { className: "mt-3 text-center text-sm text-text-secondary-700 lg:text-base", children: "Scan the QR code below with your banking app, or upload it to complete your deposit." }), _jsx(QRPHQRCode, { qrCodeString: context.deposit?.qrCode ?? '' }), _jsx("div", { className: "mt-6 flex flex-col gap-4 lg:flex-row", children: _jsx(Button, { size: "sm", variant: "outline", colorScheme: "gray", onClick: context.reset, children: "Generate New QR Code" }) }), _jsx(Instruction, {})] }));
14
- }
15
- function Instruction() {
16
- return (_jsxs("p", { className: "mt-6 text-center text-text-tertiary-600 text-xs", children: ["Need help using the QR Code?", ' ', _jsxs(Dialog.Root, { lazyMount: true, unmountOnExit: true, children: [_jsx(Dialog.Trigger, { className: "text-text-warning-primary-600", children: "See instructions" }), _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "!z-[calc(var(--z-dialog)+2)]" }), _jsx(Dialog.Positioner, { className: "!z-[calc(var(--z-dialog)+3)] flex items-center justify-center", children: _jsxs(Dialog.Content, { className: "mx-auto w-[calc(100%-2rem)] overflow-y-auto rounded-lg p-4xl lg:w-[33.625rem]", children: [_jsx(Dialog.CloseTrigger, { children: _jsx(XIcon, {}) }), _jsxs(Dialog.Body, { children: [_jsxs("div", { className: "flex items-center gap-xl", children: [_jsx("div", { className: "flex size-11 items-center justify-center rounded-lg border border-border-primary text-gray-700 text-text-secondary-700 shadow-xs", children: _jsx(QrCode02Icon, { className: "size-6" }) }), _jsx(Dialog.Title, { className: "font-semibold text-lg", children: "How to Use the QR Code for Payment" })] }), _jsx(Dialog.Description, { className: "mt-5", children: "Follow these simple steps to complete your transaction:" }), _jsxs("ol", { className: "mt-3 list-inside list-decimal space-y-3", children: [_jsx("li", { children: "Open your preferred banking or EMI mobile app and select 'Transfer Money' or 'Pay via QR'" }), _jsx("li", { children: "Scan or upload the generated QR Ph code. If prompted by the app, enter the amount to be sent." }), _jsx("li", { children: "Proceed with the transfer or payment." })] })] })] }) })] })] })] }));
17
- }
@@ -1 +0,0 @@
1
- export declare function QRPHDepositForm(): import("react/jsx-runtime").JSX.Element | null;
@@ -1,116 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { zodResolver } from '@hookform/resolvers/zod';
3
- import Link from 'next/link';
4
- import { useEffect } from 'react';
5
- import { Controller, useForm } from 'react-hook-form';
6
- import { z } from 'zod';
7
- import { useShallow } from 'zustand/shallow';
8
- import { useAvailablePromosQuery } from '../../../../client/hooks/useAvailablePromosQuery.js';
9
- import { useDepositsCountQuery } from '../../../../client/hooks/useDepositsCountQuery.js';
10
- import { useGlobalStore } from '../../../../client/hooks/useGlobalStore.js';
11
- import { usePaymentSettingsQuery } from '../../../../client/hooks/usePaymentSettingsQuery.js';
12
- import { Button } from '../../../../ui/Button/index.js';
13
- import { Field } from '../../../../ui/Field/index.js';
14
- import { parseDecimal } from '../../../../utils/parseDecimal.js';
15
- import { AmountChoices } from '../../AmountChoices.js';
16
- import { useDepositWithdrawalPropsContext } from '../../DepositWithdrawalContext.js';
17
- import { AvailablePromos } from '../AvailablePromos.js';
18
- import { useQRPHDepositContext } from './QRPHDepositContext.js';
19
- export function QRPHDepositForm() {
20
- const depositWithdrawalProps = useDepositWithdrawalPropsContext();
21
- const globalStore = useGlobalStore(useShallow((ctx) => ({
22
- depositWithdrawal: ctx.depositWithdrawal,
23
- })));
24
- const context = useQRPHDepositContext();
25
- const depositsCountQuery = useDepositsCountQuery();
26
- const depositsCount = depositsCountQuery.data ?? 0;
27
- const paymentSettingsQuery = usePaymentSettingsQuery();
28
- const paymentSettings = paymentSettingsQuery.data;
29
- const gatewaySettings = paymentSettings?.qrphDepositGatewaySettings;
30
- const maximumAmount = parseDecimal(gatewaySettings?.maximumAmount, 0);
31
- const minimumAmount = depositsCount <= 0
32
- ? parseDecimal(paymentSettingsQuery.data?.minimumFirstDepositAmount, 0)
33
- : parseDecimal(gatewaySettings?.minimumAmount, 0);
34
- const promosQuery = useAvailablePromosQuery();
35
- const promos = promosQuery.data ?? [];
36
- const definition = z
37
- .object({
38
- amount: z.string().superRefine((val, ctx) => {
39
- const n = parseDecimal(val, 0);
40
- if (val.includes('.')) {
41
- ctx.addIssue({
42
- code: z.ZodIssueCode.custom,
43
- message: 'Amount must be a whole number',
44
- });
45
- return;
46
- }
47
- if (n < minimumAmount) {
48
- ctx.addIssue({
49
- type: 'number',
50
- code: z.ZodIssueCode.too_small,
51
- inclusive: true,
52
- minimum: minimumAmount,
53
- message: `Minimum amount is ${minimumAmount.toLocaleString()}`,
54
- });
55
- }
56
- if (n > maximumAmount) {
57
- ctx.addIssue({
58
- type: 'number',
59
- code: z.ZodIssueCode.too_big,
60
- inclusive: true,
61
- maximum: maximumAmount,
62
- message: `Maximum amount is ${maximumAmount.toLocaleString()}`,
63
- });
64
- }
65
- }),
66
- promo: z.string().optional().nullable(),
67
- })
68
- .superRefine((value, ctx) => {
69
- const promo = promos.find((o) => o.id === value.promo);
70
- const promoMinAmount = parseDecimal(promo?.minimumDepositAmount, 0);
71
- const promoMaxAmount = parseDecimal(promo?.maximumDepositAmount, 0);
72
- const amount = parseDecimal(value.amount, 0);
73
- if (promo && amount < promoMinAmount) {
74
- ctx.addIssue({
75
- path: ['amount'],
76
- code: z.ZodIssueCode.custom,
77
- message: `Minimum amount for this promo is ${promoMinAmount.toLocaleString()}`,
78
- });
79
- }
80
- if (promo && amount > promoMaxAmount) {
81
- ctx.addIssue({
82
- path: ['amount'],
83
- code: z.ZodIssueCode.custom,
84
- message: `Maximum amount for this promo is ${promoMaxAmount}`,
85
- });
86
- }
87
- });
88
- const form = useForm({
89
- mode: 'all',
90
- resolver: zodResolver(definition),
91
- defaultValues: {
92
- amount: '0',
93
- promo: globalStore.depositWithdrawal.promo ?? null,
94
- },
95
- });
96
- useEffect(() => {
97
- if (minimumAmount) {
98
- form.reset({
99
- amount: minimumAmount.toString(),
100
- promo: form.getValues('promo') ?? null,
101
- });
102
- }
103
- }, [form, minimumAmount]);
104
- if (context.view !== 'form')
105
- return null;
106
- return (_jsxs("form", { onSubmit: form.handleSubmit(context.generateQRCode), noValidate: true, children: [_jsxs(Field.Root, { invalid: !!form.formState.errors.amount, className: "mt-3xl", children: [_jsx(Field.Label, { children: "Enter the amount you want to deposit" }), _jsx(Field.Input, { type: "number", ...form.register('amount') }), _jsx(Field.ErrorText, { children: form.formState.errors.amount?.message })] }), _jsx(AmountChoices, { value: parseDecimal(form.watch('amount'), 0), onChange: (value) => {
107
- form.setValue('amount', value.toString(), {
108
- shouldTouch: true,
109
- shouldDirty: true,
110
- shouldValidate: true,
111
- });
112
- }, min: minimumAmount, max: maximumAmount, className: "mt-lg" }), _jsx(Controller, { control: form.control, name: "promo", render: (o) => (_jsx(AvailablePromos, { value: o.field.value, onChange: (value) => {
113
- o.field.onChange(value);
114
- globalStore.depositWithdrawal.setPromo(null);
115
- }, className: "mt-3xl" })) }), _jsx(Button, { type: "submit", className: "mt-3xl", children: "Deposit" }), depositWithdrawalProps.hasPrivacyPolicyAndTermsOfUse && (_jsxs("p", { className: "mt-lg text-text-tertiary-600 text-xs", children: ["By depositing, you agree to our", ' ', _jsx(Link, { href: depositWithdrawalProps.termsOfUseUrl ?? '/terms-of-use', onClick: () => globalStore.depositWithdrawal.setOpen(false), className: "text-text-warning-primary-600 underline underline-offset-2", children: "Terms of Use" }), ' ', "and", ' ', _jsx(Link, { href: depositWithdrawalProps.privacyPolicyUrl ?? '/privacy-policy', onClick: () => globalStore.depositWithdrawal.setOpen(false), className: "text-text-warning-primary-600 underline underline-offset-2", children: "Privacy Policy" }), "."] }))] }));
116
- }
@@ -1,3 +0,0 @@
1
- export declare function QRPHQRCode(props: {
2
- qrCodeString: string;
3
- }): import("react/jsx-runtime").JSX.Element;