@opexa/portal-components 0.0.938 → 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 (188) 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/client/hooks/useSessionHealthQuery.js +1 -0
  37. package/dist/components/Banner/Banner.client.d.ts +12 -0
  38. package/dist/components/Banner/Banner.client.js +49 -0
  39. package/dist/components/DepositWithdrawal/AiOPaymentMethods.d.ts +11 -0
  40. package/dist/components/DepositWithdrawal/AiOPaymentMethods.js +55 -0
  41. package/dist/components/DepositWithdrawal/Deposit/AurixPayPayMayaDeposit/AurixPayGrabPayDeposit.js +21 -2
  42. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositContext.d.ts +2 -2
  43. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/useOnlineBankDeposit.d.ts +1 -1
  44. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositAlert.d.ts +1 -0
  45. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositAlert.js +99 -0
  46. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositDetails.d.ts +1 -0
  47. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositDetails.js +17 -0
  48. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositForm.d.ts +1 -0
  49. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositForm.js +116 -0
  50. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHQRCode.d.ts +3 -0
  51. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHQRCode.js +69 -0
  52. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDeposit.d.ts +1 -0
  53. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDeposit.js +10 -0
  54. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositAlert.d.ts +1 -0
  55. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositAlert.js +99 -0
  56. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositContext.d.ts +25 -0
  57. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositContext.js +2 -0
  58. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositDetails.d.ts +1 -0
  59. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositDetails.js +17 -0
  60. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositForm.d.ts +1 -0
  61. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositForm.js +116 -0
  62. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHQRCode.d.ts +3 -0
  63. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHQRCode.js +69 -0
  64. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/useQRPHDeposit.d.ts +13 -0
  65. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/useQRPHDeposit.js +85 -0
  66. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGCashDeposit/AiOGCashDeposit.d.ts +1 -0
  67. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGCashDeposit/AiOGCashDeposit.js +173 -0
  68. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGrabPayDeposit/AiOGrabPayDeposit.d.ts +1 -0
  69. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOGrabPayDeposit/AiOGrabPayDeposit.js +171 -0
  70. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPalawanPayDeposit/AiOPalawanPayDeposit.d.ts +1 -0
  71. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPalawanPayDeposit/AiOPalawanPayDeposit.js +171 -0
  72. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPayMayaDeposit/AiOPayMayaDeposit.d.ts +1 -0
  73. package/dist/components/DepositWithdrawal/Deposit__legacy/AiOPayMayaDeposit/AiOPayMayaDeposit.js +171 -0
  74. package/dist/components/DepositWithdrawal/Deposit__legacy/AvailablePromos.d.ts +8 -0
  75. package/dist/components/DepositWithdrawal/Deposit__legacy/AvailablePromos.js +33 -0
  76. package/dist/components/DepositWithdrawal/Deposit__legacy/Deposit.d.ts +1 -0
  77. package/dist/components/DepositWithdrawal/Deposit__legacy/Deposit.js +120 -0
  78. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashDeposit/GCashDeposit.d.ts +1 -0
  79. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashDeposit/GCashDeposit.js +163 -0
  80. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashWebpayDeposit/GCashWebpayDeposit.d.ts +1 -0
  81. package/dist/components/DepositWithdrawal/Deposit__legacy/GCashWebpayDeposit/GCashWebpayDeposit.js +165 -0
  82. package/dist/components/DepositWithdrawal/Deposit__legacy/LibanganDeposit/LibanganDeposit.d.ts +1 -0
  83. package/dist/components/DepositWithdrawal/Deposit__legacy/LibanganDeposit/LibanganDeposit.js +186 -0
  84. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaAppDeposit/MayaAppDeposit.d.ts +1 -0
  85. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaAppDeposit/MayaAppDeposit.js +157 -0
  86. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaDeposit/MayaDeposit.d.ts +1 -0
  87. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaDeposit/MayaDeposit.js +163 -0
  88. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaWebpayDeposit/MayaWebpayDeposit.d.ts +1 -0
  89. package/dist/components/DepositWithdrawal/Deposit__legacy/MayaWebpayDeposit/MayaWebpayDeposit.js +166 -0
  90. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDeposit.d.ts +1 -0
  91. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDeposit.js +10 -0
  92. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositAlert.d.ts +1 -0
  93. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositAlert.js +99 -0
  94. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositContext.d.ts +25 -0
  95. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositContext.js +2 -0
  96. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositDetails.d.ts +1 -0
  97. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositDetails.js +19 -0
  98. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositForm.d.ts +1 -0
  99. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositForm.js +115 -0
  100. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/useOnlineBankDeposit.d.ts +13 -0
  101. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/useOnlineBankDeposit.js +81 -0
  102. package/dist/components/DepositWithdrawal/Deposit__legacy/PisoPayDeposit/PisoPayDeposit.d.ts +1 -0
  103. package/dist/components/DepositWithdrawal/Deposit__legacy/PisoPayDeposit/PisoPayDeposit.js +180 -0
  104. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDeposit.d.ts +1 -0
  105. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDeposit.js +10 -0
  106. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositAlert.d.ts +1 -0
  107. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositAlert.js +99 -0
  108. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositContext.d.ts +25 -0
  109. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositContext.js +2 -0
  110. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositDetails.d.ts +1 -0
  111. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositDetails.js +17 -0
  112. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositForm.d.ts +1 -0
  113. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositForm.js +116 -0
  114. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHQRCode.d.ts +3 -0
  115. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHQRCode.js +69 -0
  116. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/useQRPHDeposit.d.ts +13 -0
  117. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/useQRPHDeposit.js +85 -0
  118. package/dist/components/DepositWithdrawal/Withdrawal/Withdrawal.js +11 -4
  119. package/dist/components/DigitainLauncher/Loading.d.ts +1 -0
  120. package/dist/components/DigitainLauncher/Loading.js +5 -0
  121. package/dist/components/Disclaimer/DisclaimerV2.js +11 -0
  122. package/dist/components/Disclaimer/DisclaimerV3.js +7 -0
  123. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.module.css +184 -0
  124. package/dist/components/Jackpots/JackpotsList/JackpotsListItem.module.css +184 -0
  125. package/dist/components/KYC/BasicInformation.d.ts +1 -0
  126. package/dist/components/KYC/BasicInformation.js +101 -0
  127. package/dist/components/KYC/IdentityVerification.d.ts +1 -0
  128. package/dist/components/KYC/IdentityVerification.js +120 -0
  129. package/dist/components/KYC/Indicator.d.ts +1 -0
  130. package/dist/components/KYC/Indicator.js +8 -0
  131. package/dist/components/KYC/KYC.lazy.d.ts +6 -0
  132. package/dist/components/KYC/KYC.lazy.js +45 -0
  133. package/dist/components/KYC/KYCContext.d.ts +6 -0
  134. package/dist/components/KYC/KYCContext.js +2 -0
  135. package/dist/components/KYC/KYCDefault/BasicInformation.d.ts +1 -0
  136. package/dist/components/KYC/KYCDefault/BasicInformation.js +101 -0
  137. package/dist/components/KYC/KYCVerificationStatus.d.ts +1 -0
  138. package/dist/components/KYC/KYCVerificationStatus.js +10 -0
  139. package/dist/components/KYC/KYCVerificationStatus.lazy.d.ts +1 -0
  140. package/dist/components/KYC/KYCVerificationStatus.lazy.js +36 -0
  141. package/dist/components/KYC/PersonalInformation.d.ts +1 -0
  142. package/dist/components/KYC/PersonalInformation.js +122 -0
  143. package/dist/components/KYC/useKYC.d.ts +25 -0
  144. package/dist/components/KYC/useKYC.js +38 -0
  145. package/dist/components/KYCNotRequired/KYCNotRequired.d.ts +0 -0
  146. package/dist/components/KYCNotRequired/KYCNotRequired.js +1 -0
  147. package/dist/components/PortalProvider/AndroidOnlyComponents.d.ts +1 -0
  148. package/dist/components/PortalProvider/AndroidOnlyComponents.js +12 -0
  149. package/dist/components/PortalProvider/CXDTokenObserver.d.ts +1 -0
  150. package/dist/components/PortalProvider/CXDTokenObserver.js +30 -0
  151. package/dist/components/PortalProvider/LinkGoogleAccountObserver.d.ts +1 -0
  152. package/dist/components/PortalProvider/LinkGoogleAccountObserver.js +29 -0
  153. package/dist/components/Quests/MultiWageringQuest.d.ts +1 -0
  154. package/dist/components/Quests/MultiWageringQuest.js +111 -0
  155. package/dist/components/SessionWatcher/SessionWatcher.d.ts +1 -0
  156. package/dist/components/SessionWatcher/SessionWatcher.js +20 -0
  157. package/dist/components/SessionWatcher/index.d.ts +1 -0
  158. package/dist/components/SessionWatcher/index.js +1 -0
  159. package/dist/components/SignIn/utils.d.ts +8 -0
  160. package/dist/components/SignIn/utils.js +26 -0
  161. package/dist/components/SingleSignOn/SingleSignOn.d.ts +1 -1
  162. package/dist/components/SingleSignOn/SingleSignOn.js +7 -15
  163. package/dist/constants/Branches.d.ts +2 -0
  164. package/dist/constants/Branches.js +42 -0
  165. package/dist/handlers/index.d.ts +2 -2
  166. package/dist/images/game-providers/ALPHACHINKO.png +0 -0
  167. package/dist/images/responsible-gaming-yellow.png +0 -0
  168. package/dist/services/auth.d.ts +1 -1
  169. package/dist/services/auth.js +0 -6
  170. package/dist/third-parties/FacebookPixel/FacebookPixel.d.ts +4 -0
  171. package/dist/third-parties/FacebookPixel/FacebookPixel.js +4 -0
  172. package/dist/third-parties/FacebookPixel/api.d.ts +0 -0
  173. package/dist/third-parties/FacebookPixel/api.js +1 -0
  174. package/dist/third-parties/FacebookPixel/index.d.ts +1 -0
  175. package/dist/third-parties/FacebookPixel/index.js +1 -0
  176. package/dist/third-parties/GoogleRecaptcha/GoogleRecaptcha.d.ts +4 -0
  177. package/dist/third-parties/GoogleRecaptcha/GoogleRecaptcha.js +4 -0
  178. package/dist/third-parties/GoogleRecaptcha/api.d.ts +0 -0
  179. package/dist/third-parties/GoogleRecaptcha/api.js +1 -0
  180. package/dist/third-parties/GoogleRecaptcha/index.d.ts +1 -0
  181. package/dist/third-parties/GoogleRecaptcha/index.js +1 -0
  182. package/dist/third-parties/index.d.ts +2 -0
  183. package/dist/third-parties/index.js +2 -0
  184. package/dist/ui/QrCode/QrCode.d.ts +25 -25
  185. package/dist/ui/QrCode/qrCode.recipe.d.ts +5 -5
  186. package/dist/utils/getLocaleInfo.d.ts +79 -0
  187. package/dist/utils/getLocaleInfo.js +175 -0
  188. package/package.json +1 -1
