@opexa/portal-components 0.0.939 → 0.0.940

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 (185) 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/OnlineBankDeposit/OnlineBankDepositContext.d.ts +2 -2
  42. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/useOnlineBankDeposit.d.ts +1 -1
  43. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositAlert.d.ts +1 -0
  44. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositAlert.js +99 -0
  45. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositDetails.d.ts +1 -0
  46. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositDetails.js +17 -0
  47. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositForm.d.ts +1 -0
  48. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositForm.js +116 -0
  49. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHQRCode.d.ts +3 -0
  50. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHQRCode.js +69 -0
  51. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDeposit.d.ts +1 -0
  52. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDeposit.js +10 -0
  53. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositAlert.d.ts +1 -0
  54. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositAlert.js +99 -0
  55. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositContext.d.ts +25 -0
  56. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositContext.js +2 -0
  57. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositDetails.d.ts +1 -0
  58. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositDetails.js +17 -0
  59. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositForm.d.ts +1 -0
  60. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositForm.js +116 -0
  61. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHQRCode.d.ts +3 -0
  62. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHQRCode.js +69 -0
  63. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/useQRPHDeposit.d.ts +13 -0
  64. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/useQRPHDeposit.js +85 -0
  65. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGCashDeposit/AiOGCashDeposit.d.ts +1 -0
  66. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGCashDeposit/AiOGCashDeposit.js +173 -0
  67. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGrabPayDeposit/AiOGrabPayDeposit.d.ts +1 -0
  68. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGrabPayDeposit/AiOGrabPayDeposit.js +171 -0
  69. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPalawanPayDeposit/AiOPalawanPayDeposit.d.ts +1 -0
  70. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPalawanPayDeposit/AiOPalawanPayDeposit.js +171 -0
  71. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPayMayaDeposit/AiOPayMayaDeposit.d.ts +1 -0
  72. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPayMayaDeposit/AiOPayMayaDeposit.js +171 -0
  73. package/dist/components/DepositWithdrawal/Deposit__legacy/AvailablePromos.d.ts +8 -0
  74. package/dist/components/DepositWithdrawal/Deposit__legacy/AvailablePromos.js +33 -0
  75. package/dist/components/DepositWithdrawal/Deposit__legacy/Deposit.d.ts +1 -0
  76. package/dist/components/DepositWithdrawal/Deposit__legacy/Deposit.js +120 -0
  77. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashDeposit/GCashDeposit.d.ts +1 -0
  78. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashDeposit/GCashDeposit.js +163 -0
  79. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashWebpayDeposit/GCashWebpayDeposit.d.ts +1 -0
  80. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashWebpayDeposit/GCashWebpayDeposit.js +165 -0
  81. package/dist/components/DepositWithdrawal/Deposit__legacy/LibanganDeposit/LibanganDeposit.d.ts +1 -0
  82. package/dist/components/DepositWithdrawal/Deposit__legacy/LibanganDeposit/LibanganDeposit.js +186 -0
  83. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaAppDeposit/MayaAppDeposit.d.ts +1 -0
  84. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaAppDeposit/MayaAppDeposit.js +157 -0
  85. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaDeposit/MayaDeposit.d.ts +1 -0
  86. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaDeposit/MayaDeposit.js +163 -0
  87. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaWebpayDeposit/MayaWebpayDeposit.d.ts +1 -0
  88. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaWebpayDeposit/MayaWebpayDeposit.js +166 -0
  89. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDeposit.d.ts +1 -0
  90. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDeposit.js +10 -0
  91. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositAlert.d.ts +1 -0
  92. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositAlert.js +99 -0
  93. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositContext.d.ts +25 -0
  94. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositContext.js +2 -0
  95. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositDetails.d.ts +1 -0
  96. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositDetails.js +19 -0
  97. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositForm.d.ts +1 -0
  98. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositForm.js +115 -0
  99. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/useOnlineBankDeposit.d.ts +13 -0
  100. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/useOnlineBankDeposit.js +81 -0
  101. package/dist/components/DepositWithdrawal/Deposit__legacy/PisoPayDeposit/PisoPayDeposit.d.ts +1 -0
  102. package/dist/components/DepositWithdrawal/Deposit__legacy/PisoPayDeposit/PisoPayDeposit.js +180 -0
  103. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDeposit.d.ts +1 -0
  104. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDeposit.js +10 -0
  105. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositAlert.d.ts +1 -0
  106. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositAlert.js +99 -0
  107. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositContext.d.ts +25 -0
  108. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositContext.js +2 -0
  109. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositDetails.d.ts +1 -0
  110. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositDetails.js +17 -0
  111. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositForm.d.ts +1 -0
  112. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositForm.js +116 -0
  113. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHQRCode.d.ts +3 -0
  114. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHQRCode.js +69 -0
  115. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/useQRPHDeposit.d.ts +13 -0
  116. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/useQRPHDeposit.js +85 -0
  117. package/dist/components/DepositWithdrawal/Withdrawal/Withdrawal.js +11 -4
  118. package/dist/components/DigitainLauncher/Loading.d.ts +1 -0
  119. package/dist/components/DigitainLauncher/Loading.js +5 -0
  120. package/dist/components/Disclaimer/DisclaimerV2.js +11 -0
  121. package/dist/components/Disclaimer/DisclaimerV3.js +7 -0
  122. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.module.css +184 -0
  123. package/dist/components/Jackpots/JackpotsList/JackpotsListItem.module.css +184 -0
  124. package/dist/components/KYC/BasicInformation.d.ts +1 -0
  125. package/dist/components/KYC/BasicInformation.js +101 -0
  126. package/dist/components/KYC/IdentityVerification.d.ts +1 -0
  127. package/dist/components/KYC/IdentityVerification.js +120 -0
  128. package/dist/components/KYC/Indicator.d.ts +1 -0
  129. package/dist/components/KYC/Indicator.js +8 -0
  130. package/dist/components/KYC/KYC.lazy.d.ts +6 -0
  131. package/dist/components/KYC/KYC.lazy.js +45 -0
  132. package/dist/components/KYC/KYCContext.d.ts +6 -0
  133. package/dist/components/KYC/KYCContext.js +2 -0
  134. package/dist/components/KYC/KYCDefault/BasicInformation.d.ts +1 -0
  135. package/dist/components/KYC/KYCDefault/BasicInformation.js +101 -0
  136. package/dist/components/KYC/KYCVerificationStatus.d.ts +1 -0
  137. package/dist/components/KYC/KYCVerificationStatus.js +10 -0
  138. package/dist/components/KYC/KYCVerificationStatus.lazy.d.ts +1 -0
  139. package/dist/components/KYC/KYCVerificationStatus.lazy.js +36 -0
  140. package/dist/components/KYC/PersonalInformation.d.ts +1 -0
  141. package/dist/components/KYC/PersonalInformation.js +122 -0
  142. package/dist/components/KYC/useKYC.d.ts +25 -0
  143. package/dist/components/KYC/useKYC.js +38 -0
  144. package/dist/components/KYCNotRequired/KYCNotRequired.d.ts +0 -0
  145. package/dist/components/KYCNotRequired/KYCNotRequired.js +1 -0
  146. package/dist/components/PortalProvider/AndroidOnlyComponents.d.ts +1 -0
  147. package/dist/components/PortalProvider/AndroidOnlyComponents.js +12 -0
  148. package/dist/components/PortalProvider/CXDTokenObserver.d.ts +1 -0
  149. package/dist/components/PortalProvider/CXDTokenObserver.js +30 -0
  150. package/dist/components/PortalProvider/LinkGoogleAccountObserver.d.ts +1 -0
  151. package/dist/components/PortalProvider/LinkGoogleAccountObserver.js +29 -0
  152. package/dist/components/Quests/MultiWageringQuest.d.ts +1 -0
  153. package/dist/components/Quests/MultiWageringQuest.js +111 -0
  154. package/dist/components/SessionWatcher/SessionWatcher.d.ts +1 -0
  155. package/dist/components/SessionWatcher/SessionWatcher.js +20 -0
  156. package/dist/components/SessionWatcher/index.d.ts +1 -0
  157. package/dist/components/SessionWatcher/index.js +1 -0
  158. package/dist/components/SignIn/utils.d.ts +8 -0
  159. package/dist/components/SignIn/utils.js +26 -0
  160. package/dist/components/SingleSignOn/SingleSignOn.d.ts +1 -1
  161. package/dist/components/SingleSignOn/SingleSignOn.js +7 -15
  162. package/dist/constants/Branches.d.ts +2 -0
  163. package/dist/constants/Branches.js +42 -0
  164. package/dist/handlers/index.d.ts +2 -2
  165. package/dist/images/game-providers/ALPHACHINKO.png +0 -0
  166. package/dist/images/responsible-gaming-yellow.png +0 -0
  167. package/dist/third-parties/FacebookPixel/FacebookPixel.d.ts +4 -0
  168. package/dist/third-parties/FacebookPixel/FacebookPixel.js +4 -0
  169. package/dist/third-parties/FacebookPixel/api.d.ts +0 -0
  170. package/dist/third-parties/FacebookPixel/api.js +1 -0
  171. package/dist/third-parties/FacebookPixel/index.d.ts +1 -0
  172. package/dist/third-parties/FacebookPixel/index.js +1 -0
  173. package/dist/third-parties/GoogleRecaptcha/GoogleRecaptcha.d.ts +4 -0
  174. package/dist/third-parties/GoogleRecaptcha/GoogleRecaptcha.js +4 -0
  175. package/dist/third-parties/GoogleRecaptcha/api.d.ts +0 -0
  176. package/dist/third-parties/GoogleRecaptcha/api.js +1 -0
  177. package/dist/third-parties/GoogleRecaptcha/index.d.ts +1 -0
  178. package/dist/third-parties/GoogleRecaptcha/index.js +1 -0
  179. package/dist/third-parties/index.d.ts +2 -0
  180. package/dist/third-parties/index.js +2 -0
  181. package/dist/ui/QrCode/QrCode.d.ts +25 -25
  182. package/dist/ui/QrCode/qrCode.recipe.d.ts +5 -5
  183. package/dist/utils/getLocaleInfo.d.ts +79 -0
  184. package/dist/utils/getLocaleInfo.js +175 -0
  185. package/package.json +1 -1
