@opexa/portal-components 0.0.1119 → 0.0.1121

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 (65) hide show
  1. package/dist/client/hooks/useVerifyMobileNumber.d.ts +3 -0
  2. package/dist/client/hooks/useVerifyMobileNumber.js +20 -0
  3. package/dist/components/DepositWithdrawal/Deposit/AurixPayPayMayaDeposit/AurixPayGrabPayDeposit.d.ts +1 -0
  4. package/dist/components/DepositWithdrawal/Deposit/AurixPayPayMayaDeposit/AurixPayGrabPayDeposit.js +241 -0
  5. package/dist/components/DepositWithdrawal/Deposit/AurixPayQRPHDeposit/AurixPayQRPHDepositContext.d.ts +2 -2
  6. package/dist/components/DepositWithdrawal/Deposit/AurixPayQRPHDeposit/useAurixPayQRPHDeposit.d.ts +1 -1
  7. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositContext.d.ts +2 -2
  8. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/useOnlineBankDeposit.d.ts +1 -1
  9. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositContext.d.ts +2 -2
  10. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/useQRPHDeposit.d.ts +1 -1
  11. package/dist/components/KYC/KYCReview.js +5 -2
  12. package/dist/components/SignUp/SignUpDefault/SignUpDefaultForm.js +7 -4
  13. package/dist/components/SingleSignOn/SingleSignOn.d.ts +4 -0
  14. package/dist/components/SingleSignOn/SingleSignOn.js +185 -0
  15. package/dist/components/SingleSignOn/index.d.ts +1 -0
  16. package/dist/components/SingleSignOn/index.js +1 -0
  17. package/dist/constants/GameProvider.js +6 -0
  18. package/dist/lib/components/UpdateMobilePhoneNumber/UpdateMobilePhoneNumber.d.ts +1 -0
  19. package/dist/lib/components/UpdateMobilePhoneNumber/UpdateMobilePhoneNumber.js +152 -0
  20. package/dist/lib/components/UpdateMobilePhoneNumber/index.d.ts +1 -0
  21. package/dist/lib/components/UpdateMobilePhoneNumber/index.js +1 -0
  22. package/dist/types/index.d.ts +1 -1
  23. package/dist/ui/AlertDialog/AlertDialog.d.ts +154 -154
  24. package/dist/ui/AlertDialog/alertDialog.recipe.d.ts +14 -14
  25. package/dist/ui/Badge/Badge.d.ts +12 -12
  26. package/dist/ui/Badge/badge.anatomy.d.ts +1 -1
  27. package/dist/ui/Badge/badge.recipe.d.ts +3 -3
  28. package/dist/ui/Carousel/Carousel.d.ts +99 -99
  29. package/dist/ui/Carousel/carousel.recipe.d.ts +11 -11
  30. package/dist/ui/Checkbox/Checkbox.d.ts +23 -23
  31. package/dist/ui/Checkbox/checkbox.recipe.d.ts +3 -3
  32. package/dist/ui/Clipboard/Clipboard.d.ts +18 -18
  33. package/dist/ui/Clipboard/clipboard.recipe.d.ts +3 -3
  34. package/dist/ui/Collapsible/Collapsible.d.ts +20 -20
  35. package/dist/ui/Collapsible/collapsible.recipe.d.ts +5 -5
  36. package/dist/ui/Combobox/Combobox.d.ts +42 -42
  37. package/dist/ui/Combobox/combobox.recipe.d.ts +3 -3
  38. package/dist/ui/DatePicker/DatePicker.d.ts +72 -72
  39. package/dist/ui/DatePicker/datePicker.recipe.d.ts +3 -3
  40. package/dist/ui/Dialog/Dialog.d.ts +33 -33
  41. package/dist/ui/Dialog/dialog.recipe.d.ts +3 -3
  42. package/dist/ui/Drawer/Drawer.d.ts +33 -33
  43. package/dist/ui/Drawer/drawer.recipe.d.ts +3 -3
  44. package/dist/ui/Field/Field.d.ts +21 -21
  45. package/dist/ui/Field/field.recipe.d.ts +3 -3
  46. package/dist/ui/Menu/Menu.d.ts +252 -252
  47. package/dist/ui/Menu/menu.recipe.d.ts +14 -14
  48. package/dist/ui/NumberInput/NumberInput.d.ts +24 -24
  49. package/dist/ui/NumberInput/numberInput.recipe.d.ts +3 -3
  50. package/dist/ui/Popover/Popover.d.ts +88 -88
  51. package/dist/ui/Popover/popover.recipe.d.ts +8 -8
  52. package/dist/ui/SegmentGroup/SegmentGroup.d.ts +18 -18
  53. package/dist/ui/SegmentGroup/segmentGroup.recipe.d.ts +3 -3
  54. package/dist/ui/Select/Select.d.ts +45 -45
  55. package/dist/ui/Select/select.recipe.d.ts +3 -3
  56. package/dist/ui/Table/Table.d.ts +21 -21
  57. package/dist/ui/Table/table.anatomy.d.ts +1 -1
  58. package/dist/ui/Table/table.recipe.d.ts +3 -3
  59. package/dist/ui/Tabs/Tabs.d.ts +15 -15
  60. package/dist/ui/Tabs/tabs.recipe.d.ts +3 -3
  61. package/dist/utils/getProviderData.js +5 -0
  62. package/dist/utils/isDisposableEmail.js +4 -4
  63. package/package.json +1 -1
  64. package/dist/components/DigitainLauncher/DigitainAuthWall.d.ts +0 -7
  65. package/dist/components/DigitainLauncher/DigitainAuthWall.js +0 -20