@@ -0,0 +1,116 @@
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: `Please enter ${minimumAmount.toLocaleString()} or more to proceed with your deposit.`,
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
+ }
@@ -0,0 +1,3 @@
1
+ export declare function QRPHQRCode(props: {
2
+ qrCodeString: string;
3
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,69 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Capacitor } from '@capacitor/core';
4
+ import { Directory, Filesystem } from '@capacitor/filesystem';
5
+ import Image from 'next/image';
6
+ import { toaster } from '../../../../client/utils/toaster.js';
7
+ import qrphIcon from '../../../../images/qrph-icon.png';
8
+ import { QrCode } from '../../../../ui/QrCode/index.js';
9
+ export function QRPHQRCode(props) {
10
+ async function handleNativeDownload() {
11
+ const QRCode = await import('qrcode');
12
+ const dataUrl = await QRCode.toDataURL(props.qrCodeString, {
13
+ type: 'image/png',
14
+ color: {
15
+ light: '#FFFFFF',
16
+ dark: '#000000',
17
+ },
18
+ });
19
+ const base64 = dataUrl.split(',')[1];
20
+ try {
21
+ await Filesystem.writeFile({
22
+ path: `qrcode-${Date.now()}.png`,
23
+ data: base64,
24
+ directory: Directory.Documents,
25
+ });
26
+ toaster.success({
27
+ title: 'QR Code successfully saved to your device',
28
+ description: 'To continue with your deposit, please upload the QR code in your banking app.',
29
+ });
30
+ }
31
+ catch (error) {
32
+ console.log(error, 'error');
33
+ toaster.error({
34
+ title: 'Failed to save QR Code',
35
+ description: 'An error occurred while saving the QR code to your device.',
36
+ });
37
+ }
38
+ }
39
+ async function handleWebDownload() {
40
+ try {
41
+ const QRCode = await import('qrcode');
42
+ const dataUrl = await QRCode.toDataURL(props.qrCodeString, {
43
+ type: 'image/png',
44
+ color: {
45
+ light: '#FFFFFF',
46
+ dark: '#000000',
47
+ },
48
+ });
49
+ const link = document.createElement('a');
50
+ link.href = dataUrl;
51
+ link.download = `qrcode-${Date.now()}.png`;
52
+ document.body.appendChild(link);
53
+ link.click();
54
+ document.body.removeChild(link);
55
+ toaster.success({
56
+ title: 'QR Code successfully saved to your device',
57
+ description: 'To continue with your deposit, please upload the QR code in your banking app.',
58
+ });
59
+ }
60
+ catch (error) {
61
+ console.log(error, 'error');
62
+ toaster.error({
63
+ title: 'Failed to save QR Code',
64
+ description: 'An error occurred while saving the QR code to your device.',
65
+ });
66
+ }
67
+ }
68
+ return (_jsxs(QrCode.Root, { value: props.qrCodeString, className: "mx-auto mt-6 w-[12.5rem] rounded-lg border border-border-primary bg-bg-brand-secondary-alt p-5 lg:w-[13rem] lg:p-6", children: [_jsxs("div", { className: "relative", children: [_jsx(QrCode.Frame, { className: "mx-auto size-[10rem] rounded-[0.25rem] border border-border-primary bg-white", children: _jsx(QrCode.Pattern, {}) }), _jsx(QrCode.Overlay, { className: "bg-white p-0.5", children: _jsx(Image, { src: qrphIcon, alt: "", className: "size-8", width: 40, height: 40 }) })] }), Capacitor.isNativePlatform() ? (_jsx("button", { type: "button", onClick: handleNativeDownload, className: "mt-5 block w-full text-center font-semibold text-sm text-text-secondary-700", children: "Download QR Code to Device" })) : (_jsx("button", { type: "button", onClick: handleWebDownload, className: "mt-5 block w-full text-center font-semibold text-sm text-text-secondary-700", children: "Download QR Code" }))] }));
69
+ }
@@ -0,0 +1,13 @@
1
+ import type { Deposit } from '../../../../types';
2
+ export type UseQRPHDepositReturn = ReturnType<typeof useQRPHDeposit>;
3
+ export declare function useQRPHDeposit(): {
4
+ view: "form" | "qrCode";
5
+ status: "waiting" | "failed" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
6
+ verify: () => void;
7
+ reset: () => void;
8
+ deposit: Deposit | null;
9
+ generateQRCode: (input: {
10
+ amount: string;
11
+ promo?: string | null;
12
+ }) => void;
13
+ };
@@ -0,0 +1,85 @@
1
+ import { useEffect, useState } from 'react';
2
+ import invariant from 'tiny-invariant';
3
+ import { useShallow } from 'zustand/shallow';
4
+ import { useCreateQRPHDepositMutation } from '../../../../client/hooks/useCreateQRPHDepositMutation.js';
5
+ import { useDepositQuery } from '../../../../client/hooks/useDepositQuery.js';
6
+ import { useGlobalStore } from '../../../../client/hooks/useGlobalStore.js';
7
+ import { useMemberVerificationQuery } from '../../../../client/hooks/useMemberVerificationQuery.js';
8
+ import { getQueryClient } from '../../../../utils/getQueryClient.js';
9
+ import { getDepositsCountQueryKey } from '../../../../utils/queryKeys.js';
10
+ export function useQRPHDeposit() {
11
+ const globalStore = useGlobalStore(useShallow((ctx) => ({
12
+ kycVerificationStatus: ctx.kycVerificationStatus,
13
+ })));
14
+ const [deposit, setDeposit] = useState(null);
15
+ const verificationQuery = useMemberVerificationQuery();
16
+ const verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
17
+ const [status, setStatus] = useState('waiting');
18
+ const view = status === 'verification-failed' ||
19
+ status === 'verification-waiting' ||
20
+ status === 'verification-success' ||
21
+ status === 'verification-processing'
22
+ ? 'qrCode'
23
+ : 'form';
24
+ const mutation = useCreateQRPHDepositMutation({
25
+ onMutate() {
26
+ setStatus('processing');
27
+ },
28
+ onSuccess(data) {
29
+ const queryClient = getQueryClient();
30
+ invariant(data.qrCode);
31
+ setStatus('verification-waiting');
32
+ queryClient.invalidateQueries({ queryKey: getDepositsCountQueryKey() });
33
+ setDeposit(data);
34
+ },
35
+ onError() {
36
+ setStatus('failed');
37
+ },
38
+ });
39
+ const generateQRCode = (input) => {
40
+ //handle new kyc process
41
+ if (verificationStatus === 'PENDING' ||
42
+ verificationStatus === 'UNVERIFIED' ||
43
+ verificationStatus === 'REJECTED' ||
44
+ verificationStatus === 'CREATED') {
45
+ globalStore.kycVerificationStatus.setOpen(true);
46
+ return;
47
+ }
48
+ else {
49
+ mutation.mutate({
50
+ amount: input.amount,
51
+ promo: input.promo ?? undefined,
52
+ });
53
+ }
54
+ };
55
+ const query = useDepositQuery(deposit?.id, {
56
+ enabled: !!deposit,
57
+ refetchInterval: 5000,
58
+ });
59
+ useEffect(() => {
60
+ if (query.data?.status === 'APPROVED' ||
61
+ query.data?.status === 'CONFIRMED') {
62
+ setStatus('verification-success');
63
+ }
64
+ if (query.data?.status === 'CANCELLED' ||
65
+ query.data?.status === 'REJECTED' ||
66
+ query.data?.status === 'FAILED') {
67
+ setStatus('verification-failed');
68
+ }
69
+ }, [query.data?.status]);
70
+ const reset = () => {
71
+ setDeposit(null);
72
+ setStatus('waiting');
73
+ };
74
+ const verify = () => {
75
+ setStatus('verification-processing');
76
+ };
77
+ return {
78
+ view,
79
+ status,
80
+ verify,
81
+ reset,
82
+ deposit,
83
+ generateQRCode,
84
+ };
85
+ }
@@ -141,12 +141,16 @@ export function Withdrawal() {
141
141
  if (parseDecimal(wallet?.balance, 0) < 1) {
142
142
  return _jsx(InsufficientBalance, {});
143
143
  }
144
- if ((!memberVerification ||
145
- memberVerification.status === 'REJECTED' ||
146
- memberVerification.status === 'UNVERIFIED') &&
147
- !allowUnverifiedAccounts) {
144
+ if (!memberVerification ||
145
+ (memberVerification.status !== 'APPROVED' &&
146
+ memberVerification.status !== 'VERIFIED' &&
147
+ memberVerification.status !== 'PENDING') ||
148
+ allowUnverifiedAccounts) {
148
149
  return _jsx(AccountVerificationRequired, {});
149
150
  }
151
+ if (memberVerification.status === 'PENDING') {
152
+ return _jsx(AccountVerificationPending, {});
153
+ }
150
154
  if (enabledPaymentMethods.length <= 0) {
151
155
  return _jsx(NoAvailablePaymentMethods, {});
152
156
  }
@@ -162,6 +166,9 @@ function AccountVerificationRequired() {
162
166
  globalStore.depositWithdrawal.setOpen(false);
163
167
  }, children: "Verify Now" })] }));
