@opexa/portal-components 0.0.947 → 0.0.948

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 (181) hide show
  1. package/dist/assets/providers/alize.png +0 -0
  2. package/dist/assets/providers/bigtime-gaming.png +0 -0
  3. package/dist/assets/providers/bng.png +0 -0
  4. package/dist/assets/providers/boongo.png +0 -0
  5. package/dist/assets/providers/btg.png +0 -0
  6. package/dist/assets/providers/cq9.png +0 -0
  7. package/dist/assets/providers/darwin.png +0 -0
  8. package/dist/assets/providers/digitain.png +0 -0
  9. package/dist/assets/providers/evolution.png +0 -0
  10. package/dist/assets/providers/fantasma-games.png +0 -0
  11. package/dist/assets/providers/fc.png +0 -0
  12. package/dist/assets/providers/fp.png +0 -0
  13. package/dist/assets/providers/habanero.png +0 -0
  14. package/dist/assets/providers/hacksaw.png +0 -0
  15. package/dist/assets/providers/jdb.png +0 -0
  16. package/dist/assets/providers/jili.png +0 -0
  17. package/dist/assets/providers/leap.png +0 -0
  18. package/dist/assets/providers/live-22-metaverse.png +0 -0
  19. package/dist/assets/providers/netent.png +0 -0
  20. package/dist/assets/providers/no-limit.png +0 -0
  21. package/dist/assets/providers/pg.png +0 -0
  22. package/dist/assets/providers/pgsoft.png +0 -0
  23. package/dist/assets/providers/pragmatic-play.png +0 -0
  24. package/dist/assets/providers/realtime-gaming.png +0 -0
  25. package/dist/assets/providers/redtiger.png +0 -0
  26. package/dist/assets/providers/rtg.png +0 -0
  27. package/dist/assets/providers/sagaming.png +0 -0
  28. package/dist/client/hooks/useAiOGCashDepositMutation.d.ts +4 -0
  29. package/dist/client/hooks/useAiOGCashDepositMutation.js +90 -0
  30. package/dist/client/hooks/useAiOGrabPayDepositMutation.d.ts +4 -0
  31. package/dist/client/hooks/useAiOGrabPayDepositMutation.js +80 -0
  32. package/dist/client/hooks/useAiOPalawanPayDepositMutation.d.ts +4 -0
  33. package/dist/client/hooks/useAiOPalawanPayDepositMutation.js +80 -0
  34. package/dist/client/hooks/useAiOPayMayaDepositMutation.d.ts +4 -0
  35. package/dist/client/hooks/useAiOPayMayaDepositMutation.js +80 -0
  36. package/dist/components/Banner/Banner.client.d.ts +12 -0
  37. package/dist/components/Banner/Banner.client.js +49 -0
  38. package/dist/components/DepositWithdrawal/AiOPaymentMethods.d.ts +11 -0
  39. package/dist/components/DepositWithdrawal/AiOPaymentMethods.js +55 -0
  40. package/dist/components/DepositWithdrawal/Deposit/AurixPayPayMayaDeposit/AurixPayGrabPayDeposit.js +21 -2
  41. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositAlert.d.ts +1 -0
  42. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositAlert.js +99 -0
  43. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositDetails.d.ts +1 -0
  44. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositDetails.js +17 -0
  45. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositForm.d.ts +1 -0
  46. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositForm.js +116 -0
  47. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHQRCode.d.ts +3 -0
  48. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHQRCode.js +69 -0
  49. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDeposit.d.ts +1 -0
  50. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDeposit.js +10 -0
  51. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositAlert.d.ts +1 -0
  52. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositAlert.js +99 -0
  53. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositContext.d.ts +25 -0
  54. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositContext.js +2 -0
  55. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositDetails.d.ts +1 -0
  56. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositDetails.js +17 -0
  57. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositForm.d.ts +1 -0
  58. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositForm.js +116 -0
  59. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHQRCode.d.ts +3 -0
  60. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHQRCode.js +69 -0
  61. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/useQRPHDeposit.d.ts +13 -0
  62. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/useQRPHDeposit.js +85 -0
  63. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGCashDeposit/AiOGCashDeposit.d.ts +1 -0
  64. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGCashDeposit/AiOGCashDeposit.js +173 -0
  65. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGrabPayDeposit/AiOGrabPayDeposit.d.ts +1 -0
  66. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGrabPayDeposit/AiOGrabPayDeposit.js +171 -0
  67. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPalawanPayDeposit/AiOPalawanPayDeposit.d.ts +1 -0
  68. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPalawanPayDeposit/AiOPalawanPayDeposit.js +171 -0
  69. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPayMayaDeposit/AiOPayMayaDeposit.d.ts +1 -0
  70. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPayMayaDeposit/AiOPayMayaDeposit.js +171 -0
  71. package/dist/components/DepositWithdrawal/Deposit__legacy/AvailablePromos.d.ts +8 -0
  72. package/dist/components/DepositWithdrawal/Deposit__legacy/AvailablePromos.js +33 -0
  73. package/dist/components/DepositWithdrawal/Deposit__legacy/Deposit.d.ts +1 -0
  74. package/dist/components/DepositWithdrawal/Deposit__legacy/Deposit.js +120 -0
  75. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashDeposit/GCashDeposit.d.ts +1 -0
  76. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashDeposit/GCashDeposit.js +163 -0
  77. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashWebpayDeposit/GCashWebpayDeposit.d.ts +1 -0
  78. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashWebpayDeposit/GCashWebpayDeposit.js +165 -0
  79. package/dist/components/DepositWithdrawal/Deposit__legacy/LibanganDeposit/LibanganDeposit.d.ts +1 -0
  80. package/dist/components/DepositWithdrawal/Deposit__legacy/LibanganDeposit/LibanganDeposit.js +186 -0
  81. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaAppDeposit/MayaAppDeposit.d.ts +1 -0
  82. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaAppDeposit/MayaAppDeposit.js +157 -0
  83. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaDeposit/MayaDeposit.d.ts +1 -0
  84. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaDeposit/MayaDeposit.js +163 -0
  85. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaWebpayDeposit/MayaWebpayDeposit.d.ts +1 -0
  86. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaWebpayDeposit/MayaWebpayDeposit.js +166 -0
  87. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDeposit.d.ts +1 -0
  88. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDeposit.js +10 -0
  89. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositAlert.d.ts +1 -0
  90. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositAlert.js +99 -0
  91. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositContext.d.ts +25 -0
  92. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositContext.js +2 -0
  93. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositDetails.d.ts +1 -0
  94. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositDetails.js +19 -0
  95. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositForm.d.ts +1 -0
  96. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositForm.js +115 -0
  97. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/useOnlineBankDeposit.d.ts +13 -0
  98. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/useOnlineBankDeposit.js +81 -0
  99. package/dist/components/DepositWithdrawal/Deposit__legacy/PisoPayDeposit/PisoPayDeposit.d.ts +1 -0
  100. package/dist/components/DepositWithdrawal/Deposit__legacy/PisoPayDeposit/PisoPayDeposit.js +180 -0
  101. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDeposit.d.ts +1 -0
  102. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDeposit.js +10 -0
  103. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositAlert.d.ts +1 -0
  104. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositAlert.js +99 -0
  105. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositContext.d.ts +25 -0
  106. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositContext.js +2 -0
  107. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositDetails.d.ts +1 -0
  108. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositDetails.js +17 -0
  109. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositForm.d.ts +1 -0
  110. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositForm.js +116 -0
  111. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHQRCode.d.ts +3 -0
  112. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHQRCode.js +69 -0
  113. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/useQRPHDeposit.d.ts +13 -0
  114. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/useQRPHDeposit.js +85 -0
  115. package/dist/components/DigitainLauncher/Loading.d.ts +1 -0
  116. package/dist/components/DigitainLauncher/Loading.js +5 -0
  117. package/dist/components/Disclaimer/DisclaimerV3.js +2 -2
  118. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.module.css +184 -0
  119. package/dist/components/Jackpots/JackpotsList/JackpotsListItem.module.css +184 -0
  120. package/dist/components/KYC/BasicInformation.d.ts +1 -0
  121. package/dist/components/KYC/BasicInformation.js +101 -0
  122. package/dist/components/KYC/IdentityVerification.d.ts +1 -0
  123. package/dist/components/KYC/IdentityVerification.js +120 -0
  124. package/dist/components/KYC/Indicator.d.ts +1 -0
  125. package/dist/components/KYC/Indicator.js +8 -0
  126. package/dist/components/KYC/KYC.lazy.d.ts +6 -0
  127. package/dist/components/KYC/KYC.lazy.js +45 -0
  128. package/dist/components/KYC/KYCContext.d.ts +6 -0
  129. package/dist/components/KYC/KYCContext.js +2 -0
  130. package/dist/components/KYC/KYCDefault/BasicInformation.d.ts +1 -0
  131. package/dist/components/KYC/KYCDefault/BasicInformation.js +101 -0
  132. package/dist/components/KYC/KYCVerificationStatus.d.ts +1 -0
  133. package/dist/components/KYC/KYCVerificationStatus.js +10 -0
  134. package/dist/components/KYC/KYCVerificationStatus.lazy.d.ts +1 -0
  135. package/dist/components/KYC/KYCVerificationStatus.lazy.js +36 -0
  136. package/dist/components/KYC/PersonalInformation.d.ts +1 -0
  137. package/dist/components/KYC/PersonalInformation.js +122 -0
  138. package/dist/components/KYC/useKYC.d.ts +25 -0
  139. package/dist/components/KYC/useKYC.js +38 -0
  140. package/dist/components/KYCNotRequired/KYCNotRequired.d.ts +0 -0
  141. package/dist/components/KYCNotRequired/KYCNotRequired.js +1 -0
  142. package/dist/components/PortalProvider/AndroidOnlyComponents.d.ts +1 -0
  143. package/dist/components/PortalProvider/AndroidOnlyComponents.js +12 -0
  144. package/dist/components/PortalProvider/CXDTokenObserver.d.ts +1 -0
  145. package/dist/components/PortalProvider/CXDTokenObserver.js +30 -0
  146. package/dist/components/PortalProvider/LinkGoogleAccountObserver.d.ts +1 -0
  147. package/dist/components/PortalProvider/LinkGoogleAccountObserver.js +29 -0
  148. package/dist/components/Quests/MultiWageringQuest.d.ts +1 -0
  149. package/dist/components/Quests/MultiWageringQuest.js +111 -0
  150. package/dist/components/SessionWatcher/SessionWatcher.d.ts +1 -0
  151. package/dist/components/SessionWatcher/SessionWatcher.js +20 -0
  152. package/dist/components/SessionWatcher/index.d.ts +1 -0
  153. package/dist/components/SessionWatcher/index.js +1 -0
  154. package/dist/components/SignIn/utils.d.ts +8 -0
  155. package/dist/components/SignIn/utils.js +26 -0
  156. package/dist/components/SingleSignOn/SingleSignOn.d.ts +1 -1
  157. package/dist/components/SingleSignOn/SingleSignOn.js +7 -15
  158. package/dist/constants/Branches.d.ts +2 -0
  159. package/dist/constants/Branches.js +42 -0
  160. package/dist/handlers/index.d.ts +2 -2
  161. package/dist/images/game-providers/ALPHACHINKO.png +0 -0
  162. package/dist/images/responsible-gaming-yellow.png +0 -0
  163. package/dist/third-parties/FacebookPixel/FacebookPixel.d.ts +4 -0
  164. package/dist/third-parties/FacebookPixel/FacebookPixel.js +4 -0
  165. package/dist/third-parties/FacebookPixel/api.d.ts +0 -0
  166. package/dist/third-parties/FacebookPixel/api.js +1 -0
  167. package/dist/third-parties/FacebookPixel/index.d.ts +1 -0
  168. package/dist/third-parties/FacebookPixel/index.js +1 -0
  169. package/dist/third-parties/GoogleRecaptcha/GoogleRecaptcha.d.ts +4 -0
  170. package/dist/third-parties/GoogleRecaptcha/GoogleRecaptcha.js +4 -0
  171. package/dist/third-parties/GoogleRecaptcha/api.d.ts +0 -0
  172. package/dist/third-parties/GoogleRecaptcha/api.js +1 -0
  173. package/dist/third-parties/GoogleRecaptcha/index.d.ts +1 -0
  174. package/dist/third-parties/GoogleRecaptcha/index.js +1 -0
  175. package/dist/third-parties/index.d.ts +2 -0
  176. package/dist/third-parties/index.js +2 -0
  177. package/dist/ui/QrCode/QrCode.d.ts +25 -25
  178. package/dist/ui/QrCode/qrCode.recipe.d.ts +5 -5
  179. package/dist/utils/getLocaleInfo.d.ts +79 -0
  180. package/dist/utils/getLocaleInfo.js +175 -0
  181. package/package.json +1 -1
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,4 @@
1
+ import type { SetOptional } from 'type-fest';
2
+ import { type CreateAiOGCashDepositInput } from '../../services/wallet';
3
+ import type { Deposit, Mutation } from '../../types';
4
+ export declare const useCreateAiOGCashDepositMutation: Mutation<Deposit, SetOptional<CreateAiOGCashDepositInput, 'id'>>;
@@ -0,0 +1,90 @@
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 { explainError } from '../../components/DepositWithdrawal/utils.js';
6
+ import { OPEXAPAY_ENDPOINT } from '../../constants/index.js';
7
+ import { ObjectType } from '../../services/ObjectType.js';
8
+ import { createAiOGCashDeposit, getDeposit, } from '../../services/wallet.js';
9
+ import { capitalize } from '../../utils/capitalize.js';
10
+ import { createPoll } from '../../utils/createPoll.js';
11
+ import { getQueryClient } from '../../utils/getQueryClient.js';
12
+ import { getCreateAiOGCashDepositMutationKey } from '../../utils/mutationKeys.js';
13
+ import { parseDecimal } from '../../utils/parseDecimal.js';
14
+ import { getAvailableQuestsQueryKey, getDepositsCountQueryKey, } from '../../utils/queryKeys.js';
15
+ import { getSession } from '../services/getSession.js';
16
+ export const useCreateAiOGCashDepositMutation = (config) => {
17
+ const queryClient = getQueryClient();
18
+ const mutation = useMutation({
19
+ ...config,
20
+ mutationKey: getCreateAiOGCashDepositMutationKey(),
21
+ mutationFn: async (input) => {
22
+ const id = input.id ?? ObjectId.generate(ObjectType.Deposit).toString();
23
+ const session = await getSession();
24
+ invariant(session.status === 'authenticated');
25
+ const successRedirectUrl = new URL('/transactions', input.redirectUrl);
26
+ successRedirectUrl.searchParams.set('tab', 'deposits');
27
+ successRedirectUrl.searchParams.set('id', id);
28
+ await createAiOGCashDeposit({
29
+ ...input,
30
+ id,
31
+ redirectUrl: `${OPEXAPAY_ENDPOINT}/aio/success?redirectUrl=${encodeURIComponent(successRedirectUrl.toString())}`,
32
+ }, {
33
+ headers: {
34
+ Authorization: `Bearer ${session.token}`,
35
+ ...(session.domain && {
36
+ Domain: session.domain,
37
+ }),
38
+ },
39
+ });
40
+ const poll = createPoll(async () => {
41
+ const session = await getSession();
42
+ invariant(session.status === 'authenticated');
43
+ return await getDeposit(id, {
44
+ headers: {
45
+ Authorization: `Bearer ${session.token}`,
46
+ },
47
+ });
48
+ }, {
49
+ until(res) {
50
+ return (!!res?.checkoutUrl || !!res?.error || res?.status === 'FAILED');
51
+ },
52
+ interval: 1000,
53
+ maxAttempt: 20,
54
+ });
55
+ const res = await poll();
56
+ if (res?.error) {
57
+ const error = new Error();
58
+ error.name = capitalize(res.error, {
59
+ delimiter: capitalize.delimiters.UNDERSCORE,
60
+ });
61
+ error.message = explainError(res.error);
62
+ throw error;
63
+ }
64
+ if (!res?.checkoutUrl) {
65
+ const error = new Error();
66
+ error.name = 'AiOGCashDepositError';
67
+ error.message = 'Failed to process GCash deposit';
68
+ throw error;
69
+ }
70
+ const depositsCount = queryClient.getQueryData(getDepositsCountQueryKey()) ?? 0;
71
+ if (depositsCount <= 0) {
72
+ queryClient.setQueryData(getAvailableQuestsQueryKey(), (prev) => {
73
+ return prev?.map((quest) => {
74
+ const progressPercentage = clamp(parseDecimal(quest.progressPercentage, 0) + 50, 100);
75
+ if (quest.type === 'ONBOARDING') {
76
+ return {
77
+ ...quest,
78
+ status: progressPercentage >= 100 ? 'COMPLETED' : quest.status,
79
+ progressPercentage: progressPercentage.toFixed(2),
80
+ };
81
+ }
82
+ return quest;
83
+ });
84
+ });
85
+ }
86
+ return res;
87
+ },
88
+ });
89
+ return mutation;
90
+ };
@@ -0,0 +1,4 @@
1
+ import type { SetOptional } from 'type-fest';
2
+ import { type CreateAiOGrabPayDepositInput } from '../../services/wallet';
3
+ import type { Deposit, Mutation } from '../../types';
4
+ export declare const useCreateAiOGrabPayDepositMutation: Mutation<Deposit, SetOptional<CreateAiOGrabPayDepositInput, 'id'>>;
@@ -0,0 +1,80 @@
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
+ };
@@ -0,0 +1,4 @@
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'>>;
@@ -0,0 +1,80 @@
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
+ };
@@ -0,0 +1,4 @@
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'>>;
@@ -0,0 +1,80 @@
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
+ };
@@ -0,0 +1,12 @@
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;
@@ -0,0 +1,49 @@
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
+ }
@@ -0,0 +1,11 @@
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 {};
@@ -0,0 +1,55 @@
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
+ }
@@ -97,7 +97,7 @@ export function AurixPayGrabPayDeposit() {
97
97
  const depositsCount = depositsCountQuery.data ?? 0;
98
98
  const paymentSettingsQuery = usePaymentSettingsQuery();
99
99
  const paymentSettings = paymentSettingsQuery.data;
100
- const gatewaySettings = paymentSettings?.aioGCashDepositGatewaySettings;
100
+ const gatewaySettings = paymentSettings?.aurixPayGrabPayDepositGatewaySettings;
101
101
  const maximumAmount = parseDecimal(gatewaySettings?.maximumAmount, 0);
102
102
  const minimumAmount = depositsCount <= 0
103
103
  ? parseDecimal(paymentSettingsQuery.data?.minimumFirstDepositAmount, 0)
@@ -200,7 +200,26 @@ export function AurixPayGrabPayDeposit() {
200
200
  accountNumber: data.accountNumber,
201
201
  });
