@opexa/portal-components 0.0.920 → 0.0.921

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 (84) hide show
  1. package/dist/components/AccountInfo/AccountInfo.js +5 -3
  2. package/dist/components/AccountSecurity/AccountSecurity.js +6 -3
  3. package/dist/components/AccountVerification/AccountVerification.js +1 -1
  4. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositContext.d.ts +2 -2
  5. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/useOnlineBankDeposit.d.ts +1 -1
  6. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/QRPHDepositContext.d.ts +4 -4
  7. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit__legacy/useQRPHDeposit.d.ts +2 -2
  8. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/OnlineBankDepositContext.d.ts +4 -4
  9. package/dist/components/DepositWithdrawal/Deposit__legacy/OnlineBankDeposit/useOnlineBankDeposit.d.ts +2 -2
  10. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/QRPHDepositContext.d.ts +4 -4
  11. package/dist/components/DepositWithdrawal/Deposit__legacy/QRPHDeposit/useQRPHDeposit.d.ts +2 -2
  12. package/dist/components/KYC/KYCVerificationStatus.lazy.js +4 -7
  13. package/dist/components/ResponsibleGaming/ResponsibleGamingV2.lazy.js +37 -14
  14. package/dist/components/TermsOfUse/TermsOfUseV2.lazy.js +35 -14
  15. package/dist/icons/ScrollToBottomIcon.js +1 -1
  16. package/dist/icons/ScrollToTopIcon.d.ts +2 -0
  17. package/dist/icons/ScrollToTopIcon.js +4 -0
  18. package/dist/images/alert-circle-icon.png +0 -0
  19. package/dist/schemas/forgotPasswordSchema.d.ts +4 -4
  20. package/dist/ui/AlertDialog/AlertDialog.d.ts +55 -55
  21. package/dist/ui/AlertDialog/alertDialog.recipe.d.ts +5 -5
  22. package/dist/ui/Badge/Badge.d.ts +12 -12
  23. package/dist/ui/Badge/badge.anatomy.d.ts +1 -1
  24. package/dist/ui/Badge/badge.recipe.d.ts +3 -3
  25. package/dist/ui/DatePicker/DatePicker.d.ts +72 -72
  26. package/dist/ui/DatePicker/datePicker.recipe.d.ts +3 -3
  27. package/dist/ui/Dialog/Dialog.d.ts +33 -33
  28. package/dist/ui/Dialog/dialog.recipe.d.ts +3 -3
  29. package/dist/ui/Drawer/Drawer.d.ts +33 -33
  30. package/dist/ui/Drawer/drawer.recipe.d.ts +3 -3
  31. package/dist/ui/Menu/Menu.d.ts +198 -198
  32. package/dist/ui/Menu/menu.recipe.d.ts +11 -11
  33. package/dist/ui/Popover/Popover.d.ts +88 -88
  34. package/dist/ui/Popover/popover.recipe.d.ts +8 -8
  35. package/package.json +1 -1
  36. package/dist/components/Banner/Banner.client.d.ts +0 -12
  37. package/dist/components/Banner/Banner.client.js +0 -49
  38. package/dist/components/DepositWithdrawal/AiOPaymentMethods.d.ts +0 -11
  39. package/dist/components/DepositWithdrawal/AiOPaymentMethods.js +0 -55
  40. package/dist/components/DigitainLauncher/Loading.d.ts +0 -1
  41. package/dist/components/DigitainLauncher/Loading.js +0 -5
  42. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.module.css +0 -184
  43. package/dist/components/Jackpots/JackpotsList/JackpotsListItem.module.css +0 -184
  44. package/dist/components/KYC/BasicInformation.d.ts +0 -1
  45. package/dist/components/KYC/BasicInformation.js +0 -101
  46. package/dist/components/KYC/IdentityVerification.d.ts +0 -1
  47. package/dist/components/KYC/IdentityVerification.js +0 -120
  48. package/dist/components/KYC/Indicator.d.ts +0 -1
  49. package/dist/components/KYC/Indicator.js +0 -8
  50. package/dist/components/KYC/KYC.lazy.d.ts +0 -6
  51. package/dist/components/KYC/KYC.lazy.js +0 -45
  52. package/dist/components/KYC/KYCContext.d.ts +0 -6
  53. package/dist/components/KYC/KYCContext.js +0 -2
  54. package/dist/components/KYC/PersonalInformation.d.ts +0 -1
  55. package/dist/components/KYC/PersonalInformation.js +0 -122
  56. package/dist/components/KYC/useKYC.d.ts +0 -25
  57. package/dist/components/KYC/useKYC.js +0 -38
  58. package/dist/components/PortalProvider/CXDTokenObserver.d.ts +0 -1
  59. package/dist/components/PortalProvider/CXDTokenObserver.js +0 -30
  60. package/dist/components/PortalProvider/LinkGoogleAccountObserver.d.ts +0 -1
  61. package/dist/components/PortalProvider/LinkGoogleAccountObserver.js +0 -29
  62. package/dist/components/SessionWatcher/SessionWatcher.d.ts +0 -1
  63. package/dist/components/SessionWatcher/SessionWatcher.js +0 -20
  64. package/dist/components/SessionWatcher/index.d.ts +0 -1
  65. package/dist/components/SessionWatcher/index.js +0 -1
  66. package/dist/components/SignIn/utils.d.ts +0 -8
  67. package/dist/components/SignIn/utils.js +0 -26
  68. package/dist/constants/Branches.d.ts +0 -2
  69. package/dist/constants/Branches.js +0 -42
  70. package/dist/images/responsible-gaming-yellow.png +0 -0
  71. package/dist/third-parties/FacebookPixel/FacebookPixel.d.ts +0 -4
  72. package/dist/third-parties/FacebookPixel/FacebookPixel.js +0 -4
  73. package/dist/third-parties/FacebookPixel/api.d.ts +0 -0
  74. package/dist/third-parties/FacebookPixel/api.js +0 -1
  75. package/dist/third-parties/FacebookPixel/index.d.ts +0 -1
  76. package/dist/third-parties/FacebookPixel/index.js +0 -1
  77. package/dist/third-parties/GoogleRecaptcha/GoogleRecaptcha.d.ts +0 -4
  78. package/dist/third-parties/GoogleRecaptcha/GoogleRecaptcha.js +0 -4
  79. package/dist/third-parties/GoogleRecaptcha/api.d.ts +0 -0
  80. package/dist/third-parties/GoogleRecaptcha/api.js +0 -1
  81. package/dist/third-parties/GoogleRecaptcha/index.d.ts +0 -1
  82. package/dist/third-parties/GoogleRecaptcha/index.js +0 -1
  83. package/dist/third-parties/index.d.ts +0 -2
  84. package/dist/third-parties/index.js +0 -2