164
168
  }
169
+ function AccountVerificationPending() {
170
+ return (_jsxs("div", { className: "pt-xl", children: [_jsx("div", { className: "mx-auto flex size-12 items-center justify-center rounded-full bg-bg-warning-secondary", children: _jsx(AlertCircleIcon, { className: "size-6 text-text-featured-icon-light-warning" }) }), _jsx("h2", { className: "mt-lg text-center font-semibold text-lg", children: "Verification Pending" }), _jsx("p", { className: "mx-auto mt-xs max-w-[25rem] text-center text-sm text-text-tertiary-600", children: "Your personal verification is currently under review. You will be able to withdraw funds once your account is approved." })] }));
171
+ }
165
172
  function InsufficientBalance() {
166
173
  const setTab = useGlobalStore(useShallow((ctx) => ctx.depositWithdrawal.setTab));
167
174
  return (_jsxs("div", { className: "pt-xl", children: [_jsx("div", { className: "mx-auto flex size-12 items-center justify-center rounded-full bg-bg-warning-secondary", children: _jsx(AlertCircleIcon, { className: "size-6 text-text-featured-icon-light-warning" }) }), _jsx("h2", { className: "mt-lg text-center font-semibold text-lg", children: "Balance is very low" }), _jsx("p", { className: "mx-auto mt-xs max-w-[25rem] text-center text-sm text-text-tertiary-600", children: "No funds available for withdrawal. Please make a deposit." }), _jsx(Button, { className: "mt-3xl", onClick: () => setTab('DEPOSIT'), children: "Deposit" })] }));
@@ -0,0 +1 @@
1
+ export declare function Loading(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ export function Loading() {
4
+ return (_jsx("div", { className: "flex h-[calc(100vh-400px)] w-full items-center justify-center px-4", children: _jsxs("div", { className: "flex flex-col items-center space-y-4", children: [_jsx("div", { className: "h-10 w-10 animate-spin rounded-full border-4 border-blue-500 border-t-transparent" }), _jsx("p", { className: "font-medium text-gray-700 text-lg", children: "Loading Sports Book\u2026" })] }) }));
5
+ }
@@ -7,6 +7,7 @@ import { useState } from 'react';
7
7
  import { twMerge } from 'tailwind-merge';
8
8
  import { useShallow } from 'zustand/shallow';
9
9
  import { useGlobalStore } from '../../client/hooks/useGlobalStore.js';
10
+ import { useSessionQuery } from '../../client/hooks/useSessionQuery.js';
10
11
  import { useSignOutMutation } from '../../client/hooks/useSignOutMutation.js';
11
12
  import { getSession } from '../../client/services/getSession.js';
12
13
  import { BIOMETRIC_STORAGE_KEY } from '../../client/utils/biometric.js';
@@ -33,6 +34,8 @@ export function DisclaimerV2(props) {
33
34
  termsOfUse: ctx.termsOfUse,
34
35
  responsibleGaming: ctx.responsibleGaming,
35
36
  })));