@@ -0,0 +1 @@
1
+ export * from './SingleSignOn.js';
@@ -344,6 +344,12 @@ export const GAME_PROVIDER_DATA = {
344
344
  slug: 'test',
345
345
  logo: '',
346
346
  },
347
+ EVOLUTION_TAP_A_ROO: {
348
+ id: 'EVOLUTION_TAP_A_ROO',
349
+ name: 'Evolution Tap A Roo',
350
+ slug: 'evolution-tap-a-roo',
351
+ logo: '',
352
+ },
347
353
  };
348
354
  export const GAME_PROVIDERS = Object.values(GAME_PROVIDER_DATA).map(({ id }) => id);
349
355
  export const LEGACY_GAME_PROVIDERS = [
@@ -0,0 +1 @@
1
+ export declare function UpdateMobilePhoneNumber(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,152 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { zodResolver } from '@hookform/resolvers/zod';
4
+ import Image from 'next/image';
5
+ import { useEffect, useRef, useState } from 'react';
6
+ import { Controller, useForm } from 'react-hook-form';
7
+ import z from 'zod';
8
+ import { useAccountQuery } from '../../client/hooks/useAccountQuery.js';
9
+ import { useCooldown } from '../../client/hooks/useCooldown.js';
10
+ import { useLocaleInfo } from '../../client/hooks/useLocaleInfo.js';
11
+ import { useMobileNumberParser } from '../../client/hooks/useMobileNumberParser.js';
12
+ import { useSendVerificationCodeMutation } from '../../client/hooks/useSendVerificationCodeMutation.js';
13
+ import { useUpdateMobileNumber } from '../../client/hooks/useUpdateMobileNumber.js';
14
+ import { toaster } from '../../client/utils/toaster.js';
15
+ import { ArrowLeftIcon } from '../../icons/ArrowLeftIcon.js';
16
+ import inplayLogo from '../../images/inplay-logo.png';
17
+ import lightBg from '../../images/light-bg.png';
18
+ import { Button } from '../../ui/Button/index.js';
19
+ import { Dialog } from '../../ui/Dialog/index.js';
20
+ import { Field } from '../../ui/Field/index.js';
21
+ import { PinInput } from '../../ui/PinInput/index.js';
22
+ import { Portal } from '../../ui/Portal/index.js';
23
+ export function UpdateMobilePhoneNumber() {
24
+ const accountQuery = useAccountQuery();
25
+ const account = accountQuery.data;
26
+ const isAccountLoading = accountQuery.isLoading;
27
+ const hasMobileNumber = !!account?.mobileNumber;
28
+ const [isDialogOpen, setIsDialogOpen] = useState(false);
29
+ // biome-ignore lint/correctness/useExhaustiveDependencies: We only want to open the dialog when the account data loads, not on every hasMobileNumber change
30
+ useEffect(() => {
31
+ if (!isAccountLoading && !!account && !hasMobileNumber) {
32
+ setIsDialogOpen(true);
33
+ }
34
+ else if (!isAccountLoading && !!account && hasMobileNumber) {
35
+ setIsDialogOpen(false);
36
+ }
37
+ }, [isAccountLoading, account?.mobileNumber]);
38
+ const [step, setStep] = useState(1);
39
+ const sendVerificationCodeMutation = useSendVerificationCodeMutation({
40
+ onSuccess: () => {
41
+ setStep(2);
42
+ cooldown.start();
43
+ },
44
+ onError: (err) => {
45
+ toaster.error({
46
+ title: 'Sign In Failed',
47
+ description: err.message,
48
+ });
49
+ },
50
+ });
51
+ const updateMobileNumberMutation = useUpdateMobileNumber({
52
+ onSuccess: async () => {
53
+ step1Form.reset();
54
+ step2Form.reset();
55
+ setStep(1);
56
+ toaster.success({
57
+ title: 'Verification Successful',
58
+ description: 'Your mobile number has been verified.',
59
+ });
60
+ setIsDialogOpen(false);
61
+ console.log('mobile number updated successfully');
62
+ },
63
+ onError: (err) => {
64
+ const errorMessage = err.message === 'Internal Server Error'
65
+ ? `mobile number ${mobileNumberParser.format(step1Form.getValues('mobileNumber'))} is not available`
66
+ : err.message;
67
+ toaster.error({
68
+ title: 'Sign In Failed',
69
+ description: errorMessage,
70
+ });
71
+ console.log('error updating mobile number');
72
+ },
73
+ });
74
+ const localeInfo = useLocaleInfo();
75
+ const mobileNumberParser = useMobileNumberParser();
76
+ const Step1Definition = z.object({
77
+ mobileNumber: z
78
+ .string()
79
+ .min(1, 'Mobile number is required')
80
+ .superRefine((v, ctx) => {
81
+ if (!mobileNumberParser.validate(v)) {
82
+ ctx.addIssue({
83
+ code: z.ZodIssueCode.custom,
84
+ message: 'Invalid mobile number',
85
+ });
86
+ }
87
+ }),
88
+ });
89
+ const Step2Definition = z.object({
90
+ verificationCode: z.array(z.string()).superRefine((val, ctx) => {
91
+ if (val.length !== 6 || val.some((v) => v.length !== 1)) {
92
+ ctx.addIssue({
93
+ code: z.ZodIssueCode.custom,
94
+ message: 'Please enter your 6-digit verification code.',
95
+ });
96
+ }
97
+ }),
98
+ });
99
+ const step1Form = useForm({
100
+ resolver: zodResolver(Step1Definition),
101
+ defaultValues: {
102
+ mobileNumber: '',
103
+ },
104
+ });
105
+ const step2Form = useForm({
106
+ resolver: zodResolver(Step2Definition),
107
+ defaultValues: {
108
+ verificationCode: Array.from({ length: 6 }).fill(''),
109
+ },
110
+ });
111
+ const cooldown = useCooldown({
112
+ max: 60,
113
+ duration: 1000 * 60,
114
+ });
115
+ const formRef = useRef(null);
116
+ return (_jsx(Dialog.Root, { open: isDialogOpen, lazyMount: true, unmountOnExit: true, closeOnEscape: false, closeOnInteractOutside: false, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, {}), _jsx(Dialog.Positioner, { className: "flex items-center", children: _jsxs(Dialog.Content, { className: "flex w-[375px] flex-col items-center space-y-4 rounded-xl bg-[#111827] p-6 text-center", style: {
117
+ backgroundImage: `url(${lightBg.src})`,
118
+ }, children: [_jsx(Image, { src: inplayLogo, alt: "inplay logo", width: 82, height: 34, className: "h-auto w-[82px]" }), _jsxs("div", { children: [step === 1 && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "font-bold text-sm", children: ["Get ", _jsx("span", { className: "text-[#F05127]", children: "\u20B150 Bonus" }), " when you verify your account and play."] }), _jsxs("form", { className: "mt-3xl", onSubmit: step1Form.handleSubmit(async (data) => {
119
+ sendVerificationCodeMutation.mutateAsync({
120
+ channel: 'SMS',
121
+ recipient: mobileNumberParser.format(data.mobileNumber),
122
+ });
123
+ }), children: [_jsxs(Field.Root, { invalid: !!step1Form.formState.errors.mobileNumber, className: "text-left", children: [_jsx(Field.Label, { children: "Mobile Number" }), _jsxs("div", { className: "relative", children: [_jsx("div", { className: "-translate-y-1/2 absolute top-1/2 left-3.5 flex shrink-0 items-center gap-md", children: _jsx("span", { className: "text-text-placeholder", children: localeInfo.mobileNumber.areaCode }) }), _jsx(Field.Input, { style: {
124
+ paddingLeft: `calc(1.25rem + ${localeInfo.mobileNumber.areaCode.length}ch)`,
125
+ }, ...step1Form.register('mobileNumber') })] }), _jsx(Field.ErrorText, { children: step1Form.formState.errors.mobileNumber?.message })] }), _jsx(Button, { type: "submit", className: "mt-3xl", disabled: step1Form.formState.isSubmitting, children: "Send Code" })] })] })), step === 2 && (_jsxs(_Fragment, { children: [_jsx("h2", { className: "mt-xl text-center font-semibold text-lg", children: "Check your Phone" }), _jsxs("p", { className: "mt-xs text-center text-sm text-text-secondary-700", children: ["We\u2019ve sent a verification code to your mobile number", ' ', _jsx("span", { className: "font-semibold text-[#F05127]", children: mobileNumberParser.format(step1Form.getValues('mobileNumber')) }), ' ', "via text"] }), _jsxs("form", { ref: formRef, className: "mt-5", onSubmit: step2Form.handleSubmit(async ({ verificationCode }) => {
126
+ updateMobileNumberMutation.mutateAsync({
127
+ mobileNumber: mobileNumberParser.format(step1Form.getValues('mobileNumber')),
128
+ verificationCode: verificationCode.join(''),
129
+ });
130
+ }), children: [_jsx(Controller, { name: "verificationCode", control: step2Form.control, render: (o) => (_jsxs(Field.Root, { invalid: o.fieldState.invalid, children: [_jsxs(PinInput.Root, { placeholder: "0", onKeyDown: (e) => {
131
+ if (e.key === 'Backspace') {
132
+ step2Form.reset();
133
+ }
134
+ }, value: o.field.value, onValueChange: (details) => {
135
+ o.field.onChange(details.value);
136
+ o.field.onBlur();
137
+ }, otp: true, onValueComplete: () => {
138
+ formRef.current?.requestSubmit();
139
+ }, blurOnComplete: true, readOnly: step2Form.formState.isSubmitting, type: "numeric", children: [_jsxs(PinInput.Control, { className: "grid-cols-[1fr_1fr_1fr_auto_1fr_1fr_1fr] items-center gap-md", children: [_jsx(PinInput.Input, { index: 0 }), _jsx(PinInput.Input, { index: 1 }), _jsx(PinInput.Input, { index: 2 }), _jsx("span", { className: "font-medium text-2xl text-text-placeholder-subtle", children: "\u2013" }), _jsx(PinInput.Input, { index: 3 }), _jsx(PinInput.Input, { index: 4 }), _jsx(PinInput.Input, { index: 5 })] }), _jsx(PinInput.HiddenInput, {})] }), _jsx(Field.ErrorText, { children: o.fieldState.error?.message })] })) }), _jsx(Button, { type: "submit", className: "mt-4xl", disabled: step2Form.formState.isSubmitting, children: "Verify" }), _jsxs("div", { className: "mt-4 flex w-full items-center justify-center gap-xs text-xs", children: [_jsx("span", { className: "text-[#9CA3AF]", children: "Didn't receive the code?" }), _jsx("button", { type: "button", className: "font-semibold text-[#C084FC]", disabled: cooldown.cooling, onClick: async () => {
140
+ await sendVerificationCodeMutation.mutateAsync({
141
+ channel: 'SMS',
142
+ recipient: mobileNumberParser.format(step1Form.getValues('mobileNumber')),
143
+ });
144
+ cooldown.start();
145
+ }, children: cooldown.cooling
146
+ ? `Resend in ${cooldown.countdown}s`
147
+ : 'Resend' })] }), _jsx("button", { type: "button", className: "absolute top-0 left-6 mx-auto mt-3xl flex h-8 w-8 items-center gap-1 rounded-full bg-[#1f2638] font-semibold text-sm text-text-tertiary-600", onClick: () => {
148
+ setStep(1);
149
+ step2Form.reset();
150
+ cooldown.stop();
151
+ }, children: _jsx(ArrowLeftIcon, { className: "mx-auto size-5" }) })] })] }))] })] }) })] }) }));
152
+ }
@@ -0,0 +1 @@
1
+ export * from './UpdateMobilePhoneNumber';
@@ -0,0 +1 @@
1
+ export * from './UpdateMobilePhoneNumber.js';
@@ -157,7 +157,7 @@ export interface Announcement {
157
157
  dateTimeLastUpdated: string;
158
158
  }