@@ -0,0 +1,157 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { zodResolver } from '@hookform/resolvers/zod';
3
+ import Link from 'next/link';
4
+ import { useEffect, useState } 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 { useCreateMayaAppDepositMutation } from '../../../../client/hooks/useCreateMayaAppDepositMutation.js';
10
+ import { useDepositsCountQuery } from '../../../../client/hooks/useDepositsCountQuery.js';
11
+ import { useGlobalStore } from '../../../../client/hooks/useGlobalStore.js';
12
+ import { useMemberVerificationQuery } from '../../../../client/hooks/useMemberVerificationQuery.js';
13
+ import { usePaymentSettingsQuery } from '../../../../client/hooks/usePaymentSettingsQuery.js';
14
+ import { AlertCircleIcon } from '../../../../icons/AlertCircleIcon.js';
15
+ import { ChevronDownIcon } from '../../../../icons/ChevronDownIcon.js';
16
+ import { ChevronUpIcon } from '../../../../icons/ChevronUpIcon.js';
17
+ import { SpinnerIcon } from '../../../../icons/SpinnerIcon.js';
18
+ import { XIcon } from '../../../../icons/XIcon.js';
19
+ import { AlertDialog } from '../../../../ui/AlertDialog/index.js';
20
+ import { Button } from '../../../../ui/Button/index.js';
21
+ import { Field } from '../../../../ui/Field/index.js';
22
+ import { NumberInput } from '../../../../ui/NumberInput/index.js';
23
+ import { Portal } from '../../../../ui/Portal/index.js';
24
+ import { parseDecimal } from '../../../../utils/parseDecimal.js';
25
+ import { AmountChoices } from '../../AmountChoices.js';
26
+ import { useDepositWithdrawalPropsContext } from '../../DepositWithdrawalContext.js';
27
+ import { AvailablePromos } from '../AvailablePromos.js';
28
+ export function MayaAppDeposit() {
29
+ const depositWithdrawalProps = useDepositWithdrawalPropsContext();
30
+ const globalStore = useGlobalStore(useShallow((ctx) => ({
31
+ depositWithdrawal: ctx.depositWithdrawal,
32
+ kycVerificationStatus: ctx.kycVerificationStatus,
33
+ })));
34
+ const verificationQuery = useMemberVerificationQuery();
35
+ const verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
36
+ const [status, setStatus] = useState('waiting');
37
+ const createDepositMutation = useCreateMayaAppDepositMutation({
38
+ onMutate() {
39
+ setStatus('processing');
40
+ },
41
+ onSuccess() {
42
+ setStatus('success');
43
+ form.reset();
44
+ },
45
+ onError() {
46
+ setStatus('failed');
47
+ },
48
+ });
49
+ const depositsCountQuery = useDepositsCountQuery();
50
+ const depositsCount = depositsCountQuery.data ?? 0;
51
+ const paymentSettingsQuery = usePaymentSettingsQuery();
52
+ const paymentSettings = paymentSettingsQuery.data;
53
+ const gatewaySettings = paymentSettings?.mayaAppDepositGatewaySettings;
54
+ const maximumAmount = parseDecimal(gatewaySettings?.maximumAmount, 0);
55
+ const minimumAmount = depositsCount <= 0
56
+ ? parseDecimal(paymentSettingsQuery.data?.minimumFirstDepositAmount, 0)
57
+ : parseDecimal(gatewaySettings?.minimumAmount, 0);
58
+ const promosQuery = useAvailablePromosQuery();
59
+ const promos = promosQuery.data ?? [];
60
+ const definition = z
61
+ .object({
62
+ amount: z.string().superRefine((val, ctx) => {
63
+ const n = parseDecimal(val, 0);
64
+ if (n < minimumAmount) {
65
+ ctx.addIssue({
66
+ type: 'number',
67
+ code: z.ZodIssueCode.too_small,
68
+ inclusive: true,
69
+ minimum: minimumAmount,
70
+ message: `Please enter ${minimumAmount.toLocaleString()} or more to proceed with your deposit.`,
71
+ });
72
+ }
73
+ if (n > maximumAmount) {
74
+ ctx.addIssue({
75
+ type: 'number',
76
+ code: z.ZodIssueCode.too_big,
77
+ inclusive: true,
78
+ maximum: maximumAmount,
79
+ message: `Maximum amount is ${maximumAmount.toLocaleString()}`,
80
+ });
81
+ }
82
+ }),
83
+ promo: z.string().optional().nullable(),
84
+ })
85
+ .superRefine((value, ctx) => {
86
+ const promo = promos.find((o) => o.id === value.promo);
87
+ const promoMinAmount = parseDecimal(promo?.minimumDepositAmount, 0);
88
+ const promoMaxAmount = parseDecimal(promo?.maximumDepositAmount, 0);
89
+ const amount = parseDecimal(value.amount, 0);
90
+ if (promo && amount < promoMinAmount) {
91
+ ctx.addIssue({
92
+ path: ['amount'],
93
+ code: z.ZodIssueCode.custom,
94
+ message: `Minimum amount for this promo is ${promoMinAmount.toLocaleString()}`,
95
+ });
96
+ }
97
+ if (promo && amount > promoMaxAmount) {
98
+ ctx.addIssue({
99
+ path: ['amount'],
100
+ code: z.ZodIssueCode.custom,
101
+ message: `Maximum amount for this promo is ${promoMaxAmount}`,
102
+ });
103
+ }
104
+ });
105
+ const form = useForm({
106
+ mode: 'all',
107
+ resolver: zodResolver(definition),
108
+ defaultValues: {
109
+ amount: '0',
110
+ promo: globalStore.depositWithdrawal.promo ?? null,
111
+ },
112
+ });
113
+ useEffect(() => {
114
+ if (minimumAmount) {
115
+ form.reset({
116
+ amount: minimumAmount.toString(),
117
+ promo: form.getValues('promo') ?? null,
118
+ });
119
+ }
120
+ }, [form, minimumAmount]);
121
+ const handleSubmit = form.handleSubmit(async (data) => {
122
+ //handle new kyc process
123
+ if (verificationStatus === 'PENDING' ||
124
+ verificationStatus === 'UNVERIFIED' ||
125
+ verificationStatus === 'REJECTED' ||
126
+ verificationStatus === 'CREATED') {
127
+ globalStore.kycVerificationStatus.setOpen(true);
128
+ return;
129
+ }
130
+ else {
131
+ createDepositMutation.mutate({
132
+ amount: data.amount.toString(),
133
+ promo: data.promo ?? undefined,
134
+ });
135
+ }
136
+ });
137
+ return (_jsxs("form", { onSubmit: handleSubmit, noValidate: true, children: [_jsx(Controller, { control: form.control, name: "amount", render: (o) => (_jsxs(Field.Root, { invalid: !!form.formState.errors.amount, children: [_jsxs(NumberInput.Root, { min: 0, step: 1, value: o.field.value, onValueChange: (details) => {
138
+ o.field.onChange(details.value);
139
+ }, 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) => {
140
+ form.setValue('amount', value.toString(), {
141
+ shouldTouch: true,
142
+ shouldDirty: true,
143
+ shouldValidate: true,
144
+ });
145
+ }, min: minimumAmount, max: maximumAmount, className: "mt-lg" }), _jsx(Controller, { control: form.control, name: "promo", render: (o) => (_jsx(AvailablePromos, { value: o.field.value, onChange: (value) => {
146
+ o.field.onChange(value);
147
+ globalStore.depositWithdrawal.setPromo(null);
148
+ }, className: "mt-3xl" })) }), _jsx(Button, { type: "submit", className: "mt-3xl", disabled: createDepositMutation.isPending, 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" }), "."] })), _jsx(AlertDialog.Root, { open: status !== 'waiting', onOpenChange: (details) => {
149
+ if (!details.open) {
150
+ setStatus('waiting');
151
+ }
152
+ }, 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: status === 'processing', children: _jsx(XIcon, {}) }), _jsxs(AlertDialog.Header, { children: [status === 'processing' && (_jsx(SpinnerIcon, { className: "size-12 text-text-brand-primary-600" })), status === '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, {}) })), status === 'failed' && (_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: [_jsxs(AlertDialog.Title, { children: [status === 'processing' && 'Processing Deposit', status === 'success' && 'Deposit Successful', status === 'failed' && 'Deposit Failed'] }), _jsxs(AlertDialog.Description, { children: [status === 'processing' &&
153
+ "We're verifying your account and amount. Please hold a moment.", status === 'success' && (_jsxs(_Fragment, { children: ["Your deposit has been successfully processed. ", _jsx("br", {}), " If you are not redirected automatically, click", ' ', !!createDepositMutation.data?.checkoutUrl && (_jsx("a", { href: createDepositMutation.data?.checkoutUrl, target: "_blank", rel: "noopener noreferrer", className: "text-text-brand underline underline-offset-2", children: "here" })), "."] })), status === 'failed' &&
154
+ 'Something went wrong while processing your deposit. Please try again or contact support.'] })] }), (status === 'failed' || status === 'success') && (_jsx(AlertDialog.Footer, { children: _jsx(AlertDialog.Context, { children: (api) => (_jsx(Button, { onClick: () => {
155
+ api.setOpen(false);
156
+ }, children: status === 'failed' ? 'Try Again' : 'Ok' })) }) }))] }) })] }) })] }));
157
+ }
@@ -0,0 +1 @@
1
+ export declare function MayaDeposit(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,163 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { zodResolver } from '@hookform/resolvers/zod';
3
+ import Link from 'next/link';
4
+ import { useEffect, useState } from 'react';
5
+ import { Controller, useForm } from 'react-hook-form';
6
+ import invariant from 'tiny-invariant';
7
+ import { z } from 'zod';
8
+ import { useShallow } from 'zustand/shallow';
9
+ import { useAvailablePromosQuery } from '../../../../client/hooks/useAvailablePromosQuery.js';
10
+ import { useCreateMayaDepositMutation } from '../../../../client/hooks/useCreateMayaDepositMutation.js';
11
+ import { useDepositsCountQuery } from '../../../../client/hooks/useDepositsCountQuery.js';
12
+ import { useDisclosure } from '../../../../client/hooks/useDisclosure.js';
13
+ import { useGlobalStore } from '../../../../client/hooks/useGlobalStore.js';
14
+ import { useMemberVerificationQuery } from '../../../../client/hooks/useMemberVerificationQuery.js';
15
+ import { usePaymentSettingsQuery } from '../../../../client/hooks/usePaymentSettingsQuery.js';
16
+ import { AlertCircleIcon } from '../../../../icons/AlertCircleIcon.js';
17
+ import { ChevronDownIcon } from '../../../../icons/ChevronDownIcon.js';
18
+ import { ChevronUpIcon } from '../../../../icons/ChevronUpIcon.js';
19
+ import { SpinnerIcon } from '../../../../icons/SpinnerIcon.js';
20
+ import { XIcon } from '../../../../icons/XIcon.js';
21
+ import { AlertDialog } from '../../../../ui/AlertDialog/index.js';
22
+ import { Button } from '../../../../ui/Button/index.js';
23
+ import { Field } from '../../../../ui/Field/index.js';
24
+ import { NumberInput } from '../../../../ui/NumberInput/index.js';
25
+ import { Portal } from '../../../../ui/Portal/index.js';
26
+ import { parseDecimal } from '../../../../utils/parseDecimal.js';
27
+ import { AmountChoices } from '../../AmountChoices.js';
28
+ import { useDepositWithdrawalPropsContext } from '../../DepositWithdrawalContext.js';
29
+ import { AvailablePromos } from '../AvailablePromos.js';
30
+ export function MayaDeposit() {
31
+ const depositWithdrawalProps = useDepositWithdrawalPropsContext();
32
+ const disclosure = useDisclosure();
33
+ const globalStore = useGlobalStore(useShallow((ctx) => ({
34
+ depositWithdrawal: ctx.depositWithdrawal,
35
+ kycVerificationStatus: ctx.kycVerificationStatus,
36
+ })));
37
+ const verificationQuery = useMemberVerificationQuery();
38
+ const verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
39
+ const [status, setStatus] = useState('waiting');
40
+ const createDepositMutation = useCreateMayaDepositMutation({
41
+ onMutate() {
42
+ disclosure.setOpen(true);
43
+ setStatus('processing');
44
+ },
45
+ onSuccess(data) {
46
+ invariant(data.checkoutUrl);
47
+ window.open(data.checkoutUrl, '_blank', 'noopener,noreferrer');
48
+ setStatus('success');
49
+ },
50
+ onError() {
51
+ setStatus('failed');
52
+ },
53
+ });
54
+ const depositsCountQuery = useDepositsCountQuery();
55
+ const depositsCount = depositsCountQuery.data ?? 0;
56
+ const paymentSettingsQuery = usePaymentSettingsQuery();
57
+ const paymentSettings = paymentSettingsQuery.data;
58
+ const gatewaySettings = paymentSettings?.mayaDepositGatewaySettings;
59
+ const maximumAmount = parseDecimal(gatewaySettings?.maximumAmount, 0);
60
+ const minimumAmount = depositsCount <= 0
61
+ ? parseDecimal(paymentSettingsQuery.data?.minimumFirstDepositAmount, 0)
62
+ : parseDecimal(gatewaySettings?.minimumAmount, 0);
63
+ const promosQuery = useAvailablePromosQuery();
64
+ const promos = promosQuery.data ?? [];
65
+ const definition = z
66
+ .object({
67
+ amount: z.string().superRefine((val, ctx) => {
68
+ const n = parseDecimal(val, 0);
69
+ if (n < minimumAmount) {
70
+ ctx.addIssue({
71
+ type: 'number',
72
+ code: z.ZodIssueCode.too_small,
73
+ inclusive: true,
74
+ minimum: minimumAmount,
75
+ message: `Please enter ${minimumAmount.toLocaleString()} or more to proceed with your deposit.`,
76
+ });
77
+ }
78
+ if (n > maximumAmount) {
79
+ ctx.addIssue({
80
+ type: 'number',
81
+ code: z.ZodIssueCode.too_big,
82
+ inclusive: true,
83
+ maximum: maximumAmount,
84
+ message: `Maximum amount is ${maximumAmount.toLocaleString()}`,
85
+ });
86
+ }
87
+ }),
88
+ promo: z.string().optional().nullable(),
89
+ })
90
+ .superRefine((value, ctx) => {
91
+ const promo = promos.find((o) => o.id === value.promo);
92
+ const promoMinAmount = parseDecimal(promo?.minimumDepositAmount, 0);
93
+ const promoMaxAmount = parseDecimal(promo?.maximumDepositAmount, 0);
94
+ const amount = parseDecimal(value.amount, 0);
95
+ if (promo && amount < promoMinAmount) {
96
+ ctx.addIssue({
97
+ path: ['amount'],
98
+ code: z.ZodIssueCode.custom,
99
+ message: `Minimum amount for this promo is ${promoMinAmount.toLocaleString()}`,
100
+ });
101
+ }
102
+ if (promo && amount > promoMaxAmount) {
103
+ ctx.addIssue({
104
+ path: ['amount'],
105
+ code: z.ZodIssueCode.custom,
106
+ message: `Maximum amount for this promo is ${promoMaxAmount}`,
107
+ });
108
+ }
109
+ });
110
+ const form = useForm({
111
+ mode: 'all',
112
+ resolver: zodResolver(definition),
113
+ defaultValues: {
114
+ amount: '0',
115
+ promo: globalStore.depositWithdrawal.promo ?? null,
116
+ },
117
+ });
118
+ useEffect(() => {
119
+ if (minimumAmount) {
120
+ form.reset({
121
+ amount: minimumAmount.toString(),
122
+ promo: form.getValues('promo') ?? null,
123
+ });
124
+ }
125
+ }, [form, minimumAmount]);
126
+ return (_jsxs("form", { onSubmit: form.handleSubmit(async (data) => {
127
+ if (verificationStatus === 'PENDING' ||
128
+ verificationStatus === 'UNVERIFIED' ||
129
+ verificationStatus === 'REJECTED' ||
130
+ verificationStatus === 'CREATED') {
131
+ globalStore.kycVerificationStatus.setOpen(true);
132
+ return;
133
+ }
134
+ else {
135
+ createDepositMutation.reset();
136
+ createDepositMutation.mutate({
137
+ amount: data.amount.toString(),
138
+ promo: data.promo ?? undefined,
139
+ });
140
+ }
141
+ }), noValidate: true, children: [_jsx(Controller, { control: form.control, name: "amount", render: (o) => (_jsxs(Field.Root, { invalid: !!form.formState.errors.amount, children: [_jsxs(NumberInput.Root, { min: 0, step: 1, value: o.field.value, onValueChange: (details) => {
142
+ o.field.onChange(details.value);
143
+ }, 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) => {
144
+ form.setValue('amount', value.toString(), {
145
+ shouldTouch: true,
146
+ shouldDirty: true,
147
+ shouldValidate: true,
148
+ });
149
+ }, min: minimumAmount, max: maximumAmount, className: "mt-lg" }), _jsx(Controller, { control: form.control, name: "promo", render: (o) => (_jsx(AvailablePromos, { value: o.field.value, onChange: (value) => {
150
+ o.field.onChange(value);
151
+ globalStore.depositWithdrawal.setPromo(null);
152
+ }, className: "mt-3xl" })) }), _jsx(Button, { type: "submit", className: "mt-3xl", disabled: createDepositMutation.isPending, 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" }), "."] })), _jsx(AlertDialog.Root, { open: disclosure.open, onOpenChange: (details) => {
153
+ disclosure.setOpen(details.open);
154
+ if (!details.open) {
155
+ setStatus('waiting');
156
+ form.reset();
157
+ }
158
+ }, 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, { children: _jsx(XIcon, {}) }), _jsxs(AlertDialog.Header, { children: [status === 'processing' && (_jsx(SpinnerIcon, { className: "size-12 text-text-brand-primary-600" })), status === '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, {}) })), status === 'failed' && (_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: [_jsxs(AlertDialog.Title, { children: [status === 'processing' && 'Processing Deposit', status === 'success' && 'Deposit Successful', status === 'failed' && 'Deposit Failed'] }), _jsxs(AlertDialog.Description, { children: [status === 'processing' &&
159
+ "We're verifying your account and amount. Please hold a moment.", status === 'success' && (_jsxs(_Fragment, { children: ["Your deposit has been successfully processed. ", _jsx("br", {}), " If you are not redirected automatically, click", ' ', !!createDepositMutation.data?.checkoutUrl && (_jsx("a", { href: createDepositMutation.data?.checkoutUrl, target: "_blank", rel: "noopener noreferrer", className: "text-text-brand underline underline-offset-2", children: "here" })), "."] })), status === 'failed' &&
160
+ 'Something went wrong while processing your deposit. Please try again or contact support.'] })] }), (status === 'failed' || status === 'success') && (_jsx(AlertDialog.Footer, { children: _jsx(AlertDialog.Context, { children: (api) => (_jsx(Button, { onClick: () => {
161
+ api.setOpen(false);
162
+ }, children: status === 'failed' ? 'Try Again' : 'Ok' })) }) }))] }) })] }) })] }));
163
+ }
@@ -0,0 +1 @@
1
+ export declare function MayaWebpayDeposit(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,166 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { zodResolver } from '@hookform/resolvers/zod';
3
+ import Link from 'next/link';
4
+ import { useEffect, useState } from 'react';
5
+ import { Controller, useForm } from 'react-hook-form';
6
+ import invariant from 'tiny-invariant';
7
+ import { z } from 'zod';
8
+ import { useShallow } from 'zustand/shallow';
9
+ import { useAvailablePromosQuery } from '../../../../client/hooks/useAvailablePromosQuery.js';
10
+ import { useCreateMayaWebpayDepositMutation } from '../../../../client/hooks/useCreateMayaWebpayDepositMutation.js';
11
+ import { useDepositsCountQuery } from '../../../../client/hooks/useDepositsCountQuery.js';
12
+ import { useDisclosure } from '../../../../client/hooks/useDisclosure.js';
13
+ import { useGlobalStore } from '../../../../client/hooks/useGlobalStore.js';
14
+ import { useMemberVerificationQuery } from '../../../../client/hooks/useMemberVerificationQuery.js';
15
+ import { usePaymentSettingsQuery } from '../../../../client/hooks/usePaymentSettingsQuery.js';
16
+ import { AlertCircleIcon } from '../../../../icons/AlertCircleIcon.js';
17
+ import { ChevronDownIcon } from '../../../../icons/ChevronDownIcon.js';
18
+ import { ChevronUpIcon } from '../../../../icons/ChevronUpIcon.js';
19
+ import { SpinnerIcon } from '../../../../icons/SpinnerIcon.js';
20
+ import { XIcon } from '../../../../icons/XIcon.js';
21
+ import { AlertDialog } from '../../../../ui/AlertDialog/index.js';
22
+ import { Button } from '../../../../ui/Button/index.js';
23
+ import { Field } from '../../../../ui/Field/index.js';
24
+ import { NumberInput } from '../../../../ui/NumberInput/index.js';
25
+ import { Portal } from '../../../../ui/Portal/index.js';
26
+ import { parseDecimal } from '../../../../utils/parseDecimal.js';
27
+ import { AmountChoices } from '../../AmountChoices.js';
28
+ import { useDepositWithdrawalPropsContext } from '../../DepositWithdrawalContext.js';
29
+ import { AvailablePromos } from '../AvailablePromos.js';
30
+ export function MayaWebpayDeposit() {
31
+ const depositWithdrawalProps = useDepositWithdrawalPropsContext();
32
+ const disclosure = useDisclosure();
33
+ const globalStore = useGlobalStore(useShallow((ctx) => ({
34
+ depositWithdrawal: ctx.depositWithdrawal,
35
+ kycVerificationStatus: ctx.kycVerificationStatus,
36
+ })));
37
+ const verificationQuery = useMemberVerificationQuery();
38
+ const verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
39
+ const [status, setStatus] = useState('waiting');
40
+ const createDepositMutation = useCreateMayaWebpayDepositMutation({
41
+ onMutate() {
42
+ disclosure.setOpen(true);
43
+ setStatus('processing');
44
+ },
45
+ onSuccess(data) {
46
+ invariant(data.checkoutUrl);
47
+ window.open(data.checkoutUrl, '_blank', 'noopener,noreferrer');
48
+ setStatus('success');
49
+ },
50
+ onError() {
51
+ setStatus('failed');
52
+ },
53
+ });
54
+ const depositsCountQuery = useDepositsCountQuery();
55
+ const depositsCount = depositsCountQuery.data ?? 0;
56
+ const paymentSettingsQuery = usePaymentSettingsQuery();
57
+ const paymentSettings = paymentSettingsQuery.data;
58
+ const gatewaySettings = paymentSettings?.mayaWebpayDepositGatewaySettings;
59
+ const maximumAmount = parseDecimal(gatewaySettings?.maximumAmount, 0);
60
+ const minimumAmount = depositsCount <= 0
61
+ ? parseDecimal(paymentSettingsQuery.data?.minimumFirstDepositAmount, 0)
62
+ : parseDecimal(gatewaySettings?.minimumAmount, 0);
63
+ const promosQuery = useAvailablePromosQuery();
64
+ const promos = promosQuery.data ?? [];
65
+ const definition = z
66
+ .object({
67
+ amount: z.string().superRefine((val, ctx) => {
68
+ const n = parseDecimal(val, 0);
69
+ if (n < minimumAmount) {
70
+ ctx.addIssue({
71
+ type: 'number',
72
+ code: z.ZodIssueCode.too_small,
73
+ inclusive: true,
74
+ minimum: minimumAmount,
75
+ message: `Please enter ${minimumAmount.toLocaleString()} or more to proceed with your deposit.`,
76
+ });
77
+ }
78
+ if (n > maximumAmount) {
79
+ ctx.addIssue({
80
+ type: 'number',
81
+ code: z.ZodIssueCode.too_big,
82
+ inclusive: true,
83
+ maximum: maximumAmount,
84
+ message: `Maximum amount is ${maximumAmount.toLocaleString()}`,
85
+ });
86
+ }
87
+ }),
88
+ promo: z.string().optional().nullable(),
89
+ })
90
+ .superRefine((value, ctx) => {
91
+ const promo = promos.find((o) => o.id === value.promo);
92
+ const promoMinAmount = parseDecimal(promo?.minimumDepositAmount, 0);
93
+ const promoMaxAmount = parseDecimal(promo?.maximumDepositAmount, 0);
94
+ const amount = parseDecimal(value.amount, 0);
95
+ if (promo && amount < promoMinAmount) {
96
+ ctx.addIssue({
97
+ path: ['amount'],
98
+ code: z.ZodIssueCode.custom,
99
+ message: `Minimum amount for this promo is ${promoMinAmount.toLocaleString()}`,
100
+ });
101
+ }
102
+ if (promo && amount > promoMaxAmount) {
103
+ ctx.addIssue({
104
+ path: ['amount'],
105
+ code: z.ZodIssueCode.custom,
106
+ message: `Maximum amount for this promo is ${promoMaxAmount}`,
107
+ });
108
+ }
109
+ });
110
+ const form = useForm({
111
+ mode: 'all',
112
+ resolver: zodResolver(definition),
113
+ defaultValues: {
114
+ amount: '0',
115
+ promo: globalStore.depositWithdrawal.promo ?? null,
116
+ },
117
+ });
118
+ useEffect(() => {
119
+ if (minimumAmount) {
120
+ form.reset({
121
+ amount: minimumAmount.toString(),
122
+ promo: form.getValues('promo') ?? null,
123
+ });
124
+ }
125
+ }, [form, minimumAmount]);
126
+ return (_jsxs("form", { onSubmit: form.handleSubmit(async (data) => {
127
+ if (verificationStatus === 'PENDING' ||
128
+ verificationStatus === 'UNVERIFIED' ||
129
+ verificationStatus === 'REJECTED' ||
130
+ verificationStatus === 'CREATED') {
131
+ globalStore.kycVerificationStatus.setOpen(true);
132
+ return;
133
+ }
134
+ else {
135
+ createDepositMutation.reset();
136
+ createDepositMutation.mutate({
137
+ amount: data.amount.toString(),
138
+ promo: data.promo ?? undefined,
139
+ redirectUrl: window.location.origin.includes('localhost')
140
+ ? 'https://uat.powerplay.ph'
141
+ : window.location.origin,
142
+ });
143
+ }
144
+ }), noValidate: true, children: [_jsx(Controller, { control: form.control, name: "amount", render: (o) => (_jsxs(Field.Root, { invalid: !!form.formState.errors.amount, children: [_jsxs(NumberInput.Root, { min: 0, step: 1, value: o.field.value, onValueChange: (details) => {
145
+ o.field.onChange(details.value);
146
+ }, 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) => {
147
+ form.setValue('amount', value.toString(), {
148
+ shouldTouch: true,
149
+ shouldDirty: true,
150
+ shouldValidate: true,
151
+ });
152
+ }, min: minimumAmount, max: maximumAmount, className: "mt-lg" }), _jsx(Controller, { control: form.control, name: "promo", render: (o) => (_jsx(AvailablePromos, { value: o.field.value, onChange: (value) => {
153
+ o.field.onChange(value);
154
+ globalStore.depositWithdrawal.setPromo(null);
155
+ }, className: "mt-3xl" })) }), _jsx(Button, { type: "submit", className: "mt-3xl", disabled: createDepositMutation.isPending, children: "Deposit" }), _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" }), "."] }), _jsx(AlertDialog.Root, { open: disclosure.open, onOpenChange: (details) => {
156
+ disclosure.setOpen(details.open);
157
+ if (!details.open) {
158
+ setStatus('waiting');
159
+ form.reset();
160
+ }
161
+ }, 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, { children: _jsx(XIcon, {}) }), _jsxs(AlertDialog.Header, { children: [status === 'processing' && (_jsx(SpinnerIcon, { className: "size-12 text-text-brand-primary-600" })), status === '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, {}) })), status === 'failed' && (_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: [_jsxs(AlertDialog.Title, { children: [status === 'processing' && 'Processing Deposit', status === 'success' && 'Deposit Successful', status === 'failed' && 'Deposit Failed'] }), _jsxs(AlertDialog.Description, { children: [status === 'processing' &&
162
+ "We're verifying your account and amount. Please hold a moment.", status === 'success' && (_jsxs(_Fragment, { children: ["Your deposit has been successfully processed. ", _jsx("br", {}), " If you are not redirected automatically, click", ' ', !!createDepositMutation.data?.checkoutUrl && (_jsx("a", { href: createDepositMutation.data?.checkoutUrl, target: "_blank", rel: "noopener noreferrer", className: "text-text-brand underline underline-offset-2", children: "here" })), "."] })), status === 'failed' &&
163
+ 'Something went wrong while processing your deposit. Please try again or contact support.'] })] }), (status === 'failed' || status === 'success') && (_jsx(AlertDialog.Footer, { children: _jsx(AlertDialog.Context, { children: (api) => (_jsx(Button, { onClick: () => {
164
+ api.setOpen(false);
165
+ }, children: status === 'failed' ? 'Try Again' : 'Ok' })) }) }))] }) })] }) })] }));
166
+ }
@@ -0,0 +1 @@
1
+ export declare function OnlineBankDeposit(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { OnlineBankDepositAlert } from './OnlineBankDepositAlert.js';
3
+ import { OnlineBankDepositContext } from './OnlineBankDepositContext.js';
4
+ import { OnlineBankDepositDetails } from './OnlineBankDepositDetails.js';
5
+ import { OnlineBankDepositForm } from './OnlineBankDepositForm.js';
6
+ import { useOnlineBankDeposit } from './useOnlineBankDeposit.js';
7
+ export function OnlineBankDeposit() {
8
+ const context = useOnlineBankDeposit();
9
+ return (_jsxs(OnlineBankDepositContext, { value: context, children: [_jsx(OnlineBankDepositForm, {}), _jsx(OnlineBankDepositDetails, {}), _jsx(OnlineBankDepositAlert, {})] }));
10
+ }
@@ -0,0 +1 @@
1
+ export declare function OnlineBankDepositAlert(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,99 @@
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 { useOnlineBankDepositContext } from './OnlineBankDepositContext.js';
9
+ export function OnlineBankDepositAlert() {
10
+ const context = useOnlineBankDepositContext();
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 = useOnlineBankDepositContext();
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
+ }