@@ -29,6 +29,7 @@ import { FacebookIcon } from '../../icons/FacebookIcon.js';
29
29
  import { GoogleIcon } from '../../icons/GoogleIcon.js';
30
30
  import { LinkBroken02Icon } from '../../icons/LinkBroken02Icon.js';
31
31
  import { XIcon } from '../../icons/XIcon.js';
32
+ import AlertCircleIconImage from '../../images/alert-circle-icon.png';
32
33
  import avatarPlaceholder from '../../images/placeholder-avatar.png';
33
34
  import { Button } from '../../ui/Button/index.js';
34
35
  import { Dialog } from '../../ui/Dialog/index.js';
@@ -204,9 +205,7 @@ function ContactInfo({ variant }) {
204
205
  });
205
206
  }
206
207
  }, [account, form, parse]);
207
- return (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("h2", { className: "grow font-semibold text-sm text-text-secondary-700", children: "Contact Info" }), _jsx(ark.svg, { asChild: true, className: twMerge('size-6', profileCompletion?.personalInformation
208
- ? 'text-text-success-primary'
209
- : 'text-text-warning-primary'), children: profileCompletion?.personalInformation ? (_jsx(CheckVerified02Icon, {})) : (_jsx(AlertCircleIcon, {})) })] }), _jsxs("form", { className: "mt-5 rounded-xl border border-border-secondary bg-bg-primary-alt shadow-xs", onSubmit: form.handleSubmit((data) => {
208
+ return (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("h2", { className: "grow font-semibold text-sm text-text-secondary-700", children: "Contact Info" }), profileCompletion?.personalInformation ? (_jsx(ark.svg, { asChild: true, className: "size-6 text-text-success-primary", children: _jsx(CheckVerified02Icon, {}) })) : (_jsxs("div", { className: "flex items-center gap-1 rounded-sm border border-[#93370d] bg-[#4e1d09] px-sm py-xs", children: [_jsx(AlertCircleIcon, { className: "h-5 w-5 text-[#FEC84B]" }), _jsx("span", { className: "m-0 text-[#FEC84B] text-xs", children: "Not Set" })] }))] }), _jsx(AlertWarning, { title: "Please add an email address to your account to receive important notifications.", className: "my-3" }), _jsxs("form", { className: "rounded-xl border border-border-secondary bg-bg-primary-alt shadow-xs", onSubmit: form.handleSubmit((data) => {
210
209
  updateAccountMutation.mutate({
211
210
  emailAddress: data.emailAddress && account?.emailAddress !== data.emailAddress
212
211
  ? data.emailAddress
@@ -316,3 +315,6 @@ function UnlinkGoogleAccount() {
316
315
  unlinkGoogleMutation.mutate(account.id);
317
316
  }, children: "Disconnect" })] })) })] }) })] })] }));
318
317
  }
318
+ function AlertWarning({ title, className, }) {
319
+ return (_jsxs("div", { className: twMerge('flex items-center gap-2 rounded-xl border border-border-secondary bg-bg-primary-alt p-xl', className), children: [_jsx(Image, { src: AlertCircleIconImage, alt: "Alert", className: "w-10 object-contain", draggable: false }), _jsx("p", { className: "font-semibold text-sm text-text-tertiary-600", children: title })] }));
320
+ }
@@ -3,6 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { createListCollection } from '@ark-ui/react/collection';
4
4
  import { ark } from '@ark-ui/react/factory';
5
5
  import { zodResolver } from '@hookform/resolvers/zod';
6
+ import Image from 'next/image';
6
7
  import { useForm } from 'react-hook-form';
7
8
  import { twMerge } from 'tailwind-merge';
8
9
  import { z } from 'zod';
@@ -16,6 +17,7 @@ import { CheckVerified02Icon } from '../../icons/CheckVerified02Icon.js';
16
17
  import { ChevronDownIcon } from '../../icons/ChevronDownIcon.js';
17
18
  import { EyeIcon } from '../../icons/EyeIcon.js';
18
19
  import { EyeOffIcon } from '../../icons/EyeOffIcon.js';
20
+ import AlertCircleIconImage from '../../images/alert-circle-icon.png';
19
21
  import { Button } from '../../ui/Button/index.js';
20
22
  import { Field } from '../../ui/Field/index.js';
21
23
  import { PasswordInput } from '../../ui/PasswordInput/index.js';
@@ -158,14 +160,15 @@ function TransactionPassword() {
158
160
  confirmPassword: '',
159
161
  },
160
162
  });