37
+ const sessionQuery = useSessionQuery();
38
+ const isAuthenticated = sessionQuery.data?.status === 'authenticated';
36
39
  const checked = globalStore.termsOfUse.accepted && globalStore.responsibleGaming.accepted;
37
40
  const [showWarning, setShowWarning] = useState(false);
38
41
  const signOutMutation = useSignOutMutation({
@@ -84,11 +87,19 @@ export function DisclaimerV2(props) {
84
87
  disclaimer.close();
85
88
  }
86
89
  }, variant: "outline", children: "Exit" }), _jsx(Button, { type: "button", onClick: () => {
90
+ if (sessionQuery.data?.status === 'authenticated') {
91
+ disclaimer.setOpen(true);
92
+ }
87
93
  if (!checked) {
88
94
  setShowWarning(true);
89
95
  setTimeout(() => setShowWarning(false), 4000);
90
96
  return;
91
97
  }
98
+ //new flow
99
+ if (isAuthenticated) {
100
+ globalStore.termsOfUse.setNext(null);
101
+ globalStore.termsOfUse.setOpen(true);
102
+ }
92
103
  disclaimer.close();
93
104
  }, children: "I Accept" })] })] }) })] }) }));
94
105
  }
@@ -7,6 +7,7 @@ import { useState } from 'react';
7
7
  import { twMerge } from 'tailwind-merge';