159
159
  export type GameType = 'SLOTS' | 'SPORTS' | 'FISHING' | 'BINGO' | 'LIVE' | 'GAMES' | 'TABLE' | 'SPECIALTY' | 'NUMERICAL' | 'NUMERIC' | 'ARCADE';
160
- export type GameProvider = 'JILI' | 'JILI_BINGO' | 'PGSOFT' | 'FACHAI' | 'BTI' | 'DG' | 'PLAYTECH' | 'E2E' | 'ONEAPI_EVOLUTION' | 'EVOLUTION' | 'EVOLUTION_NETENT' | 'EVOLUTION_REDTIGER' | 'MEGABALL' | 'MEGA2SPIN' | 'DARWIN' | 'RTG' | 'DRBINGO' | 'HOLLYWOODTV' | 'CQ9' | 'JDB' | 'HABANERO' | 'SPINIX' | 'JOKER' | 'HACKSAW' | 'JDBGTF' | 'JDBSPRIBE' | 'MICROGAMING' | 'RELAXGAMING' | 'EVOPLAY' | 'BOOONGO' | 'BGAMING' | 'KINGMAKER' | 'KINGMIDAS' | 'YELLOWBAT' | 'ETENGJUE' | 'SABA' | 'PRAGMATICPLAY' | 'SPRIBE' | 'EZUGI' | 'ALIZE' | 'DIGITAIN' | 'BNG' | 'NO_LIMIT_CITY' | 'BIG_TIME_GAMING' | 'SAGAMING' | 'ONEAPI_SPADEGAMING' | 'JK8' | 'RUBYPLAY' | 'EVOLUTIONNETENT' | 'TEST';
160
+ export type GameProvider = 'JILI' | 'JILI_BINGO' | 'PGSOFT' | 'FACHAI' | 'BTI' | 'DG' | 'PLAYTECH' | 'E2E' | 'ONEAPI_EVOLUTION' | 'EVOLUTION' | 'EVOLUTION_NETENT' | 'EVOLUTION_REDTIGER' | 'EVOLUTION_TAP_A_ROO' | 'MEGABALL' | 'MEGA2SPIN' | 'DARWIN' | 'RTG' | 'DRBINGO' | 'HOLLYWOODTV' | 'CQ9' | 'JDB' | 'HABANERO' | 'SPINIX' | 'JOKER' | 'HACKSAW' | 'JDBGTF' | 'JDBSPRIBE' | 'MICROGAMING' | 'RELAXGAMING' | 'EVOPLAY' | 'BOOONGO' | 'BGAMING' | 'KINGMAKER' | 'KINGMIDAS' | 'YELLOWBAT' | 'ETENGJUE' | 'SABA' | 'PRAGMATICPLAY' | 'SPRIBE' | 'EZUGI' | 'ALIZE' | 'DIGITAIN' | 'BNG' | 'NO_LIMIT_CITY' | 'BIG_TIME_GAMING' | 'SAGAMING' | 'ONEAPI_SPADEGAMING' | 'JK8' | 'RUBYPLAY' | 'EVOLUTIONNETENT' | 'TEST';
161
161
  export type GameStatus = 'ACTIVE' | 'INACTIVE';
162
162
  export type GameTag = 'HOT' | 'hot' | 'NEW' | 'new' | 'TOP' | 'top' | 'POPULAR' | 'popular' | (string & {});
163
163
  export interface Game {