161
- return (_jsxs("div", { children: [_jsxs("div", { className: "flex items-start gap-8", children: [_jsxs("div", { className: "grow", children: [_jsx("h2", { className: "font-semibold text-sm text-text-secondary-700", children: "Transaction password" }), _jsx("p", { className: "text-sm text-text-tertiary-600", children: "The transaction password secures and confirms your wallet withdrawals." })] }), _jsx(ark.svg, { asChild: true, className: twMerge('size-6', profileCompletion?.transactionPassword
162
- ? 'text-text-success-primary'
163
- : 'text-text-warning-primary'), children: profileCompletion?.transactionPassword ? (_jsx(CheckVerified02Icon, {})) : (_jsx(AlertCircleIcon, {})) })] }), _jsxs("form", { className: "mt-5 rounded-xl border border-border-secondary bg-bg-primary-alt shadow-xs", onSubmit: form.handleSubmit((data) => {
163
+ return (_jsxs("div", { children: [_jsxs("div", { className: "flex items-start gap-8", children: [_jsxs("div", { className: "grow", children: [_jsx("h2", { className: "font-semibold text-sm text-text-secondary-700", children: "Transaction password" }), _jsx("p", { className: "text-sm text-text-tertiary-600", children: "The transaction password secures and confirms your wallet withdrawals." })] }), profileCompletion?.personalInformation ? (_jsx(ark.svg, { asChild: true, className: "size-6 text-text-success-primary", children: _jsx(CheckVerified02Icon, {}) })) : (_jsxs("div", { className: "flex items-center gap-1 rounded-sm border border-[#93370d] bg-[#4e1d09] px-sm py-xs", children: [_jsx(AlertCircleIcon, { className: "h-5 w-5 text-[#FEC84B]" }), _jsx("span", { className: "m-0 text-nowrap text-[#FEC84B] text-xs", children: "Not Set" })] }))] }), _jsx(AlertWarning, { title: "Please set your transaction password. This is required when making withdrawals and helps secure your account.", className: "my-3" }), _jsxs("form", { className: "mt-5 rounded-xl border border-border-secondary bg-bg-primary-alt shadow-xs", onSubmit: form.handleSubmit((data) => {
164
164
  updateAccountMutation.mutate({
165
165
  transactionPassword: data.password,
166
166
  });
167
167
  }), children: [_jsxs("div", { className: "px-xl py-5 lg:px-3xl lg:py-5", children: [_jsxs(Field.Root, { invalid: !!form.formState.errors.password, children: [_jsxs(PasswordInput.Root, { children: [_jsx(PasswordInput.Label, { children: "Password" }), _jsxs(PasswordInput.Control, { children: [_jsx(PasswordInput.Input, { ...form.register('password') }), _jsx(PasswordInput.VisibilityTrigger, { children: _jsx(PasswordInput.Indicator, { fallback: _jsx(EyeOffIcon, {}), asChild: true, children: _jsx(EyeIcon, {}) }) })] })] }), _jsx(Field.ErrorText, { children: form.formState.errors.password?.message })] }), _jsxs(Field.Root, { className: "mt-6", invalid: !!form.formState.errors.confirmPassword, children: [_jsxs(PasswordInput.Root, { children: [_jsx(PasswordInput.Label, { children: "Confirm Password" }), _jsxs(PasswordInput.Control, { children: [_jsx(PasswordInput.Input, { ...form.register('confirmPassword') }), _jsx(PasswordInput.VisibilityTrigger, { children: _jsx(PasswordInput.Indicator, { fallback: _jsx(EyeOffIcon, {}), asChild: true, children: _jsx(EyeIcon, {}) }) })] })] }), _jsx(Field.ErrorText, { children: form.formState.errors.confirmPassword?.message })] })] }), form.formState.isDirty && (_jsxs("div", { className: "flex justify-end gap-lg border-border-secondary border-t px-xl py-lg lg:px-3xl lg:py-xl", children: [_jsx(Button, { size: "sm", variant: "outline", fullWidth: false, disabled: updateAccountMutation.isPending, onClick: () => form.reset(), children: "Cancel" }), _jsx(Button, { type: "submit", size: "sm", fullWidth: false, disabled: !form.formState.isValid || updateAccountMutation.isPending, children: "Save Changes" })] }))] })] }));
168
168
  }
169
+ function AlertWarning({ title, className, }) {
170
+ return (_jsxs("div", { className: twMerge('flex items-center gap-2 rounded-xl border border-border-secondary bg-bg-primary-alt p-xl', className), children: [_jsx(Image, { src: AlertCircleIconImage, alt: "Alert", className: "w-10 object-contain", draggable: false }), _jsx("p", { className: "font-semibold text-sm text-text-tertiary-600", children: title })] }));
171
+ }
169
172
  const secretQuestionCollection = createListCollection({
170
173
  items: SECRET_QUESTIONS,
171
174
  itemToValue: (item) => item,
@@ -53,7 +53,7 @@ function Status__Missing() {
53
53
  return (_jsxs("div", { className: "mt-6 flex flex-col gap-2 rounded-xl border border-border-primary bg-bg-primary-alt p-xl shadow-xs lg:flex-row", children: [_jsx("div", { className: "flex size-[2.1875rem] items-center justify-center rounded-full border-2 border-text-warning-primary/10", children: _jsx("div", { className: "flex size-[1.666625rem] items-center justify-center rounded-full border-2 border-text-warning-primary/30", children: _jsx(AlertCircleIcon, { className: "size-5 text-text-warning-primary" }) }) }), _jsx("p", { className: "max-w-[800px] text-sm text-text-tertiary-600", children: "To serve you better and unlock all features, please provide valid identification documents. This helps protect your account and makes recovery easier if ever needed." })] }));
54
54
  }
55
55
  function Status__Pending() {
56
- return (_jsxs("div", { className: "mt-6 flex flex-col gap-2 rounded-xl border border-border-primary bg-bg-primary-alt p-xl shadow-xs lg:flex-row", children: [_jsx("div", { className: "flex size-[2.1875rem] items-center justify-center rounded-full border-2 border-text-warning-primary/10", children: _jsx("div", { className: "flex size-[1.666625rem] items-center justify-center rounded-full border-2 border-text-warning-primary/30", children: _jsx(FileSearch02Icon, { className: "size-5 text-text-warning-primary" }) }) }), _jsxs("div", { children: [_jsx("h2", { className: "font-semibold text-sm text-text-secondary-700", children: "Under review" }), _jsx("p", { className: "mt-xs text-sm text-text-tertiary-600", children: "To serve you better and unlock all features, please provide valid identification documents. This helps protect your account and makes recovery easier if ever needed." })] })] }));
56
+ return (_jsxs("div", { className: "mt-6 flex flex-col gap-2 rounded-xl border border-border-primary bg-bg-primary-alt p-xl shadow-xs lg:flex-row", children: [_jsx("div", { className: "flex size-[2.1875rem] items-center justify-center rounded-full border-2 border-text-warning-primary/10", children: _jsx("div", { className: "flex size-[1.666625rem] items-center justify-center rounded-full border-2 border-text-warning-primary/30", children: _jsx(FileSearch02Icon, { className: "size-5 text-text-warning-primary" }) }) }), _jsxs("div", { children: [_jsx("h2", { className: "font-semibold text-sm text-text-secondary-700", children: "Under review" }), _jsx("p", { className: "mt-xs text-sm text-text-tertiary-600", children: "Your documents have been successfully submitted and are currently under review. This process may take some time. You will be notified once verification is complete." })] })] }));
57
57
  }
58
58
  function Status__Success() {
59
59
  return (_jsxs("div", { className: "mt-6 flex flex-col gap-2 rounded-xl border border-border-primary bg-bg-primary-alt p-xl shadow-xs lg:flex-row", children: [_jsx("div", { className: "flex size-[2.1875rem] items-center justify-center rounded-full border-2 border-text-success-primary/10", children: _jsx("div", { className: "flex size-[1.666625rem] items-center justify-center rounded-full border-2 border-text-success-primary/30", children: _jsx(FileCheck02Icon, { className: "size-5 text-text-success-primary" }) }) }), _jsxs("div", { children: [_jsx("h2", { className: "font-semibold text-sm text-text-secondary-700", children: "Verification successful" }), _jsx("p", { className: "mt-xs text-sm text-text-tertiary-600", children: "Your account has been successfully verified. You now have full access to all features and improved account security." })] })] }));
@@ -1,7 +1,7 @@
1
1
  export declare const OnlineBankDepositContext: (props: {
2
2
  value: {
3
3
  view: "form" | "vca";
4
- status: "waiting" | "failed" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
4
+ status: "failed" | "waiting" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
5
5
  verify: () => void;
6
6
  reset: () => void;
7
7
  deposit: import("../../../../types").Deposit | null;
@@ -14,7 +14,7 @@ export declare const OnlineBankDepositContext: (props: {
14
14
  children?: import("react").ReactNode | undefined;
15
15
  }) => React.ReactNode, useOnlineBankDepositContext: () => {
16
16
  view: "form" | "vca";
17
- status: "waiting" | "failed" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
17
+ status: "failed" | "waiting" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
18
18
  verify: () => void;
19
19
  reset: () => void;
20
20
  deposit: import("../../../../types").Deposit | null;
@@ -2,7 +2,7 @@ import type { Deposit } from '../../../../types';
2
2
  export type UseOnlineBankDepositReturn = ReturnType<typeof useOnlineBankDeposit>;
3
3
  export declare function useOnlineBankDeposit(): {
4
4
  view: "form" | "vca";
5
- status: "waiting" | "failed" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
5
+ status: "failed" | "waiting" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
6
6
  verify: () => void;
7
7
  reset: () => void;
8
8
  deposit: Deposit | null;
@@ -1,7 +1,7 @@
1
1
  export declare const QRPHDepositContext: (props: {
2
2
  value: {
3
- view: "form" | "qrCode";
4
- status: "waiting" | "failed" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
3
+ view: "qrCode" | "form";
4
+ status: "waiting" | "processing" | "failed" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
5
5
  verify: () => void;
6
6
  reset: () => void;
7
7
  deposit: import("../../../../types").Deposit | null;
@@ -13,8 +13,8 @@ export declare const QRPHDepositContext: (props: {
13
13
  } & {
14
14
  children?: import("react").ReactNode | undefined;
15
15
  }) => React.ReactNode, useQRPHDepositContext: () => {
16
- view: "form" | "qrCode";
17
- status: "waiting" | "failed" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
16
+ view: "qrCode" | "form";
17
+ status: "waiting" | "processing" | "failed" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
18
18
  verify: () => void;
19
19
  reset: () => void;
20
20
  deposit: import("../../../../types").Deposit | null;
@@ -1,8 +1,8 @@
1
1
  import type { Deposit } from '../../../../types';
2
2
  export type UseQRPHDepositReturn = ReturnType<typeof useQRPHDeposit>;
3
3
  export declare function useQRPHDeposit(): {
4
- view: "form" | "qrCode";
5
- status: "waiting" | "failed" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
4
+ view: "qrCode" | "form";
5
+ status: "waiting" | "processing" | "failed" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
6
6
  verify: () => void;
7
7
  reset: () => void;
8
8
  deposit: Deposit | null;
@@ -1,7 +1,7 @@
1
1
  export declare const OnlineBankDepositContext: (props: {
2
2
  value: {
3
- view: "form" | "vca";
4
- status: "waiting" | "failed" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
3
+ view: "vca" | "form";
4
+ status: "waiting" | "processing" | "failed" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
5
5
  verify: () => void;
6
6
  reset: () => void;
7
7
  deposit: import("../../../../types").Deposit | null;
@@ -13,8 +13,8 @@ export declare const OnlineBankDepositContext: (props: {
13
13
  } & {
14
14
  children?: import("react").ReactNode | undefined;
15
15
  }) => React.ReactNode, useOnlineBankDepositContext: () => {
16
- view: "form" | "vca";
17
- status: "waiting" | "failed" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
16
+ view: "vca" | "form";
17
+ status: "waiting" | "processing" | "failed" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
18
18
  verify: () => void;
19
19
  reset: () => void;
20
20
  deposit: import("../../../../types").Deposit | null;
@@ -1,8 +1,8 @@
1
1
  import type { Deposit } from '../../../../types';
2
2
  export type UseOnlineBankDepositReturn = ReturnType<typeof useOnlineBankDeposit>;
3
3
  export declare function useOnlineBankDeposit(): {
4
- view: "form" | "vca";
5
- status: "waiting" | "failed" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
4
+ view: "vca" | "form";
5
+ status: "waiting" | "processing" | "failed" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
6
6
  verify: () => void;
7
7
  reset: () => void;
8
8
  deposit: Deposit | null;
@@ -1,7 +1,7 @@
1
1
  export declare const QRPHDepositContext: (props: {
2
2
  value: {
3
- view: "form" | "qrCode";
4
- status: "waiting" | "failed" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
3
+ view: "qrCode" | "form";
4
+ status: "waiting" | "processing" | "failed" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
5
5
  verify: () => void;
6
6
  reset: () => void;
7
7
  deposit: import("../../../../types").Deposit | null;
@@ -13,8 +13,8 @@ export declare const QRPHDepositContext: (props: {
13
13
  } & {
14
14
  children?: import("react").ReactNode | undefined;
15
15
  }) => React.ReactNode, useQRPHDepositContext: () => {
16
- view: "form" | "qrCode";
17
- status: "waiting" | "failed" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
16
+ view: "qrCode" | "form";
17
+ status: "waiting" | "processing" | "failed" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
18
18
  verify: () => void;
19
19
  reset: () => void;
20
20
  deposit: import("../../../../types").Deposit | null;
@@ -1,8 +1,8 @@
1
1
  import type { Deposit } from '../../../../types';
2
2
  export type UseQRPHDepositReturn = ReturnType<typeof useQRPHDeposit>;
3
3
  export declare function useQRPHDeposit(): {
4
- view: "form" | "qrCode";
5
- status: "waiting" | "failed" | "processing" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
4
+ view: "qrCode" | "form";
5
+ status: "waiting" | "processing" | "failed" | "verification-waiting" | "verification-processing" | "verification-failed" | "verification-success";
6
6
  verify: () => void;
7
7
  reset: () => void;
8
8
  deposit: Deposit | null;
@@ -19,18 +19,15 @@ export function KYCVerificationStatus() {
19
19
  const icons = status === 'PENDING' ? bellIcon : alertIcon;
20
20
  return (_jsx(Dialog.Root, { open: globalStore.kycVerificationStatus.open, onOpenChange: (details) => {
21
21
  globalStore.kycVerificationStatus.setOpen(details.open);
22
- }, closeOnEscape: false, closeOnInteractOutside: false, lazyMount: true, unmountOnExit: true, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "!z-[calc(var(--z-dialog)+3)]" }), _jsx(Dialog.Positioner, { className: "!z-[calc(var(--z-dialog)+4)] flex items-center justify-center", children: _jsx(Dialog.Content, { className: "mx-auto h-fit w-[450px] overflow-y-auto rounded-lg bg-bg-primary", children: _jsxs("div", { className: "p-3xl text-center", children: [_jsx("div", { className: "mb-3xl grid h-[200px] w-full place-items-center rounded-xl bg-radial from-40% from-button-primary-bg to-bg-brand-solid", children: _jsx(Image, { src: icons, alt: "icon", className: "w-60 object-contain", draggable: false, width: 120, height: 120 }) }), _jsxs("h1", { className: "font-semibold text-lg text-white", children: [status === 'PENDING' && 'Verification in Progress', status === 'REJECTED' && 'Verification Rejected', status === 'UNVERIFIED' ||
23
- (status === 'CREATED' && 'Verification Required')] }), _jsxs("p", { className: "mb-4xl text-[#94969C] text-base", children: [status === 'PENDING' &&
22
+ }, closeOnEscape: false, closeOnInteractOutside: false, lazyMount: true, unmountOnExit: true, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "!z-[calc(var(--z-dialog)+3)]" }), _jsx(Dialog.Positioner, { className: "!z-[calc(var(--z-dialog)+4)] flex items-center justify-center", children: _jsx(Dialog.Content, { className: "mx-auto h-fit w-[450px] overflow-y-auto rounded-lg bg-bg-primary", children: _jsxs("div", { className: "p-3xl text-center", children: [_jsx("div", { className: "mb-3xl grid h-[200px] w-full place-items-center rounded-xl bg-radial from-40% from-button-primary-bg to-bg-brand-solid", children: _jsx(Image, { src: icons, alt: "icon", className: "w-60 object-contain", draggable: false, width: 120, height: 120 }) }), _jsxs("h1", { className: "font-semibold text-lg text-white", children: [status === 'PENDING' && 'Verification in Progress', status === 'REJECTED' && 'Verification Rejected', status === 'UNVERIFIED' && 'Verification Required'] }), _jsxs("p", { className: "mb-4xl text-[#94969C] text-base", children: [status === 'PENDING' &&
24
23
  `Your account verification is still under review. Please wait
25
24
  until it's approved before you can continue playing or
26
25
  depositing.`, status === 'REJECTED' &&
27
- 'Your account verification was not approved. Please resubmit your verification to regain full access.', status === 'UNVERIFIED' ||
28
- (status === 'CREATED' &&
29
- 'Your account is not yet verified. Please complete the verification process to continue playing or depositing.')] }), _jsxs(Button, { variant: "solid", className: twMerge('mb-2 w-full', status === 'PENDING' && 'hidden'), onClick: () => {
26
+ 'Your account verification was not approved. Please resubmit your verification to regain full access.', status === 'UNVERIFIED' &&
27
+ 'Your account is not yet verified. Please complete the verification process to continue playing or depositing.'] }), _jsxs(Button, { variant: "solid", className: twMerge('mb-2 w-full', status === 'PENDING' && 'hidden'), onClick: () => {
30
28
  globalStore.kycVerificationStatus.setOpen(false);
31
29
  globalStore.kyc.setOpen(true);
32
- }, children: [status === 'REJECTED' && 'Resubmit Verification', status === 'UNVERIFIED' ||
33
- (status === 'CREATED' && 'Verify Now')] }), _jsx(Button, { type: "button", variant: "outline", onClick: () => {
30
+ }, children: [status === 'REJECTED' && 'Resubmit Verification', status === 'UNVERIFIED' && 'Verify Now'] }), _jsx(Button, { type: "button", variant: "outline", onClick: () => {
34
31
  globalStore.kycVerificationStatus.setOpen(false);
35
32
  }, children: "Close" })] }) }) })] }) }));
36
33
  }
@@ -1,17 +1,17 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import Image, {} from 'next/image';
3
- import { useRef } from 'react';
3
+ import { useEffect, useRef, useState } from 'react';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import { useShallow } from 'zustand/shallow';
6
6
  import { useGlobalStore } from '../../client/hooks/useGlobalStore.js';
7
7
  import { ScrollToBottomIcon } from '../../icons/ScrollToBottomIcon.js';
8
- import decorativebackground from '../../images/decorative-patern.png';
9
- import pagcorLogo from '../../images/pagcor.png';
10
- import responsibleGamingLogo from '../../images/responsible-gaming.png';
8
+ import { ScrollToTopIcon } from '../../icons/ScrollToTopIcon.js';
11
9
  import { Button } from '../../ui/Button/index.js';
12
10
  import { Dialog } from '../../ui/Dialog/index.js';
13
11
  import { Portal } from '../../ui/Portal/index.js';
14
12
  export function ResponsibleGamingV2(props) {
13
+ const [hasReachedBottom, setHasReachedBottom] = useState(false);
14
+ const [isAtBottom, setIsAtBottom] = useState(false);
15
15
  const scrollableContentRef = useRef(null);
16
16
  const globalStore = useGlobalStore(useShallow((ctx) => ({
17
17
  signIn: ctx.signIn,
@@ -19,6 +19,16 @@ export function ResponsibleGamingV2(props) {
19
19
  disclaimer: ctx.disclaimer,
20
20
  responsibleGaming: ctx.responsibleGaming,
21
21
  })));
22
+ useEffect(() => {
23
+ if (scrollableContentRef.current) {
24
+ const { scrollHeight, clientHeight } = scrollableContentRef.current;
25
+ const atBottom = scrollHeight <= clientHeight;
26
+ setIsAtBottom(atBottom);
27
+ if (atBottom) {
28
+ setHasReachedBottom(true);
29
+ }
30
+ }
31
+ }, []);
22
32
  return (_jsx(Dialog.Root, { open: globalStore.responsibleGaming.open, onOpenChange: (details) => {
23
33
  globalStore.responsibleGaming.setOpen(details.open);
24
34
  if (!details.open)
@@ -34,14 +44,27 @@ export function ResponsibleGamingV2(props) {
34
44
  globalStore.disclaimer.setOpen(true);
35
45
  }
36
46
  globalStore.responsibleGaming.setNext(null);
37
- }, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "z-popover" }), _jsx(Dialog.Positioner, { className: "z-popover", children: _jsxs(Dialog.Content, { className: twMerge('relative flex h-full w-full flex-col items-start overflow-y-auto p-4 sm:p-6 lg:mx-auto lg:h-auto lg:max-h-[90vh] lg:w-[650px] lg:p-3xl', 'scrollbar:h-2 scrollbar:w-2 scrollbar-thumb:rounded-full scrollbar-thumb:bg-bg-quaternary scrollbar-track:bg-transparent'), children: [_jsx(Image, { src: decorativebackground, alt: "", width: 200, height: 200, className: "absolute top-safe-area-inset-top left-0 h-32 w-32 sm:h-40 sm:w-40 lg:h-50 lg:w-50" }), _jsx(Image, { src: props.logo, alt: "", width: 250, height: 150, className: "h-auto w-20 sm:w-24 lg:w-[7.5rem]", draggable: false }), _jsxs("div", { className: "relative w-full grow", children: [_jsx(Dialog.Title, { className: "mt-4 text-center font-semibold text-base text-brand-400 sm:mt-6 sm:text-lg lg:mt-3xl", children: "Responsible Gaming Guidelines" }), _jsxs("div", { ref: scrollableContentRef, className: "mt-2 scrollbar:h-2 max-h-[90vh] scrollbar:w-2 overflow-y-auto rounded-md scrollbar-thumb:rounded-full bg-[#021C25] p-3 sm:mt-xs sm:max-h-80 sm:p-4 lg:max-h-96", children: [_jsxs("div", { className: "flex flex-row items-center justify-center gap-4 sm:gap-6 lg:gap-3xl", children: [_jsx(Image, { src: pagcorLogo, alt: "", height: 75, width: 88, className: "h-12 w-auto shrink-0 sm:h-16 lg:h-[5.5rem]", draggable: false }), _jsx(Image, { src: props.responsibleGamingLogo ?? responsibleGamingLogo, alt: "", height: 62, width: 186, className: "h-8 w-auto shrink-0 sm:h-12 lg:h-[3.875rem]", draggable: false })] }), _jsx(Dialog.Description, { className: "text-xs leading-relaxed sm:text-sm sm:leading-2xl", children: props.content }), _jsx(Dialog.Context, { children: (api) => (_jsx("div", { className: "mt-3 flex items-center justify-center gap-x-sm sm:mt-4", children: _jsx("div", { className: "w-[80%]", children: _jsx(Button, { type: "button", className: "flex-1 py-2 text-sm sm:py-2.5 sm:text-base", onClick: () => {
38
- api.setOpen(false);
39
- }, children: "I Agree" }) }) })) })] })] }), _jsx(Button, { type: "button", className: "absolute right-6 bottom-7 w-fit flex-1 rounded-lg bg-bg-active py-2 sm:right-6 sm:bottom-6 sm:py-2.5 lg:right-9 lg:bottom-10", onClick: () => {
40
- if (scrollableContentRef.current) {
41
- scrollableContentRef.current.scrollTo({
42
- top: scrollableContentRef.current.scrollHeight,
43
- behavior: 'smooth',
44
- });
45
- }
46
- }, children: _jsx(ScrollToBottomIcon, {}) })] }) })] }) }));
47
+ }, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "z-popover" }), _jsx(Dialog.Positioner, { className: "z-popover", children: _jsxs(Dialog.Content, { className: twMerge('relative flex h-full w-full flex-col items-start overflow-hidden p-4 sm:p-6 lg:mx-auto lg:max-h-[90vh] lg:w-[500px] lg:p-3xl', 'scrollbar:h-2 scrollbar:w-2 scrollbar-thumb:rounded-full scrollbar-thumb:bg-bg-quaternary scrollbar-track:bg-transparent'), children: [_jsx(Image, { src: props.logo, alt: "", width: 250, height: 150, className: "mx-auto h-auto w-20 sm:w-24 lg:w-[7.5rem]", draggable: false }), _jsxs("div", { className: "relative flex h-full w-full flex-col overflow-hidden", children: [_jsx(Dialog.Title, { className: "my-3 text-center font-semibold text-brand-400 sm:mt-6 sm:text-lg lg:my-xl lg:text-2xl", children: "Responsible Gaming Guidelines" }), _jsx("div", { className: "flex min-h-0 flex-1 flex-col rounded-md bg-[#021C25] px-2 py-2", children: _jsxs("div", { ref: scrollableContentRef, className: "mt-2 scrollbar:h-2 scrollbar:w-2 flex-1 overflow-y-auto scrollbar-thumb:rounded-full scrollbar-track:rounded-full bg-[#021C25] scrollbar-thumb:bg-bg-quaternary scrollbar-track:bg-bg-primary p-3 pr-4 sm:mt-xs sm:p-4", onScroll: (e) => {
48
+ const { scrollTop, scrollHeight, clientHeight } = e.currentTarget;
49
+ const atBottom = Math.abs(scrollHeight - clientHeight - scrollTop) < 1;
50
+ setIsAtBottom(atBottom);
51
+ if (atBottom) {
52
+ setHasReachedBottom(true);
53
+ }
54
+ }, children: [_jsx(Dialog.Description, { className: "text-xs leading-relaxed sm:text-sm sm:leading-2xl", children: props.content }), _jsx(Button, { type: "button", className: twMerge('absolute right-6 bottom-7 z-10 size-10 rounded-lg transition-colors duration-75 ease-in-out sm:right-6 sm:bottom-6 lg:right-8 lg:bottom-8', isAtBottom
55
+ ? 'border border-[#CECFD2] bg-bg-secondary'
56
+ : 'bg-bg-brand-secondary'), onClick: () => {
57
+ if (scrollableContentRef.current) {
58
+ scrollableContentRef.current.scrollTo({
59
+ top: isAtBottom
60
+ ? 0
61
+ : scrollableContentRef.current.scrollHeight,
62
+ behavior: 'smooth',
63
+ });
64
+ }
65
+ }, children: isAtBottom ? _jsx(ScrollToTopIcon, {}) : _jsx(ScrollToBottomIcon, {}) })] }) })] }), _jsx(Dialog.Context, { children: (api) => (_jsx(Button, { type: "button", className: twMerge('mt-4 w-full py-2 text-sm sm:py-2.5 sm:text-base', hasReachedBottom
66
+ ? 'bg-bg-brand-secondary'
67
+ : 'bg-bg-disabled text-text-disabled'), onClick: () => {
68
+ api.setOpen(false);
69
+ }, disabled: !hasReachedBottom, children: "I Agree" })) })] }) })] }) }));
47
70
  }
@@ -1,24 +1,34 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import Image, {} from 'next/image';
3
- import { useRef } from 'react';
3
+ import { useEffect, useRef, useState } from 'react';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import { useShallow } from 'zustand/shallow';
6
6
  import { useGlobalStore } from '../../client/hooks/useGlobalStore.js';
7
7
  import { ScrollToBottomIcon } from '../../icons/ScrollToBottomIcon.js';
8
- import decorativebackground from '../../images/decorative-patern.png';
9
- import pagcorLogo from '../../images/pagcor.png';
10
- import responsibleGamingLogo from '../../images/responsible-gaming.png';
8
+ import { ScrollToTopIcon } from '../../icons/ScrollToTopIcon.js';
11
9
  import { Button } from '../../ui/Button/index.js';
12
10
  import { Dialog } from '../../ui/Dialog/index.js';
13
11
  import { Portal } from '../../ui/Portal/index.js';
14
12
  export function TermsOfUseV2({ logo, siteName, content, ...props }) {
15
13
  const scrollableContentRef = useRef(null);
14
+ const [hasReachedBottom, setHasReachedBottom] = useState(false);
15
+ const [isAtBottom, setIsAtBottom] = useState(false);
16
16
  const globalStore = useGlobalStore(useShallow((ctx) => ({
17
17
  signIn: ctx.signIn,
18
18
  signUp: ctx.signUp,
19
19
  disclaimer: ctx.disclaimer,
20
20
  termsOfUse: ctx.termsOfUse,
21
21
  })));
22
+ useEffect(() => {
23
+ if (scrollableContentRef.current) {
24
+ const { scrollHeight, clientHeight } = scrollableContentRef.current;
25
+ const atBottom = scrollHeight <= clientHeight;
26
+ setIsAtBottom(atBottom);
27
+ if (atBottom) {
28
+ setHasReachedBottom(true);
29
+ }
30
+ }
31
+ }, []);
22
32
  return (_jsx(Dialog.Root, { open: globalStore.termsOfUse.open, onOpenChange: (details) => {
23
33
  globalStore.termsOfUse.setOpen(details.open);
24
34
  if (!details.open)
@@ -34,14 +44,25 @@ export function TermsOfUseV2({ logo, siteName, content, ...props }) {
34
44
  globalStore.disclaimer.setOpen(true);
35
45
  }
36
46
  globalStore.termsOfUse.setNext(null);
37
- }, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "z-popover" }), _jsx(Dialog.Positioner, { className: "z-popover", children: _jsxs(Dialog.Content, { className: twMerge('relative flex h-full w-full flex-col items-start overflow-y-auto p-4 sm:p-6 lg:mx-auto lg:h-auto lg:max-h-[90vh] lg:w-[650px] lg:p-3xl', 'scrollbar:h-2 scrollbar:w-2 scrollbar-thumb:rounded-full scrollbar-thumb:bg-bg-quaternary scrollbar-track:bg-transparent'), children: [_jsx(Image, { src: decorativebackground, alt: "", width: 200, height: 200, className: "absolute top-safe-area-inset-top left-0 h-32 w-32 sm:h-40 sm:w-40 lg:h-50 lg:w-50" }), _jsx(Image, { src: logo, alt: "", width: 250, height: 150, className: "h-auto w-20 sm:w-24 lg:w-[7.5rem]", draggable: false }), _jsxs("div", { className: "relative w-full grow", children: [_jsxs(Dialog.Title, { className: 'mt-4 text-center font-semibold text-base text-brand-400 sm:mt-6 sm:text-lg lg:mt-3xl', children: [siteName, " Terms of Use"] }), _jsxs("div", { ref: scrollableContentRef, className: "mt-2 scrollbar:h-2 max-h-[90vh] scrollbar:w-2 overflow-y-auto rounded-md scrollbar-thumb:rounded-full bg-[#021C25] p-3 sm:mt-xs sm:max-h-80 sm:p-4 lg:max-h-96", children: [_jsxs("div", { className: "flex flex-row items-center justify-center gap-4 sm:gap-6 lg:gap-3xl", children: [_jsx(Image, { src: pagcorLogo, alt: "", height: 75, width: 88, className: "h-12 w-auto shrink-0 sm:h-16 lg:h-[5.5rem]", draggable: false }), _jsx(Image, { src: props.responsibleGamingLogo ?? responsibleGamingLogo, alt: "", height: 62, width: 186, className: "h-8 w-auto shrink-0 sm:h-12 lg:h-[3.875rem]", draggable: false })] }), _jsx(Dialog.Description, { className: "text-xs leading-relaxed sm:text-sm sm:leading-2xl", children: content }), _jsx(Dialog.Context, { children: (api) => (_jsx("div", { className: "mt-3 flex items-center justify-center gap-x-sm sm:mt-4", children: _jsx("div", { className: "w-[80%]", children: _jsx(Button, { type: "button", className: "flex-1 py-2 text-sm sm:py-2.5 sm:text-base", onClick: () => {
38
- api.setOpen(false);
39
- }, children: "I Agree" }) }) })) })] })] }), _jsx(Button, { type: "button", className: "absolute right-6 bottom-7 w-fit flex-1 rounded-lg bg-bg-active py-2 sm:right-6 sm:bottom-6 sm:py-2.5 lg:right-9 lg:bottom-10", onClick: () => {
40
- if (scrollableContentRef.current) {
41
- scrollableContentRef.current.scrollTo({
42
- top: scrollableContentRef.current.scrollHeight,
43
- behavior: 'smooth',
44
- });
45
- }
46
- }, children: _jsx(ScrollToBottomIcon, {}) })] }) })] }) }));
47
+ }, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "z-popover" }), _jsx(Dialog.Positioner, { className: "z-popover", children: _jsxs(Dialog.Content, { className: twMerge('relative flex h-full w-full flex-col items-start overflow-hidden p-4 sm:p-6 lg:mx-auto lg:max-h-[90vh] lg:w-[500px] lg:p-3xl', 'scrollbar:h-2 scrollbar:w-2 scrollbar-thumb:rounded-full scrollbar-thumb:bg-bg-quaternary scrollbar-track:bg-transparent'), children: [_jsx(Image, { src: logo, alt: "", width: 250, height: 150, className: "mx-auto h-auto w-20 sm:w-24 lg:w-[7.5rem]", draggable: false }), _jsxs("div", { className: "relative flex h-full w-full flex-col overflow-hidden", children: [_jsx(Dialog.Title, { className: "my-3 text-center font-semibold text-brand-400 sm:mt-6 sm:text-lg lg:my-xl lg:text-2xl", children: "Terms of Use" }), _jsx("div", { className: "flex min-h-0 flex-1 flex-col rounded-md bg-[#021C25] px-2 py-2", children: _jsxs("div", { ref: scrollableContentRef, className: "mt-2 scrollbar:h-2 scrollbar:w-2 flex-1 overflow-y-auto scrollbar-thumb:rounded-full scrollbar-track:rounded-full bg-[#021C25] scrollbar-thumb:bg-bg-quaternary scrollbar-track:bg-bg-primary p-3 pr-4 sm:mt-xs sm:p-4", onScroll: (e) => {
48
+ const { scrollTop, scrollHeight, clientHeight } = e.currentTarget;
49
+ if (Math.abs(scrollHeight - clientHeight - scrollTop) < 1) {
50
+ setHasReachedBottom(true);
51
+ }
52
+ }, children: [_jsx(Dialog.Description, { className: "text-xs leading-relaxed sm:text-sm sm:leading-2xl", children: content }), _jsx(Button, { type: "button", className: twMerge('absolute right-6 bottom-7 z-10 size-10 rounded-lg transition-colors duration-75 ease-in-out sm:right-6 sm:bottom-6 lg:right-8 lg:bottom-8', isAtBottom
53
+ ? 'border border-[#CECFD2] bg-bg-secondary'
54
+ : 'bg-bg-brand-secondary'), onClick: () => {
55
+ if (scrollableContentRef.current) {
56
+ scrollableContentRef.current.scrollTo({
57
+ top: isAtBottom
58
+ ? 0
59
+ : scrollableContentRef.current.scrollHeight,
60
+ behavior: 'smooth',
61
+ });
62
+ }
63
+ }, children: isAtBottom ? _jsx(ScrollToTopIcon, {}) : _jsx(ScrollToBottomIcon, {}) })] }) })] }), _jsx(Dialog.Context, { children: (api) => (_jsx(Button, { type: "button", className: twMerge('mt-4 flex-1 py-2 text-sm sm:py-2.5 sm:text-base', hasReachedBottom
64
+ ? 'bg-bg-brand-secondary'
65
+ : 'bg-bg-disabled text-text-disabled'), onClick: () => {
66
+ api.setOpen(false);
67
+ }, disabled: !hasReachedBottom, children: "Accept" })) })] }) })] }) }));
47
68
  }
@@ -1,4 +1,4 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  export function ScrollToBottomIcon(props) {
3
- return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "10", height: "12", fill: "none", viewBox: "0 0 10 12", ...props, children: _jsx("path", { stroke: "#85888E", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.667", d: "M.833 6.833 5 11l4.167-4.167M.833 1 5 5.167 9.167 1" }) }));
3
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "10", height: "12", fill: "none", viewBox: "0 0 10 12", ...props, children: _jsx("path", { stroke: "#fff", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.667", d: "M.833 6.833 5 11l4.167-4.167M.833 1 5 5.167 9.167 1" }) }));
4
4
  }
@@ -0,0 +1,2 @@
1
+ import type { ComponentPropsWithRef } from 'react';
2
+ export declare function ScrollToTopIcon(props: ComponentPropsWithRef<'svg'>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function ScrollToTopIcon(props) {
3
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "10", height: "12", viewBox: "0 0 10 12", fill: "none", ...props, children: _jsx("path", { d: "M9.16634 10.8335L4.99967 6.66683L0.833008 10.8335M9.16634 5.00016L4.99967 0.833496L0.833008 5.00016", stroke: "#CECFD2", strokeWidth: "1.66667", strokeLinecap: "round", strokeLinejoin: "round" }) }));
4
+ }
@@ -8,23 +8,23 @@ export declare const createForgotPasswordSchema: (mobileNumberParser: MobileNumb
8
8
  mobileNumber: z.ZodEffects<z.ZodString, string, string>;
9
9
  verificationCode: z.ZodEffects<z.ZodString, string, string>;
10
10
  }, "strip", z.ZodTypeAny, {
11
- password: string;
12
11
  verificationCode: string;
12
+ password: string;
13
13
  mobileNumber: string;
14
14
  confirmPassword: string;
15
15
  }, {
16
- password: string;
17
16
  verificationCode: string;
17
+ password: string;
18
18
  mobileNumber: string;
19
19
  confirmPassword: string;
20
20
  }>, {
21
- password: string;
22
21
  verificationCode: string;
22
+ password: string;
23
23
  mobileNumber: string;
24
24
  confirmPassword: string;
25
25
  }, {
26
- password: string;
27
26
  verificationCode: string;
27
+ password: string;
28
28
  mobileNumber: string;
29
29
  confirmPassword: string;
30
30
  }>;