8
8
  import { useShallow } from 'zustand/shallow';
9
9
  import { useGlobalStore } from '../../client/hooks/useGlobalStore.js';
10
+ import { useSessionQuery } from '../../client/hooks/useSessionQuery.js';
10
11
  import { AlertCircleIcon } from '../../icons/AlertCircleIcon.js';
11
12
  import { CheckIcon } from '../../icons/CheckIcon.js';
12
13
  import pagcorLogo from '../../images/pagcor2.png';
@@ -25,6 +26,8 @@ export function DisclaimerV3(props) {
25
26
  responsibleGaming: ctx.responsibleGaming,
26
27
  onboarding: ctx.onboarding,
27
28
  })));
29
+ const sessionQuery = useSessionQuery();
30
+ const isAuthenticated = sessionQuery.data?.status === 'authenticated';
28
31
  const checked = globalStore.termsOfUse.accepted && globalStore.responsibleGaming.accepted;
29
32
  const [showWarning, setShowWarning] = useState(false);
30
33
  return (_jsx(Dialog.Root, { open: disclaimer.open, lazyMount: true, unmountOnExit: true, closeOnEscape: false, closeOnInteractOutside: false, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, {}), _jsx(Dialog.Positioner, { children: _jsxs(Dialog.Content, { "aria-label": `${props.siteName} Player Disclaimer`, "aria-labelledby": "disclaimer-title", "aria-describedby": "disclaimer-description", className: twMerge('flex h-full scrollbar:h-2 scrollbar:w-2 w-full flex-col items-start overflow-y-auto scrollbar-thumb:rounded-full scrollbar-thumb:bg-bg-quaternary scrollbar-track:bg-transparent p-3xl lg:mx-auto lg:h-auto lg:max-h-[85vh] lg:w-[500px] lg:rounded-xl'), children: [_jsx("div", { className: "mx-auto h-auto max-w-[120px]", children: _jsx(Image, { src: props.logo, alt: `${props.siteName} logo`, width: 200, height: 100, className: "h-full w-full object-cover", draggable: false, unoptimized: true }) }), _jsxs("div", { className: "my-4 grid w-full grid-cols-2 items-center justify-center gap-3xl", children: [_jsx(Image, { src: props.pagcorLogo ?? pagcorLogo, alt: "PAGCOR logo", height: 50, width: 186, className: "mx-auto h-[43px] w-auto shrink-0 object-contain", draggable: false, unoptimized: true }), _jsx(Image, { src: props.responsibleGamingLogo ?? responsibleGamingLogo, alt: "Responsible Gaming logo", height: 50, width: 186, className: "mx-auto h-[50px] w-auto shrink-0", draggable: false, unoptimized: true })] }), _jsx("div", { className: "w-full text-center font-semibold text-2xl uppercase", id: "disclaimer-title", children: "Notice" }), _jsx("div", { className: "mb-1 text-sm text-text-secondary-700", id: "disclaimer-description", children: "By entering this website, you acknowledge and confirm:" }), _jsx("div", { className: "w-full grow", children: _jsxs(Dialog.Description, { className: "space-y-4 text-sm", children: [_jsxs("ul", { className: "space-y-1.5 text-left", "aria-label": "Restricted persons list", children: [_jsxs("li", { className: "flex gap-4 text-text-placeholder", children: [_jsx(Circle, {}), "You are 21 years old and above."] }), _jsxs("li", { className: "flex gap-4 text-text-placeholder", children: [_jsx(Circle, {}), "You are not a government official, or employee connected directly with the operation of the Government or any of its agencies, member of the Armed Forces of the Philippines including the Army, Navy, Air Force, or the Philippine Nationa Police."] }), _jsxs("li", { className: "flex gap-4 text-text-placeholder", children: [_jsx(Circle, {}), "You are not included in the PAGCOR's National Database Restricted Persons (NDRP)."] }), _jsxs("li", { className: "flex gap-4 text-text-placeholder", children: [_jsx(Circle, {}), "Funds or credits in the account of player who is found ineligible to play shall mean forfeiture of said funds/credits in favor of the Government."] }), _jsxs(Checkbox.Root, { checked: checked, onCheckedChange: (e) => {
@@ -46,6 +49,10 @@ export function DisclaimerV3(props) {
46
49
  setTimeout(() => setShowWarning(false), 4000);
47
50
  return;
48
51
  }
52
+ if (isAuthenticated) {
53
+ globalStore.termsOfUse.setNext(null);
54
+ globalStore.termsOfUse.setOpen(true);
55
+ }
49
56
  disclaimer.close();
50
57
  if (props.openOnboardingOnAgree) {
51
58
  globalStore.onboarding.setOpen(true);
@@ -0,0 +1,184 @@
1
+ @keyframes arrow-green-flash {
2
+ 0% {
3
+ color: #abefc6;
4
+ }
5
+ 100% {
6
+ color: #079455;
7
+ }
8
+ }
9
+
10
+ .animate-arrow-green-flash-1 {
11
+ animation: arrow-green-flash 0.4s infinite;
12
+ animation-delay: -0.2s;
13
+ }
14
+
15
+ .animate-arrow-green-flash-2 {
16
+ animation: arrow-green-flash 0.4s infinite;
17
+ animation-delay: -0.1s;
18
+ }
19
+
20
+ .animate-arrow-green-flash-3 {
21
+ animation: arrow-green-flash 0.4s infinite;
22
+ }
23
+
24
+ @keyframes arrow-red-flash {
25
+ 0%,
26
+ 100% {
27
+ color: #f97066;
28
+ }
29
+ 50% {
30
+ color: #fecdca;
31
+ }
32
+ }
33
+
34
+ .animate-arrow-red-flash-1 {
35
+ animation: arrow-red-flash 0.4s infinite;
36
+ }
37
+
38
+ .animate-arrow-red-flash-2 {
39
+ animation: arrow-red-flash 0.4s infinite;
40
+ animation-delay: -0.1s;
41
+ }
42
+
43
+ .animate-arrow-red-flash-3 {
44
+ animation: arrow-red-flash 0.4s infinite;
45
+ animation-delay: -0.2s;
46
+ }
47
+
48
+ /* Animated BG */
49
+ @keyframes rotate {
50
+ to {
51
+ transform: rotate(1turn);
52
+ }
53
+ }
54
+
55
+ .light-rays {
56
+ position: absolute;
57
+ top: 0;
58
+ left: 0;
59
+ right: 0;
60
+ bottom: 0;
61
+ overflow: hidden;
62
+
63
+ --first: var(--color-bg-tertiary);
64
+ --second: var(--color-bg-quaternary);
65
+ }
66
+
67
+ .light-rays::before,
68
+ .light-rays::after {
69
+ content: '';
70
+ position: absolute;
71
+ top: var(--light-rays-top, 150px);
72
+ left: calc(50% - 90px);
73
+ margin: -100vmax;
74
+ width: 200vmax;
75
+ height: 200vmax;
76
+ opacity: 0.6;
77
+ transform-origin: center;
78
+ }
79
+
80
+ .light-rays::before {
81
+ background: conic-gradient(
82
+ var(--first) 0deg 7.2deg,
83
+ var(--second) 7.2deg 14.4deg,
84
+ var(--first) 14.4deg 21.6deg,
85
+ var(--second) 21.6deg 28.8deg,
86
+ var(--first) 28.8deg 36deg,
87
+ var(--second) 36deg 43.2deg,
88
+ var(--first) 43.2deg 50.4deg,
89
+ var(--second) 50.4deg 57.6deg,
90
+ var(--first) 57.6deg 64.8deg,
91
+ var(--second) 64.8deg 72deg,
92
+ var(--first) 72deg 79.2deg,
93
+ var(--second) 79.2deg 86.4deg,
94
+ var(--first) 86.4deg 93.6deg,
95
+ var(--second) 93.6deg 100.8deg,
96
+ var(--first) 100.8deg 108deg,
97
+ var(--second) 108deg 115.2deg,
98
+ var(--first) 115.2deg 122.4deg,
99
+ var(--second) 122.4deg 129.6deg,
100
+ var(--first) 129.6deg 136.8deg,
101
+ var(--second) 136.8deg 144deg,
102
+ var(--first) 144deg 151.2deg,
103
+ var(--second) 151.2deg 158.4deg,
104
+ var(--first) 158.4deg 165.6deg,
105
+ var(--second) 165.6deg 172.8deg,
106
+ var(--first) 172.8deg 180deg,
107
+ var(--second) 180deg 187.2deg,
108
+ var(--first) 187.2deg 194.4deg,
109
+ var(--second) 194.4deg 201.6deg,
110
+ var(--first) 201.6deg 208.8deg,
111
+ var(--second) 208.8deg 216deg,
112
+ var(--first) 216deg 223.2deg,
113
+ var(--second) 223.2deg 230.4deg,
114
+ var(--first) 230.4deg 237.6deg,
115
+ var(--second) 237.6deg 244.8deg,
116
+ var(--first) 244.8deg 252deg,
117
+ var(--second) 252deg 259.2deg,
118
+ var(--first) 259.2deg 266.4deg,
119
+ var(--second) 266.4deg 273.6deg,
120
+ var(--first) 273.6deg 280.8deg,
121
+ var(--second) 280.8deg 288deg,
122
+ var(--first) 288deg 295.2deg,
123
+ var(--second) 295.2deg 302.4deg,
124
+ var(--first) 302.4deg 309.6deg,
125
+ var(--second) 309.6deg 316.8deg,
126
+ var(--first) 316.8deg 324deg,
127
+ var(--second) 324deg 331.2deg,
128
+ var(--first) 331.2deg 338.4deg,
129
+ var(--second) 338.4deg 345.6deg,
130
+ var(--first) 345.6deg 352.8deg,
131
+ var(--second) 352.8deg 360deg
132
+ );
133
+ animation: rotate 20s linear infinite;
134
+ }
135
+
136
+ @media (max-width: 1024px) {
137
+ .light-rays::before,
138
+ .light-rays::after {
139
+ left: auto;
140
+ right: 11%;
141
+ }
142
+ }
143
+
144
+ /* ScrollArea.module.css */
145
+ .scrollArea {
146
+ overflow-y: scroll;
147
+ padding-right: 4px;
148
+ }
149
+
150
+ /* WebKit-based browsers */
151
+ .scrollArea::-webkit-scrollbar {
152
+ width: 8px;
153
+ }
154
+
155
+ .scrollArea::-webkit-scrollbar-track {
156
+ background: var(--color-bg-primary-alt);
157
+ border-radius: 9999px;
158
+ }
159
+
160
+ .scrollArea::-webkit-scrollbar-thumb {
161
+ background-color: var(--color-bg-quaternary);
162
+ border-radius: 9999px;
163
+ }
164
+
165
+ @keyframes waveColor {
166
+ 0%,
167
+ 2.5% {
168
+ color: var(--wave-highlight-color);
169
+ }
170
+ 2.51%,
171
+ 100% {
172
+ color: var(--color-brand-300);
173
+ }
174
+ }
175
+
176
+ .animate-wave-color-success {
177
+ --wave-highlight-color: var(--color-success-800);
178
+ animation: waveColor 4s ease-in-out infinite;
179
+ }
180
+
181
+ .animate-wave-color-error {
182
+ --wave-highlight-color: var(--color-error-600);
183
+ animation: waveColor 4s ease-in-out infinite;
184
+ }