202
202
  }
203
- }), noValidate: true, children: [_jsxs(Field.Root, { invalid: !!form.formState.errors.accountNumber, children: [_jsx(Field.Label, { children: "Account number" }), _jsx(Field.Input, { ...form.register('accountNumber') }), _jsx(Field.ErrorText, { children: form.formState.errors.accountNumber?.message })] }), _jsx(Controller, { control: form.control, name: "amount", render: (o) => (_jsxs(Field.Root, { invalid: !!form.formState.errors.amount, className: "mt-lg", children: [_jsxs(NumberInput.Root, { min: 0, step: 1, value: o.field.value, onValueChange: (details) => {
203
+ }), noValidate: true, children: [_jsxs(Field.Root, { invalid: !!form.formState.errors.accountNumber, children: [_jsx(Field.Label, { children: "Account number" }), _jsx(Field.Input, { ...form.register('accountNumber', {
204
+ onChange: (e) => {
205
+ // Allow only digits and leading +
206
+ let value = e.target.value;
207
+ // Remove all non-digit except leading +
208
+ value = value.replace(/(?!^)\D/g, '');
209
+ if (value.startsWith('+')) {
210
+ // keep leading +
211
+ value = '+' + value.slice(1).replace(/\D/g, '');
212
+ }
213
+ else {
214
+ // remove all non-digits
215
+ value = value.replace(/\D/g, '');
216
+ }
217
+ e.target.value = value;
218
+ form.setValue('accountNumber', value, {
219
+ shouldValidate: true,
220
+ });
221
+ },
222
+ }), inputMode: "tel", pattern: "^\\+?[0-9]*$", autoComplete: "tel" }), _jsx(Field.ErrorText, { children: form.formState.errors.accountNumber?.message })] }), _jsx(Controller, { control: form.control, name: "amount", render: (o) => (_jsxs(Field.Root, { invalid: !!form.formState.errors.amount, className: "mt-lg", children: [_jsxs(NumberInput.Root, { min: 0, step: 1, value: o.field.value, onValueChange: (details) => {
204
223
  o.field.onChange(details.value);
205
224
  }, allowMouseWheel: true, children: [_jsx(NumberInput.Label, { children: "Enter amount you want to deposit" }), _jsxs(NumberInput.Control, { children: [_jsx(NumberInput.Input, {}), _jsx(NumberInput.IncrementTrigger, { children: _jsx(ChevronUpIcon, {}) }), _jsx(NumberInput.DecrementTrigger, { children: _jsx(ChevronDownIcon, {}) })] })] }), _jsx(Field.ErrorText, { children: form.formState.errors.amount?.message })] })) }), _jsx(AmountChoices, { value: parseDecimal(form.watch('amount'), 0), onChange: (value) => {
206
225
  form.setValue('amount', value.toString(), {
@@ -0,0 +1 @@
1
+ export declare function QRPHDepositAlert(): import("react/jsx-runtime").JSX.Element;