@opexa/portal-components 0.1.53 → 0.1.55

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 (66) hide show
  1. package/dist/client/hooks/useCreateGCashStandardCashInWithdrawal.d.ts +4 -4
  2. package/dist/client/hooks/useCreateGCashStandardCashInWithdrawal.js +8 -8
  3. package/dist/client/hooks/useCreateGCashWithdrawalMutation.d.ts +4 -4
  4. package/dist/client/hooks/useCreateGCashWithdrawalMutation.js +8 -8
  5. package/dist/client/hooks/useRecaptcha.js +3 -1
  6. package/dist/client/hooks/useRedeemVoucherMutation.js +1 -1
  7. package/dist/client/hooks/useRequireFirstDepositQuery.js +1 -1
  8. package/dist/components/Account/Wallet.example.js +1 -1
  9. package/dist/components/Account/Wallet.js +2 -2
  10. package/dist/components/AccountInfo/AccountInfo.js +1 -1
  11. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/Failed.js +3 -1
  12. package/dist/components/DepositWithdrawal/Deposit/Voucher/Voucher.js +2 -2
  13. package/dist/components/DepositWithdrawal/Deposit/Voucher/definition.js +2 -1
  14. package/dist/components/DepositWithdrawal/DepositWithdrawalTrigger.js +1 -1
  15. package/dist/components/DepositWithdrawal/PaymentMethods.js +3 -3
  16. package/dist/components/DepositWithdrawal/Withdrawal/Withdrawal.js +1 -1
  17. package/dist/components/Disclaimer/DisclaimerV2.js +0 -8
  18. package/dist/components/ForgotPassword/Crazywin/CWForgotPassword.js +1 -1
  19. package/dist/components/ForgotPassword/Crazywin/CWForgotPasswordForm.js +3 -3
  20. package/dist/components/ForgotPassword/ForgotPassword.lazy.js +4 -2
  21. package/dist/components/ForgotPassword/ForgotPasswordForm.js +19 -7
  22. package/dist/components/GameExit/GameExit.lazy.js +1 -1
  23. package/dist/components/Games/GamesPagination.js +1 -1
  24. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.js +8 -3
  25. package/dist/components/Jackpots/JackpotsListNext/JackpotMultiStageDesktop.js +1 -1
  26. package/dist/components/KYC/KYCReminder.lazy.js +2 -1
  27. package/dist/components/Migrate/MigrateInitializing.js +1 -1
  28. package/dist/components/NewsFeed/NewsFeedCarousel.js +1 -1
  29. package/dist/components/Promos/Cashback.d.ts +3 -1
  30. package/dist/components/Promos/Cashback.js +4 -4
  31. package/dist/components/Promos/CustomPromo.d.ts +3 -1
  32. package/dist/components/Promos/CustomPromo.js +3 -2
  33. package/dist/components/Promos/Promo.d.ts +3 -1
  34. package/dist/components/Promos/Promo.js +4 -4
  35. package/dist/components/Promos/PromosCarousel.d.ts +2 -0
  36. package/dist/components/Promos/PromosCarousel.js +1 -1
  37. package/dist/components/Promos/PromosGrid.d.ts +13 -0
  38. package/dist/components/Promos/PromosGrid.js +1 -1
  39. package/dist/components/Promos/index.d.ts +1 -0
  40. package/dist/components/Promos/utils.d.ts +1 -0
  41. package/dist/components/Promos/utils.js +10 -0
  42. package/dist/components/ResponsibleGamingLimits/ResponsibleGamingLimits.js +1 -1
  43. package/dist/components/ResponsibleGamingLimits/ResponsibleGamingLimitsForm.lazy.js +8 -4
  44. package/dist/components/ResponsibleGamingLimits/index.d.ts +1 -1
  45. package/dist/components/ResponsibleGamingLimits/index.js +1 -1
  46. package/dist/components/SignIn/HappyBingo/NameAndPasswordSignIn.js +1 -1
  47. package/dist/components/SignIn/useSignIn.js +1 -1
  48. package/dist/components/SignUp/SignUpCrazyWin/SignUpCrazyWin.lazy.js +1 -1
  49. package/dist/components/SignUp/SignUpCrazyWin/SignUpCrazyWinContext.js +1 -1
  50. package/dist/components/SignUp/SignUpDefault/SignUpDefault.lazy.d.ts +2 -0
  51. package/dist/components/SignUp/SignUpDefault/SignUpDefaultForm.js +18 -0
  52. package/dist/components/SignUp/SignUpDefault/SignUpDefaultFormInternational.js +20 -0
  53. package/dist/components/SignUp/SignUpHappyBingo/SignUpHappyBingoForm.js +3 -1
  54. package/dist/components/Tournaments/TournamentsCarousel/TournamentsCarouselItem.HappyBingo.js +1 -1
  55. package/dist/components/Tournaments/TournamentsList/TournamentListItemTable.CrazyWin.js +1 -1
  56. package/dist/components/TransactionRecords/TransactionRecords.suspense.js +1 -1
  57. package/dist/components/UpdateMobilePhoneNumber/components/Step1MobileNumberForm.js +1 -1
  58. package/dist/components/UpdateMobilePhoneNumber/hooks/useUpdateMobileFlow.js +1 -2
  59. package/dist/constants/PisoPayBanks.js +181 -181
  60. package/dist/handlers/index.d.ts +2 -2
  61. package/dist/schemas/forgotPasswordSchema.d.ts +4 -4
  62. package/dist/schemas/forgotPasswordSchema.js +24 -7
  63. package/dist/services/auth.d.ts +4 -0
  64. package/dist/services/auth.js +7 -0
  65. package/dist/utils/countries/getLocaleInfo.js +1 -2
  66. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import type { SetOptional } from "type-fest";
2
- import { type CreateGCashStandardCashInWithdrawalInput } from "../../services/wallet";
3
- import type { Mutation } from "../../types";
4
- export declare const useCreateGCashStandardCashInWithdrawalMutation: Mutation<string, SetOptional<CreateGCashStandardCashInWithdrawalInput, "id">>;
1
+ import type { SetOptional } from 'type-fest';
2
+ import { type CreateGCashStandardCashInWithdrawalInput } from '../../services/wallet';
3
+ import type { Mutation } from '../../types';
4
+ export declare const useCreateGCashStandardCashInWithdrawalMutation: Mutation<string, SetOptional<CreateGCashStandardCashInWithdrawalInput, 'id'>>;
@@ -1,10 +1,10 @@
1
- import { ObjectId } from "@opexa/object-id";
2
- import { useMutation } from "@tanstack/react-query";
3
- import invariant from "tiny-invariant";
4
- import { ObjectType } from "../../services/ObjectType.js";
5
- import { createGCashStandardCashInWithdrawal, } from "../../services/wallet.js";
6
- import { getCreateGCashStandardCashInWithdrawalMutationKey } from "../../utils/mutationKeys.js";
7
- import { getSession } from "../services/getSession.js";
1
+ import { ObjectId } from '@opexa/object-id';
2
+ import { useMutation } from '@tanstack/react-query';
3
+ import invariant from 'tiny-invariant';
4
+ import { ObjectType } from '../../services/ObjectType.js';
5
+ import { createGCashStandardCashInWithdrawal, } from '../../services/wallet.js';
6
+ import { getCreateGCashStandardCashInWithdrawalMutationKey } from '../../utils/mutationKeys.js';
7
+ import { getSession } from '../services/getSession.js';
8
8
  export const useCreateGCashStandardCashInWithdrawalMutation = (config) => {
9
9
  const mutation = useMutation({
10
10
  ...config,
@@ -12,7 +12,7 @@ export const useCreateGCashStandardCashInWithdrawalMutation = (config) => {
12
12
  mutationFn: async (input) => {
13
13
  const id = input.id ?? ObjectId.generate(ObjectType.Withdrawal).toString();
14
14
  const session = await getSession();
15
- invariant(session.status === "authenticated");
15
+ invariant(session.status === 'authenticated');
16
16
  await createGCashStandardCashInWithdrawal({ ...input, id }, {
17
17
  headers: {
18
18
  Authorization: `Bearer ${session.token}`,
@@ -1,4 +1,4 @@
1
- import type { SetOptional } from "type-fest";
2
- import { type CreateGCashWithdrawalInput } from "../../services/wallet";
3
- import type { Mutation } from "../../types";
4
- export declare const useCreateGCashWithdrawalMutation: Mutation<string, SetOptional<CreateGCashWithdrawalInput, "id">>;
1
+ import type { SetOptional } from 'type-fest';
2
+ import { type CreateGCashWithdrawalInput } from '../../services/wallet';
3
+ import type { Mutation } from '../../types';
4
+ export declare const useCreateGCashWithdrawalMutation: Mutation<string, SetOptional<CreateGCashWithdrawalInput, 'id'>>;
@@ -1,10 +1,10 @@
1
- import { ObjectId } from "@opexa/object-id";
2
- import { useMutation } from "@tanstack/react-query";
3
- import invariant from "tiny-invariant";
4
- import { ObjectType } from "../../services/ObjectType.js";
5
- import { createGCashWithdrawal, } from "../../services/wallet.js";
6
- import { getCreateGCashWithdrawalMutationKey } from "../../utils/mutationKeys.js";
7
- import { getSession } from "../services/getSession.js";
1
+ import { ObjectId } from '@opexa/object-id';
2
+ import { useMutation } from '@tanstack/react-query';
3
+ import invariant from 'tiny-invariant';
4
+ import { ObjectType } from '../../services/ObjectType.js';
5
+ import { createGCashWithdrawal, } from '../../services/wallet.js';
6
+ import { getCreateGCashWithdrawalMutationKey } from '../../utils/mutationKeys.js';
7
+ import { getSession } from '../services/getSession.js';
8
8
  export const useCreateGCashWithdrawalMutation = (config) => {
9
9
  const mutation = useMutation({
10
10
  ...config,
@@ -12,7 +12,7 @@ export const useCreateGCashWithdrawalMutation = (config) => {
12
12
  mutationFn: async (input) => {
13
13
  const id = input.id ?? ObjectId.generate(ObjectType.Withdrawal).toString();
14
14
  const session = await getSession();
15
- invariant(session.status === "authenticated");
15
+ invariant(session.status === 'authenticated');
16
16
  await createGCashWithdrawal({ ...input, id }, {
17
17
  headers: {
18
18
  Authorization: `Bearer ${session.token}`,
@@ -72,7 +72,9 @@ async function executeGoogleFraudDefense(siteKey, action) {
72
72
  }
73
73
  window.grecaptcha.enterprise.ready(async () => {
74
74
  try {
75
- const token = await window.grecaptcha.enterprise.execute(siteKey, { action });
75
+ const token = await window.grecaptcha.enterprise.execute(siteKey, {
76
+ action,
77
+ });
76
78
  resolve(token);
77
79
  }
78
80
  catch {
@@ -1,6 +1,6 @@
1
1
  import { useMutation } from '@tanstack/react-query';
2
2
  import invariant from 'tiny-invariant';
3
- import { redeemVoucher, } from '../../services/wallet.js';
3
+ import { redeemVoucher } from '../../services/wallet.js';
4
4
  import { getRedeemVoucherMutationKey } from '../../utils/mutationKeys.js';
5
5
  import { getSession } from '../services/getSession.js';
6
6
  export const useRedeemVoucherMutation = (config) => {
@@ -2,7 +2,7 @@ import { useQuery } from '@tanstack/react-query';
2
2
  import invariant from 'tiny-invariant';
3
3
  import { getRequireFirstDeposit } from '../../services/account.js';
4
4
  import { getQueryClient } from '../../utils/getQueryClient.js';
5
- import { getRequireFirstDepositQueryKey, getSessionQueryKey } from '../../utils/queryKeys.js';
5
+ import { getRequireFirstDepositQueryKey, getSessionQueryKey, } from '../../utils/queryKeys.js';
6
6
  import { getSession } from '../services/getSession.js';
7
7
  import { useSessionQuery } from './useSessionQuery.js';
8
8
  export const useRequireFirstDepositQuery = (config) => {
@@ -32,5 +32,5 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
32
32
  * - Integration with global store for deposit/withdrawal modals
33
33
  */
34
34
  export const WalletExample = () => {
35
- return (_jsxs("div", { className: "p-4", children: [_jsx("h2", { className: 'mb-4 font-bold text-xl', children: "Wallet Component Example" }), _jsx("p", { className: 'mb-4 text-gray-600', children: "The Wallet component is now available as a standalone component that you can use anywhere in your application." }), _jsxs("div", { className: 'rounded-lg bg-gray-100 p-4', children: [_jsx("h3", { className: 'mb-2 font-semibold', children: "Import:" }), _jsxs("code", { className: 'block rounded bg-white p-2 text-sm', children: ["import ", `{ Wallet }`, " from '@opexa/portal-components/Account/Wallet';"] })] }), _jsxs("div", { className: 'mt-4 rounded-lg bg-gray-100 p-4', children: [_jsx("h3", { className: 'mb-2 font-semibold', children: "Usage:" }), _jsx("code", { className: 'block rounded bg-white p-2 text-sm', children: `<Wallet classNames={{ walletActions: "custom-actions" }} />` })] })] }));
35
+ return (_jsxs("div", { className: "p-4", children: [_jsx("h2", { className: "mb-4 font-bold text-xl", children: "Wallet Component Example" }), _jsx("p", { className: "mb-4 text-gray-600", children: "The Wallet component is now available as a standalone component that you can use anywhere in your application." }), _jsxs("div", { className: "rounded-lg bg-gray-100 p-4", children: [_jsx("h3", { className: "mb-2 font-semibold", children: "Import:" }), _jsxs("code", { className: "block rounded bg-white p-2 text-sm", children: ["import ", `{ Wallet }`, " from '@opexa/portal-components/Account/Wallet';"] })] }), _jsxs("div", { className: "mt-4 rounded-lg bg-gray-100 p-4", children: [_jsx("h3", { className: "mb-2 font-semibold", children: "Usage:" }), _jsx("code", { className: "block rounded bg-white p-2 text-sm", children: `<Wallet classNames={{ walletActions: "custom-actions" }} />` })] })] }));
36
36
  };
@@ -26,11 +26,11 @@ export function Wallet({ classNames = {} }) {
26
26
  return (_jsxs(_Fragment, { children: [_jsxs("div", { className: twMerge('mt-3 overflow-hidden rounded-xl border border-border-primary', classNames.walletBalanceContainer), children: [_jsxs("div", { className: "bg-bg-tertiary p-xl", children: [_jsx("div", { className: twMerge('text-sm text-text-secondary-700', classNames.totalBalanceLabel), children: "Total Balance" }), _jsx("div", { className: twMerge('font-bold text-3xl', classNames.totalBalanceAmount), children: formatNumber(totalBalance, {
27
27
  currency: localeInfo?.currency.code,
28
28
  minDecimalPlaces: 2,
29
- truncate: false
29
+ truncate: false,
30
30
  }) }), _jsxs("div", { className: twMerge('mt-1.5 flex gap-7xl', classNames.balanceDetailsContainer), children: [_jsxs("div", { children: [_jsx("p", { className: twMerge('text-2xs text-text-secondary-700', classNames.depositBalanceLabel), children: "Deposit Balance" }), _jsx("p", { className: twMerge('text-medium text-text-primary-brand', classNames.depositBalanceAmount), children: formatNumber(depositBalance, {
31
31
  currency: localeInfo?.currency.code,
32
32
  minDecimalPlaces: 2,
33
- truncate: false
33
+ truncate: false,
34
34
  }) })] }), _jsxs("div", { children: [_jsx("p", { className: twMerge('text-2xs text-text-secondary-700', classNames.bonusBalanceLabel), children: "Bonus Balance" }), _jsx("p", { className: twMerge('text-medium text-text-primary-brand', classNames.bonusBalanceAmount), children: formatNumber(bonusBalance, {
35
35
  currency: localeInfo?.currency.code,
36
36
  minDecimalPlaces: 2,
@@ -13,7 +13,7 @@ import { z } from 'zod';
13
13
  import { useAccountQuery } from '../../client/hooks/useAccountQuery.js';
14
14
  import { useDisclosure } from '../../client/hooks/useDisclosure.js';
15
15
  import { useLocaleInfo } from '../../client/hooks/useLocaleInfo.js';
16
- import { getLocale, extractPhoneCode } from '../../utils/countries/getLocaleInfo.js';
16
+ import { getLocale, extractPhoneCode, } from '../../utils/countries/getLocaleInfo.js';
17
17
  import { useFacebookClientQuery } from '../../client/hooks/useFacebookClientQuery.js';
18
18
  import { useGoogleClientIdQuery } from '../../client/hooks/useGoogleClientIdQuery.js';
19
19
  import { useMemberVerificationQuery } from '../../client/hooks/useMemberVerificationQuery.js';
@@ -7,5 +7,7 @@ import { Portal } from '../../../../ui/Portal/index.js';
7
7
  import { useQRPHDepositContext } from './QRPHDepositContext.js';
8
8
  export function Failed() {
9
9
  const context = useQRPHDepositContext();
10
- return (_jsx(AlertDialog.Root, { open: context.status === 'failed', lazyMount: true, closeOnEscape: false, closeOnInteractOutside: false, children: _jsxs(Portal, { children: [_jsx(AlertDialog.Backdrop, { className: "!z-[calc(var(--z-dialog)+3)]" }), _jsx(AlertDialog.Positioner, { className: "!z-[calc(var(--z-dialog)+4)]", children: _jsxs(AlertDialog.Content, { children: [_jsx("button", { type: "button", className: "absolute top-4 right-4 icon:size-6 p-md text-text-quinary disabled:cursor-not-allowed disabled:opacity-50", onClick: context.reset, children: _jsx(XIcon, {}) }), _jsx("div", { className: "mx-auto flex size-12 items-center justify-center rounded-full bg-bg-error-secondary", children: _jsx(AlertCircleIcon, { className: "size-6 text-text-featured-icon-light-error" }) }), _jsx(AlertDialog.Title, { className: "mt-xl", children: context.errorMessage?.name || 'Your deposit failed or was cancelled.' }), _jsx(AlertDialog.Description, { className: "mt-xl px-3", children: context.errorMessage?.message || 'Your deposit was not completed or has been cancelled. You can try again by generating a new QR code.' }), _jsx(Button, { className: "mt-4xl w-full", variant: "outline", onClick: context.regenerateQRCode, children: "Generate New QR Code" })] }) })] }) }));
10
+ return (_jsx(AlertDialog.Root, { open: context.status === 'failed', lazyMount: true, closeOnEscape: false, closeOnInteractOutside: false, children: _jsxs(Portal, { children: [_jsx(AlertDialog.Backdrop, { className: "!z-[calc(var(--z-dialog)+3)]" }), _jsx(AlertDialog.Positioner, { className: "!z-[calc(var(--z-dialog)+4)]", children: _jsxs(AlertDialog.Content, { children: [_jsx("button", { type: "button", className: "absolute top-4 right-4 icon:size-6 p-md text-text-quinary disabled:cursor-not-allowed disabled:opacity-50", onClick: context.reset, children: _jsx(XIcon, {}) }), _jsx("div", { className: "mx-auto flex size-12 items-center justify-center rounded-full bg-bg-error-secondary", children: _jsx(AlertCircleIcon, { className: "size-6 text-text-featured-icon-light-error" }) }), _jsx(AlertDialog.Title, { className: "mt-xl", children: context.errorMessage?.name ||
11
+ 'Your deposit failed or was cancelled.' }), _jsx(AlertDialog.Description, { className: "mt-xl px-3", children: context.errorMessage?.message ||
12
+ 'Your deposit was not completed or has been cancelled. You can try again by generating a new QR code.' }), _jsx(Button, { className: "mt-4xl w-full", variant: "outline", onClick: context.regenerateQRCode, children: "Generate New QR Code" })] }) })] }) }));
11
13
  }
@@ -68,7 +68,7 @@ export function Voucher() {
68
68
  const last = values.at(-1);
69
69
  if (last)
70
70
  field.onChange(last);
71
- }, className: "grid grid-cols-2 gap-x-4 gap-y-3", children: channels.map((channel) => (_jsxs(Checkbox.Root, { value: channel.value, className: "flex cursor-pointer items-center justify-between rounded-xl border border-border-secondary ui-checked:border-border-brand-solid p-lg", children: [_jsx(Image, { src: channel.image, alt: "", width: 100, height: 25, loading: "lazy", className: twMerge('w-auto', 'h-[2.8rem]'), draggable: false }), _jsx(Checkbox.Control, { className: "ml-auto", children: _jsx(Checkbox.Indicator, {}) }), _jsx(Checkbox.HiddenInput, {})] }, channel.value))) })) })] }), _jsxs("section", { className: 'my-5', children: [_jsx(Field.Label, { asChild: true, children: _jsx("div", { children: "Voucher Code" }) }), _jsx(Controller, { control: control, name: "voucherCode", render: ({ field }) => {
71
+ }, className: "grid grid-cols-2 gap-x-4 gap-y-3", children: channels.map((channel) => (_jsxs(Checkbox.Root, { value: channel.value, className: "flex cursor-pointer items-center justify-between rounded-xl border border-border-secondary ui-checked:border-border-brand-solid p-lg", children: [_jsx(Image, { src: channel.image, alt: "", width: 100, height: 25, loading: "lazy", className: twMerge('w-auto', 'h-[2.8rem]'), draggable: false }), _jsx(Checkbox.Control, { className: "ml-auto", children: _jsx(Checkbox.Indicator, {}) }), _jsx(Checkbox.HiddenInput, {})] }, channel.value))) })) })] }), _jsxs("section", { className: "my-5", children: [_jsx(Field.Label, { asChild: true, children: _jsx("div", { children: "Voucher Code" }) }), _jsx(Controller, { control: control, name: "voucherCode", render: ({ field }) => {
72
72
  return (_jsxs(Field.Root, { invalid: !!errors, children: [_jsx(Field.Input, { ...field, placeholder: "Enter your Voucher code", onChange: (e) => {
73
73
  redeemVoucherMutation.reset();
74
74
  field.onChange(e.target.value.toUpperCase());
@@ -82,5 +82,5 @@ function SuccessfulRedemptionModal({ open, onClose, }) {
82
82
  return (_jsx(Dialog.Root, { unmountOnExit: true, open: open, onOpenChange: (isOpen) => {
83
83
  if (!isOpen)
84
84
  onClose();
85
- }, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "!z-[calc(var(--z-dialog)+3)]" }), _jsx(Dialog.Positioner, { className: "!z-[calc(var(--z-dialog)+4)]", children: _jsxs(Dialog.Content, { className: "mx-auto h-full w-full overflow-y-auto px-4 py-3xl lg:h-auto lg:max-h-[80vh] lg:w-[480px] lg:rounded-xl", children: [_jsx(Dialog.Header, { className: "text-center", children: _jsx(Dialog.Title, { className: "flex grow items-center justify-center font-semibold", children: _jsx(CelebrationIcon, { className: "text-6xl" }) }) }), _jsx(Dialog.Body, { className: "mt-4", children: _jsx("p", { className: 'text-center font-bold', children: "Voucher successfully redeemed." }) }), _jsx(Dialog.Footer, { className: "mt-6", children: _jsx(Button, { className: "w-full", onClick: onClose, children: "OK" }) })] }) })] }) }));
85
+ }, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "!z-[calc(var(--z-dialog)+3)]" }), _jsx(Dialog.Positioner, { className: "!z-[calc(var(--z-dialog)+4)]", children: _jsxs(Dialog.Content, { className: "mx-auto h-full w-full overflow-y-auto px-4 py-3xl lg:h-auto lg:max-h-[80vh] lg:w-[480px] lg:rounded-xl", children: [_jsx(Dialog.Header, { className: "text-center", children: _jsx(Dialog.Title, { className: "flex grow items-center justify-center font-semibold", children: _jsx(CelebrationIcon, { className: "text-6xl" }) }) }), _jsx(Dialog.Body, { className: "mt-4", children: _jsx("p", { className: "text-center font-bold", children: "Voucher successfully redeemed." }) }), _jsx(Dialog.Footer, { className: "mt-6", children: _jsx(Button, { className: "w-full", onClick: onClose, children: "OK" }) })] }) })] }) }));
86
86
  }
@@ -1,6 +1,7 @@
1
1
  import * as z from 'zod';
2
2
  export const definition = z.object({
3
3
  voucherChannel: z.string().optional().nullable(),
4
- voucherCode: z.string()
4
+ voucherCode: z
5
+ .string()
5
6
  .regex(/^[A-Z0-9-_]+$/, 'Voucher code can only contain uppercase letters, numbers, hyphens, and underscores'),
6
7
  });
@@ -37,6 +37,6 @@ export function DepositWithdrawalTrigger({ asChild, children, colorScheme = 'pri
37
37
  : 'border-border-dark bg-bg-dark text-dark-text'), children: formatNumber(totalBalance, {
38
38
  currency: localeInfo.currency.code,
39
39
  minDecimalPlaces: 2,
40
- truncate: false
40
+ truncate: false,
41
41
  }) }), _jsx("div", { className: "flex h-10 items-center gap-1.5 rounded-r-md bg-button-primary-bg px-3.5 font-semibold text-button-primary-fg text-sm", children: label })] })) }));
42
42
  }
@@ -132,7 +132,7 @@ const OPTIONS = [
132
132
  value: 'VOUCHER',
133
133
  label: 'Voucher',
134
134
  image: voucherIcon,
135
- }
135
+ },
136
136
  ];
137
137
  export function PaymentMethods(props) {
138
138
  const options = useMemo(() => props.options?.length
@@ -156,6 +156,6 @@ export function PaymentMethods(props) {
156
156
  ? 'h-[2.5rem]'
157
157
  : '', (option.value === 'AIO_GRAB_PAY' ||
158
158
  option.value === 'AURIX_PAY_GRAB_PAY') &&
159
- 'h-[3rem] rounded-[4px]', option.value === 'AIO_PALAWAN_PAY' && 'h-[2rem]' ||
160
- option.value === "VOUCHER" && 'h-[2rem]'), draggable: false }) }), _jsx(Checkbox.Control, { className: "shrink-0", children: _jsx(Checkbox.Indicator, { asChild: true, children: _jsx(CheckIcon, {}) }) }), _jsx(Checkbox.HiddenInput, {})] }, option.value))) })] }));
159
+ 'h-[3rem] rounded-[4px]', (option.value === 'AIO_PALAWAN_PAY' && 'h-[2rem]') ||
160
+ (option.value === 'VOUCHER' && 'h-[2rem]')), draggable: false }) }), _jsx(Checkbox.Control, { className: "shrink-0", children: _jsx(Checkbox.Indicator, { asChild: true, children: _jsx(CheckIcon, {}) }) }), _jsx(Checkbox.HiddenInput, {})] }, option.value))) })] }));
161
161
  }
@@ -50,7 +50,7 @@ const VentajaWithdrawal = lazy(() => import('./VentajaWithdrawal/VentajaWithdraw
50
50
  })));
51
51
  export function Withdrawal() {
52
52
  const { onMaya } = useMayaAuth();
53
- const { allowUnverifiedAccounts, enabledWithdrawalProviders } = useDepositWithdrawalPropsContext();
53
+ const { enabledWithdrawalProviders } = useDepositWithdrawalPropsContext();
54
54
  const walletQuery = useWalletQuery();
55
55
  const featureFlag = useFeatureFlag();
56
56
  const wallet = walletQuery.data;
@@ -9,7 +9,6 @@ import { twMerge } from 'tailwind-merge';
9
9
  import { useShallow } from 'zustand/shallow';
10
10
  import { useGlobalStore } from '../../client/hooks/useGlobalStore.js';
11
11
  import { useSessionQuery } from '../../client/hooks/useSessionQuery.js';
12
- import { useSignOutMutation } from '../../client/hooks/useSignOutMutation.js';
13
12
  import { getSession } from '../../client/services/getSession.js';
14
13
  import { TERMS_OF_USE_PENDING_STORAGE_KEY } from '../../constants/index.js';
15
14
  import { AlertCircleIcon } from '../../icons/AlertCircleIcon.js';
@@ -21,7 +20,6 @@ import { Button } from '../../ui/Button/index.js';
21
20
  import { Checkbox } from '../../ui/Checkbox/index.js';
22
21
  import { Dialog } from '../../ui/Dialog/index.js';
23
22
  import { Portal } from '../../ui/Portal/index.js';
24
- import { clearLocalStorageOnLogout } from '../../utils/clear-local-storage-on-logout.js';
25
23
  import { setDisclaimerAccepted } from '../../utils/disclaimer-cooldown.js';
26
24
  import { getQueryClient } from '../../utils/getQueryClient.js';
27
25
  import { getSessionQueryKey } from '../../utils/queryKeys.js';
@@ -55,12 +53,6 @@ export function DisclaimerV2(props) {
55
53
  globalStore.termsOfUse.accepted,
56
54
  globalStore.termsOfUse.setAccepted,
57
55
  ]);
58
- const signOutMutation = useSignOutMutation({
59
- async onSuccess() {
60
- clearLocalStorageOnLogout();
61
- sessionStorage.clear();
62
- },
63
- });
64
56
  const handleExit = async () => {
65
57
  if (props.redirectUrlOnNoConsent) {
66
58
  if (Capacitor.isNativePlatform()) {
@@ -6,6 +6,6 @@ import { Dialog } from '../../../ui/Dialog/index.js';
6
6
  import CWForgotPasswordForm from './CWForgotPasswordForm.js';
7
7
  import styles from './ForgotPassword.module.css';
8
8
  const ForgotPassword = ({ logo }) => {
9
- return (_jsx(Dialog.Content, { className: "overflow-y-invisible top-0 left-0 flex h-full w-full items-center bg-transparent", children: _jsxs("div", { className: "flex h-[90dvh] w-full flex-col justify-center scroll-smooth", children: [_jsxs("div", { className: "relative mx-auto w-full max-w-[22.5rem]", children: [_jsx(Image, { src: logo, alt: "", width: 200, height: 100, className: "mx-auto mt-8 h-auto w-[12.04544rem]", draggable: false }), _jsx(Dialog.CloseTrigger, { className: 'h-fit w-fit rounded-md bg-gradient-to-t from-[#FFE5AF] to-[#EAC467] p-0.5 text-[#6C5200]', children: _jsx(XIcon, {}) })] }), _jsx("h2", { className: "mx-auto mt-10 w-fit bg-[linear-gradient(50deg,#c7802d_-5.1%,#ffe585_44.95%,#c7802d_109.05%)] bg-clip-text font-bold text-2xl text-transparent uppercase", children: "Forgot Password" }), _jsx("div", { className: twMerge('mx-auto mt-7.5 max-w-[20.6875rem] p-7.5', styles.card), children: _jsx(CWForgotPasswordForm, {}) })] }) }));
9
+ return (_jsx(Dialog.Content, { className: "overflow-y-invisible top-0 left-0 flex h-full w-full items-center bg-transparent", children: _jsxs("div", { className: "flex h-[90dvh] w-full flex-col justify-center scroll-smooth", children: [_jsxs("div", { className: "relative mx-auto w-full max-w-[22.5rem]", children: [_jsx(Image, { src: logo, alt: "", width: 200, height: 100, className: "mx-auto mt-8 h-auto w-[12.04544rem]", draggable: false }), _jsx(Dialog.CloseTrigger, { className: "h-fit w-fit rounded-md bg-gradient-to-t from-[#FFE5AF] to-[#EAC467] p-0.5 text-[#6C5200]", children: _jsx(XIcon, {}) })] }), _jsx("h2", { className: "mx-auto mt-10 w-fit bg-[linear-gradient(50deg,#c7802d_-5.1%,#ffe585_44.95%,#c7802d_109.05%)] bg-clip-text font-bold text-2xl text-transparent uppercase", children: "Forgot Password" }), _jsx("div", { className: twMerge('mx-auto mt-7.5 max-w-[20.6875rem] p-7.5', styles.card), children: _jsx(CWForgotPasswordForm, {}) })] }) }));
10
10
  };
11
11
  export default ForgotPassword;
@@ -59,15 +59,15 @@ const CWForgotPasswordForm = () => {
59
59
  verificationCode: data.verificationCode,
60
60
  });
61
61
  };
62
- return (_jsx("form", { autoComplete: 'off', onSubmit: handleSubmit(onSubmit), children: _jsxs("div", { className: "space-y-4", children: [_jsxs(Field.Root, { invalid: !!errors.mobileNumber, children: [_jsx(Field.Label, { className: "text-xs", children: "Phone Number" }), _jsxs("div", { className: "relative flex h-10 gap-3", children: [_jsxs("div", { className: "flex h-full items-center gap-2 rounded-full bg-black/40 px-3.5 text-xs", children: [_jsx(localeInfo.country.flag, { className: "size-5" }), _jsx("span", { className: "text-text-placeholder", children: localeInfo.mobileNumber.areaCode })] }), _jsx(Field.Input, { className: commonInputClass, placeholder: "Enter Phone Number", ...register('mobileNumber') })] }), _jsx(Field.ErrorText, { className: "text-[#ff2525b3] text-xs", children: errors.mobileNumber?.message })] }), _jsx(Field.Root, { invalid: !!errors.password, children: _jsxs(PasswordInput.Root, { children: [_jsx(PasswordInput.Label, { className: "text-xs", children: "Password" }), _jsxs("div", { children: [_jsxs(PasswordInput.Control, { className: "relative flex h-10 items-center rounded-full border-0 bg-black/40 text-xs", children: [_jsx(Image, { src: lockIcon, alt: "lock icon", width: 20, height: 20, className: "-translate-y-1/2 pointer-events-none absolute top-1/2 left-3 h-5 w-5" }), _jsx(PasswordInput.Input, { className: "pl-10", placeholder: "8 - 20 characters", ...register('password') }), _jsx(PasswordInput.VisibilityTrigger, { children: _jsx(PasswordInput.Indicator, { fallback: _jsx(EyeOffIcon, { className: "text-white/50" }), asChild: true, children: _jsx(EyeIcon, { className: "text-white/50" }) }) })] }), _jsx(Field.ErrorText, { className: "text-[#ff2525b3] text-xs", children: errors.password?.message })] })] }) }), _jsx(Field.Root, { invalid: !!errors.confirmPassword, children: _jsxs(PasswordInput.Root, { children: [_jsx(PasswordInput.Label, { className: "text-xs", children: "Confirm Password" }), _jsxs("div", { children: [_jsxs(PasswordInput.Control, { className: "relative flex h-10 items-center rounded-full border-0 bg-black/40 text-xs", children: [_jsx(Image, { src: lockIcon, alt: "lock icon", width: 20, height: 20, className: "-translate-y-1/2 pointer-events-none absolute top-1/2 left-3 h-5 w-5" }), _jsx(PasswordInput.Input, { className: "pl-10", placeholder: "8 - 20 characters", ...register('confirmPassword') }), _jsx(PasswordInput.VisibilityTrigger, { children: _jsx(PasswordInput.Indicator, { fallback: _jsx(EyeOffIcon, { className: "text-white/50" }), asChild: true, children: _jsx(EyeIcon, { className: "text-white/50" }) }) })] }), _jsx(Field.ErrorText, { className: "text-[#ff2525b3] text-xs", children: errors.confirmPassword?.message })] })] }) }), _jsxs(Field.Root, { invalid: !!errors.verificationCode, children: [_jsx(Field.Label, { className: "text-xs", children: "OTP Code" }), _jsxs("div", { className: "relative", children: [_jsx(Field.Input, { className: twMerge(commonInputClass, 'pr-[5.75rem]'), placeholder: "Enter OTP Code", ...register('verificationCode') }), _jsx(Button, { type: "button", className: "-translate-y-1/2 absolute top-1/2 right-1 h-fit w-fit rounded-full bg-[linear-gradient(89deg,#c7802d_-15.91%,#ffe585_28.75%,#ffeca6_49.46%,#c7802d_112.69%)] py-[0.375rem] text-sm shadow-[inset_0px_-1px_2px_1px_#fff7e1]", disabled: !mobileNumberValue || !!errors.mobileNumber || cooldown.cooling, onClick: async () => {
62
+ return (_jsx("form", { autoComplete: "off", onSubmit: handleSubmit(onSubmit), children: _jsxs("div", { className: "space-y-4", children: [_jsxs(Field.Root, { invalid: !!errors.mobileNumber, children: [_jsx(Field.Label, { className: "text-xs", children: "Phone Number" }), _jsxs("div", { className: "relative flex h-10 gap-3", children: [_jsxs("div", { className: "flex h-full items-center gap-2 rounded-full bg-black/40 px-3.5 text-xs", children: [_jsx(localeInfo.country.flag, { className: "size-5" }), _jsx("span", { className: "text-text-placeholder", children: localeInfo.mobileNumber.areaCode })] }), _jsx(Field.Input, { className: commonInputClass, placeholder: "Enter Phone Number", ...register('mobileNumber') })] }), _jsx(Field.ErrorText, { className: "text-[#ff2525b3] text-xs", children: errors.mobileNumber?.message })] }), _jsx(Field.Root, { invalid: !!errors.password, children: _jsxs(PasswordInput.Root, { children: [_jsx(PasswordInput.Label, { className: "text-xs", children: "Password" }), _jsxs("div", { children: [_jsxs(PasswordInput.Control, { className: "relative flex h-10 items-center rounded-full border-0 bg-black/40 text-xs", children: [_jsx(Image, { src: lockIcon, alt: "lock icon", width: 20, height: 20, className: "-translate-y-1/2 pointer-events-none absolute top-1/2 left-3 h-5 w-5" }), _jsx(PasswordInput.Input, { className: "pl-10", placeholder: "8 - 20 characters", ...register('password') }), _jsx(PasswordInput.VisibilityTrigger, { children: _jsx(PasswordInput.Indicator, { fallback: _jsx(EyeOffIcon, { className: "text-white/50" }), asChild: true, children: _jsx(EyeIcon, { className: "text-white/50" }) }) })] }), _jsx(Field.ErrorText, { className: "text-[#ff2525b3] text-xs", children: errors.password?.message })] })] }) }), _jsx(Field.Root, { invalid: !!errors.confirmPassword, children: _jsxs(PasswordInput.Root, { children: [_jsx(PasswordInput.Label, { className: "text-xs", children: "Confirm Password" }), _jsxs("div", { children: [_jsxs(PasswordInput.Control, { className: "relative flex h-10 items-center rounded-full border-0 bg-black/40 text-xs", children: [_jsx(Image, { src: lockIcon, alt: "lock icon", width: 20, height: 20, className: "-translate-y-1/2 pointer-events-none absolute top-1/2 left-3 h-5 w-5" }), _jsx(PasswordInput.Input, { className: "pl-10", placeholder: "8 - 20 characters", ...register('confirmPassword') }), _jsx(PasswordInput.VisibilityTrigger, { children: _jsx(PasswordInput.Indicator, { fallback: _jsx(EyeOffIcon, { className: "text-white/50" }), asChild: true, children: _jsx(EyeIcon, { className: "text-white/50" }) }) })] }), _jsx(Field.ErrorText, { className: "text-[#ff2525b3] text-xs", children: errors.confirmPassword?.message })] })] }) }), _jsxs(Field.Root, { invalid: !!errors.verificationCode, children: [_jsx(Field.Label, { className: "text-xs", children: "OTP Code" }), _jsxs("div", { className: "relative", children: [_jsx(Field.Input, { className: twMerge(commonInputClass, 'pr-[5.75rem]'), placeholder: "Enter OTP Code", ...register('verificationCode') }), _jsx(Button, { type: "button", className: "-translate-y-1/2 absolute top-1/2 right-1 h-fit w-fit rounded-full bg-[linear-gradient(89deg,#c7802d_-15.91%,#ffe585_28.75%,#ffeca6_49.46%,#c7802d_112.69%)] py-[0.375rem] text-sm shadow-[inset_0px_-1px_2px_1px_#fff7e1]", disabled: !mobileNumberValue || !!errors.mobileNumber || cooldown.cooling, onClick: async () => {
63
63
  if (!cooldown.cooling) {
64
64
  await sendVerificationCodeMutation.mutateAsync({
65
65
  channel: 'SMS',
66
- recipient: mobileNumberParser.format(getValues('mobileNumber'))
66
+ recipient: mobileNumberParser.format(getValues('mobileNumber')),
67
67
  });
68
68
  cooldown.start();
69
69
  toaster.success({
70
- description: `OTP sent to ${getValues('mobileNumber')}`
70
+ description: `OTP sent to ${getValues('mobileNumber')}`,
71
71
  });
72
72
  }
73
73
  }, children: cooldown.cooling ? cooldown.countdown : 'Get OTP' })] }), _jsx(Field.ErrorText, { className: "text-[#ff2525b3] text-xs", children: errors.verificationCode?.message })] }), _jsx(Button, { type: "submit", className: "mt-7.5 rounded-full bg-[linear-gradient(89deg,#c7802d_-15.91%,#ffe585_28.75%,#ffeca6_49.46%,#c7802d_112.69%)] text-sm shadow-[inset_0px_-1px_2px_1px_#fff7e1]", fullWidth: true, disabled: !isValid || !isDirty, children: "Change Password" })] }) }));
@@ -26,8 +26,10 @@ export function ForgotPassword(props) {
26
26
  });
27
27
  }, [props.layout]);
28
28
  const Body = {
29
- crazywin: (_jsx(CrazywinForgotPassword, { logo: props.logo })),
30
- default: (_jsxs(Dialog.Content, { className: twMerge('mx-auto h-full w-full items-start p-3xl pb-4xl lg:h-auto lg:w-[400px] lg:rounded-xl', props.layout === 'happybingo' ? 'bg-white dark:bg-[#0C111D]' : 'bg-bg-primary-alt', props.className), children: [_jsx(Dialog.CloseTrigger, { children: _jsx(XIcon, {}) }), _jsx(Image, { src: props.logo, alt: "", width: 200, height: 100, className: "mx-auto h-auto w-[120px]", draggable: false }), _jsx(Suspense, { children: _jsx(ForgotPasswordForm, { layout: props.layout }) })] }))
29
+ crazywin: _jsx(CrazywinForgotPassword, { logo: props.logo }),
30
+ default: (_jsxs(Dialog.Content, { className: twMerge('mx-auto h-full w-full items-start p-3xl pb-4xl lg:h-auto lg:w-[400px] lg:rounded-xl', props.layout === 'happybingo'
31
+ ? 'bg-white dark:bg-[#0C111D]'
32
+ : 'bg-bg-primary-alt', props.className), children: [_jsx(Dialog.CloseTrigger, { children: _jsx(XIcon, {}) }), _jsx(Image, { src: props.logo, alt: "", width: 200, height: 100, className: "mx-auto h-auto w-[120px]", draggable: false }), _jsx(Suspense, { children: _jsx(ForgotPasswordForm, { layout: props.layout }) })] })),
31
33
  };
32
34
  return (_jsx(Dialog.Root, { open: globalStore.forgotPassword.open, onOpenChange: (details) => {
33
35
  globalStore.forgotPassword.setOpen(details.open);
@@ -49,10 +49,16 @@ export function ForgotPasswordForm({ layout }) {
49
49
  const base = z.object({
50
50
  mobileNumber: z.string().superRefine((v, ctx) => {
51
51
  if (!mobileNumberParser.validate(v)) {
52
- ctx.addIssue({ code: z.ZodIssueCode.custom, message: 'Invalid mobile number' });
52
+ ctx.addIssue({
53
+ code: z.ZodIssueCode.custom,
54
+ message: 'Invalid mobile number',
55
+ });
53
56
  }
54
57
  }),
55
- newPassword: z.string().min(8, 'Password must be 8 or more characters').max(100),
58
+ newPassword: z
59
+ .string()
60
+ .min(8, 'Password must be 8 or more characters')
61
+ .max(100),
56
62
  confirmPassword: z.string().min(1, 'Confirm your password'),
57
63
  verificationCode: includeOtp
58
64
  ? z.string().refine((v) => /^\d{4,6}$/.test(v), 'Invalid OTP')
@@ -103,8 +109,10 @@ export function ForgotPasswordForm({ layout }) {
103
109
  });
104
110
  const form2Ref = useRef(null);
105
111
  const Header = {
106
- 1: (_jsxs(_Fragment, { children: [_jsx("h2", { className: "mt-xl text-center font-semibold text-lg", children: "Forgot Password" }), _jsx("p", { className: twMerge('mt-xs text-center text-sm', layout === 'happybingo' ? 'text-[#475467] dark:text-[#94969C]' : 'text-text-secondary-700'), children: "Your new password will be used to sign in." })] })),
107
- 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", children: mobileNumberParser.format(step1Form.getValues('mobileNumber')) }), ' ', "via text"] })] }))
112
+ 1: (_jsxs(_Fragment, { children: [_jsx("h2", { className: "mt-xl text-center font-semibold text-lg", children: "Forgot Password" }), _jsx("p", { className: twMerge('mt-xs text-center text-sm', layout === 'happybingo'
113
+ ? 'text-[#475467] dark:text-[#94969C]'
114
+ : 'text-text-secondary-700'), children: "Your new password will be used to sign in." })] })),
115
+ 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", children: mobileNumberParser.format(step1Form.getValues('mobileNumber')) }), ' ', "via text"] })] })),
108
116
  };
109
117
  if (layout === 'happybingo') {
110
118
  return (_jsxs(_Fragment, { children: [Header[step], _jsxs("form", { className: "mt-3xl", onSubmit: step1Form.handleSubmit(async (data) => {
@@ -113,9 +121,11 @@ export function ForgotPasswordForm({ layout }) {
113
121
  newPassword: step1Form.getValues('newPassword'),
114
122
  verificationCode: step1Form.getValues('verificationCode'),
115
123
  });
116
- }), children: [_jsxs(Field.Root, { invalid: !!step1Form.formState.errors.mobileNumber, children: [_jsx(Field.Label, { className: 'text-[#344054] dark:text-[#CECFD2]', children: "Mobile Number" }), _jsxs("div", { className: "relative", children: [_jsxs("div", { className: "-translate-y-1/2 absolute top-1/2 left-3.5 flex shrink-0 items-center gap-md", children: [_jsx(localeInfo.country.flag, { className: "size-5" }), _jsx("span", { className: "text-text-placeholder", children: localeInfo.mobileNumber.areaCode })] }), _jsx(Field.Input, { className: 'border-[#D0D5DD] bg-transparent dark:border-[#333741]', style: {
124
+ }), children: [_jsxs(Field.Root, { invalid: !!step1Form.formState.errors.mobileNumber, children: [_jsx(Field.Label, { className: "text-[#344054] dark:text-[#CECFD2]", children: "Mobile Number" }), _jsxs("div", { className: "relative", children: [_jsxs("div", { className: "-translate-y-1/2 absolute top-1/2 left-3.5 flex shrink-0 items-center gap-md", children: [_jsx(localeInfo.country.flag, { className: "size-5" }), _jsx("span", { className: "text-text-placeholder", children: localeInfo.mobileNumber.areaCode })] }), _jsx(Field.Input, { className: "border-[#D0D5DD] bg-transparent dark:border-[#333741]", style: {
117
125
  paddingLeft: `calc(2.75rem + ${localeInfo.mobileNumber.areaCode.length}ch)`,
118
- }, ...step1Form.register('mobileNumber') })] }), _jsx(Field.ErrorText, { children: step1Form.formState.errors.mobileNumber?.message })] }), _jsx(Field.Root, { invalid: !!step1Form.formState.errors.newPassword, className: "mt-xl", children: _jsxs(PasswordInput.Root, { children: [_jsx(PasswordInput.Label, { className: 'text-[#344054] dark:text-[#CECFD2]', children: "New Password" }), _jsxs(PasswordInput.Control, { className: 'border-[#D0D5DD] bg-transparent dark:border-[#333741]', children: [_jsx(PasswordInput.Input, { placeholder: "Enter your new password", ...step1Form.register('newPassword') }), _jsx(PasswordInput.VisibilityTrigger, { children: _jsx(PasswordInput.Indicator, { fallback: _jsx(EyeOffIcon, {}), asChild: true, children: _jsx(EyeIcon, {}) }) })] }), _jsx(Field.ErrorText, { children: step1Form.formState.errors.newPassword?.message })] }) }), _jsx(Field.Root, { invalid: !!step1Form.formState.errors.confirmPassword, className: "mt-xl bg-transparent", children: _jsxs(PasswordInput.Root, { children: [_jsx(PasswordInput.Label, { className: 'text-[#344054] dark:text-[#CECFD2]', children: "Confirm Password" }), _jsxs(PasswordInput.Control, { className: 'border-[#D0D5DD] bg-transparent dark:border-[#333741]', children: [_jsx(PasswordInput.Input, { placeholder: "Confirm new password", ...step1Form.register('confirmPassword') }), _jsx(PasswordInput.VisibilityTrigger, { children: _jsx(PasswordInput.Indicator, { fallback: _jsx(EyeOffIcon, {}), asChild: true, children: _jsx(EyeIcon, {}) }) })] }), _jsx(Field.ErrorText, { children: step1Form.formState.errors.confirmPassword?.message })] }) }), _jsxs(Field.Root, { invalid: !!step1Form.formState.errors.verificationCode, className: "mt-xl bg-transparent", children: [_jsx(Field.Label, { className: 'text-[#344054] dark:text-[#CECFD2]', children: "OTP Code" }), _jsxs("div", { className: "grid grid-cols-[1fr_104px] gap-2", children: [_jsx(Field.Input, { placeholder: "Enter OTP Code", ...step1Form.register('verificationCode'), className: 'border-[#D0D5DD] bg-transparent dark:border-[#333741]' }), _jsx(Button, { variant: 'outline', className: 'bg-transparent', type: 'button', disabled: !mobileNumberValue || !!step1Form.formState.errors.mobileNumber || cooldown.cooling, onClick: async () => {
126
+ }, ...step1Form.register('mobileNumber') })] }), _jsx(Field.ErrorText, { children: step1Form.formState.errors.mobileNumber?.message })] }), _jsx(Field.Root, { invalid: !!step1Form.formState.errors.newPassword, className: "mt-xl", children: _jsxs(PasswordInput.Root, { children: [_jsx(PasswordInput.Label, { className: "text-[#344054] dark:text-[#CECFD2]", children: "New Password" }), _jsxs(PasswordInput.Control, { className: "border-[#D0D5DD] bg-transparent dark:border-[#333741]", children: [_jsx(PasswordInput.Input, { placeholder: "Enter your new password", ...step1Form.register('newPassword') }), _jsx(PasswordInput.VisibilityTrigger, { children: _jsx(PasswordInput.Indicator, { fallback: _jsx(EyeOffIcon, {}), asChild: true, children: _jsx(EyeIcon, {}) }) })] }), _jsx(Field.ErrorText, { children: step1Form.formState.errors.newPassword?.message })] }) }), _jsx(Field.Root, { invalid: !!step1Form.formState.errors.confirmPassword, className: "mt-xl bg-transparent", children: _jsxs(PasswordInput.Root, { children: [_jsx(PasswordInput.Label, { className: "text-[#344054] dark:text-[#CECFD2]", children: "Confirm Password" }), _jsxs(PasswordInput.Control, { className: "border-[#D0D5DD] bg-transparent dark:border-[#333741]", children: [_jsx(PasswordInput.Input, { placeholder: "Confirm new password", ...step1Form.register('confirmPassword') }), _jsx(PasswordInput.VisibilityTrigger, { children: _jsx(PasswordInput.Indicator, { fallback: _jsx(EyeOffIcon, {}), asChild: true, children: _jsx(EyeIcon, {}) }) })] }), _jsx(Field.ErrorText, { children: step1Form.formState.errors.confirmPassword?.message })] }) }), _jsxs(Field.Root, { invalid: !!step1Form.formState.errors.verificationCode, className: "mt-xl bg-transparent", children: [_jsx(Field.Label, { className: "text-[#344054] dark:text-[#CECFD2]", children: "OTP Code" }), _jsxs("div", { className: "grid grid-cols-[1fr_104px] gap-2", children: [_jsx(Field.Input, { placeholder: "Enter OTP Code", ...step1Form.register('verificationCode'), className: "border-[#D0D5DD] bg-transparent dark:border-[#333741]" }), _jsx(Button, { variant: "outline", className: "bg-transparent", type: "button", disabled: !mobileNumberValue ||
127
+ !!step1Form.formState.errors.mobileNumber ||
128
+ cooldown.cooling, onClick: async () => {
119
129
  if (!cooldown.cooling) {
120
130
  try {
121
131
  await sendVerificationCodeMutation.mutateAsync({
@@ -132,7 +142,9 @@ export function ForgotPasswordForm({ layout }) {
132
142
  });
133
143
  }
134
144
  }
135
- }, children: cooldown.cooling ? `${cooldown.countdown} sec` : 'Get OTP' })] }), _jsx(Field.ErrorText, { className: "text-[#ff2525b3] text-xs", children: step1Form.formState.errors.verificationCode?.message })] }), _jsx(Button, { type: "submit", className: "mt-3xl", disabled: step1Form.formState.isSubmitting || !step1Form.formState.isValid || !step1Form.formState.isDirty, children: "Set up New Password" })] })] }));
145
+ }, children: cooldown.cooling ? `${cooldown.countdown} sec` : 'Get OTP' })] }), _jsx(Field.ErrorText, { className: "text-[#ff2525b3] text-xs", children: step1Form.formState.errors.verificationCode?.message })] }), _jsx(Button, { type: "submit", className: "mt-3xl", disabled: step1Form.formState.isSubmitting ||
146
+ !step1Form.formState.isValid ||
147
+ !step1Form.formState.isDirty, children: "Set up New Password" })] })] }));
136
148
  }
137
149
  return (_jsxs(_Fragment, { children: [step === 1 && (_jsxs(_Fragment, { children: [Header[step], _jsxs("form", { className: "mt-3xl", onSubmit: step1Form.handleSubmit(async (data) => {
138
150
  try {
@@ -35,7 +35,7 @@ export function GameExit(props) {
35
35
  }
36
36
  return (_jsx(Dialog.Root, { open: isOpen, onOpenChange: (details) => {
37
37
  setIsOpen(details.open);
38
- }, lazyMount: true, unmountOnExit: true, closeOnEscape: false, closeOnInteractOutside: false, 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-center overflow-hidden rounded-2xl p-8 shadow-2xl', 'lg:mx-auto lg:h-auto lg:max-h-[90vh] lg:w-[480px] lg:p-10', 'fade-in-0 zoom-in-95 animate-in duration-300'), children: [props.logo && (_jsx("div", { className: "w-full", children: _jsx(Image, { src: props.logo, alt: "", width: 200, height: 100, className: "h-auto w-[7.5rem]", draggable: false }) })), _jsxs("div", { className: "w-full grow", children: [_jsx(Dialog.Title, { className: "mt-3xl text-center font-semibold text-brand-400 text-lg", children: "Game Exit" }), _jsx(Dialog.Description, { className: 'mt-lg mb-lg px-4 text-center leading-2xl', children: props.message ||
38
+ }, lazyMount: true, unmountOnExit: true, closeOnEscape: false, closeOnInteractOutside: false, 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-center overflow-hidden rounded-2xl p-8 shadow-2xl', 'lg:mx-auto lg:h-auto lg:max-h-[90vh] lg:w-[480px] lg:p-10', 'fade-in-0 zoom-in-95 animate-in duration-300'), children: [props.logo && (_jsx("div", { className: "w-full", children: _jsx(Image, { src: props.logo, alt: "", width: 200, height: 100, className: "h-auto w-[7.5rem]", draggable: false }) })), _jsxs("div", { className: "w-full grow", children: [_jsx(Dialog.Title, { className: "mt-3xl text-center font-semibold text-brand-400 text-lg", children: "Game Exit" }), _jsx(Dialog.Description, { className: "mt-lg mb-lg px-4 text-center leading-2xl", children: props.message ||
39
39
  'You have successfully quit the game. Thank you for playing!' })] }), _jsx(Dialog.Context, { children: (api) => (_jsx(Button, { type: "button", className: "mt-3 py-2.5", onClick: () => {
40
40
  handleClose();
41
41
  api.setOpen(false);
@@ -51,7 +51,7 @@ export function GamesPagination({ currentPage, totalPages, onPageChange, sibling
51
51
  if (currentPage === 0 || (paginationRange && paginationRange.length < 2)) {
52
52
  return null;
53
53
  }
54
- return (_jsx("div", { className: 'mx-10 flex items-center justify-center', children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Button, { variant: "outline", colorScheme: "gray", className: "w-fit rounded-md border-transparent", onClick: handlePrevious, disabled: currentPage === 1, "aria-label": "Previous", children: _jsx(ArrowLeftIcon, { className: "size-6" }) }), paginationRange?.map((pageNumber, index) => {
54
+ return (_jsx("div", { className: "mx-10 flex items-center justify-center", children: _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Button, { variant: "outline", colorScheme: "gray", className: "w-fit rounded-md border-transparent", onClick: handlePrevious, disabled: currentPage === 1, "aria-label": "Previous", children: _jsx(ArrowLeftIcon, { className: "size-6" }) }), paginationRange?.map((pageNumber, index) => {
55
55
  if (pageNumber === DOTS) {
56
56
  return (_jsx("span", { className: "flex h-10 w-10 items-center justify-center text-sm text-text-secondary", children: "..." }, `dots-${index}`));
57
57
  }
@@ -30,7 +30,7 @@ import { useJackpotsCarouselItemContext } from './JackpotsCarouselContext.js';
30
30
  export function JackpotsCarouselItem({ style, className, viewAllUrl, animate = true, customJackpotChestImage, chestImagesByTier, jackpotProfileShape = 'oval', }) {
31
31
  const [ref, inView] = useIntersectionObserver({
32
32
  threshold: 0.5,
33
- rootMargin: '50px'
33
+ rootMargin: '50px',
34
34
  });
35
35
  const jackpot = useJackpotsCarouselItemContext();
36
36
  const getTierFromName = useCallback((name) => {
@@ -68,7 +68,12 @@ export function JackpotsCarouselItem({ style, className, viewAllUrl, animate = t
68
68
  closed: closeChest,
69
69
  style: undefined,
70
70
  };
71
- }, [chestImagesByTier, customJackpotChestImage, jackpot.name, getTierFromName]);
71
+ }, [
72
+ chestImagesByTier,
73
+ customJackpotChestImage,
74
+ jackpot.name,
75
+ getTierFromName,
76
+ ]);
72
77
  const jackpotPayoutsQuery = useJackpotPayoutsQuery({
73
78
  first: 30,
74
79
  filter: {
@@ -195,7 +200,7 @@ function getPercentage(value, total) {
195
200
  return t === 0 ? 0 : (v / t) * 100;
196
201
  }
197
202
  // Memoized table row component to reduce re-renders (TBT optimization)
198
- const PayoutRow = memo(({ payout, className, localeInfo }) => (_jsxs("tr", { className: twMerge('whitespace-nowrap bg-bg-primary text-left text-sm text-text-secondary-700', className?.recentPayoutsTableBodyRow), children: [_jsx("td", { className: twMerge('h-12 border-border-secondary border-t-2 px-4', className?.recentPayoutsTableBodyData), children: mask(payout.member.name, {
203
+ const PayoutRow = memo(({ payout, className, localeInfo, }) => (_jsxs("tr", { className: twMerge('whitespace-nowrap bg-bg-primary text-left text-sm text-text-secondary-700', className?.recentPayoutsTableBodyRow), children: [_jsx("td", { className: twMerge('h-12 border-border-secondary border-t-2 px-4', className?.recentPayoutsTableBodyData), children: mask(payout.member.name, {
199
204
  totalCharsCount: 6,
200
205
  }) }), _jsx("td", { className: twMerge('h-12 border-border-secondary border-t-2 px-4', className?.recentPayoutsTableBodyData), children: capitalize(payout.game?.provider ?? '-', {
201
206
  delimiter: capitalize.delimiters.UNDERSCORE,
@@ -68,7 +68,7 @@ export function JackpotMultiStageDesktop({ animate = true, customJackpotChestIma
68
68
  const OverallProgressBar = () => {
69
69
  return (_jsxs("div", { className: "mt-3 lg:mt-4", children: [_jsxs("div", { className: "mb-[0.3125rem] flex items-center justify-between font-semibold text-sm text-text-primary-900", children: [_jsx("p", { children: "Overall Progress" }), overallPercentage, "%"] }), _jsx(Progress.Root, { className: "h-2 w-full rounded-full bg-bg-primary lg:h-4", max: 100, value: overallPercentage, children: _jsx(Progress.Track, { className: twMerge('h-full overflow-hidden rounded-full bg-bg-primary', className?.progressBarTrack), children: _jsx(Progress.Range, { className: "relative h-full overflow-hidden rounded-full bg-brand-500 pl-1.5", children: _jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-start pl-1.5", "aria-hidden": "true", children: arrowImages }) }) }) })] }));
70
70
  };
71
- const RecentPayoutsTable = () => (_jsx("div", { className: twMerge('max-h-[17rem] overflow-y-scroll rounded-xl', styles.scrollArea), children: _jsx("div", { className: 'rounded-xl border-gray-200', children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { children: _jsx("tr", { className: twMerge('h-8 whitespace-nowrap bg-bg-secondary text-left font-medium text-text-tertiary-600 text-xs', className?.recentPayoutsTableHeadRow), children: ['Stage', 'Player', 'Turnover Target', 'Prize', 'Timestamp'].map((header) => (_jsx("th", { className: "px-4", children: header }, header))) }) }), _jsx("tbody", { children: jackpot.stages
71
+ const RecentPayoutsTable = () => (_jsx("div", { className: twMerge('max-h-[17rem] overflow-y-scroll rounded-xl', styles.scrollArea), children: _jsx("div", { className: "rounded-xl border-gray-200", children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { children: _jsx("tr", { className: twMerge('h-8 whitespace-nowrap bg-bg-secondary text-left font-medium text-text-tertiary-600 text-xs', className?.recentPayoutsTableHeadRow), children: ['Stage', 'Player', 'Turnover Target', 'Prize', 'Timestamp'].map((header) => (_jsx("th", { className: "px-4", children: header }, header))) }) }), _jsx("tbody", { children: jackpot.stages
72
72
  ? jackpot.stages.map((j, i) => (_jsxs("tr", { className: twMerge('whitespace-nowrap bg-bg-primary text-left text-sm text-text-secondary-700', className?.recentPayoutsTableBodyRow), children: [_jsx("td", { className: twMerge('h-12 border-border-secondary border-t-2 px-4', className?.recentPayoutsTableBodyData), children: i + 1 }), _jsx("td", { className: twMerge('h-12 border-border-secondary border-t-2 px-4', className?.recentPayoutsTableBodyData), children: j.member?.name
73
73
  ? maskFirstLast(j.member.name, {
74
74
  firstCharsCount: 3,
@@ -167,7 +167,8 @@ export function KYCReminder({ enablePendingKycReminder = false, ...props }) {
167
167
  router.push('/');
168
168
  }, children: "Log Out" }) })] })), isPending &&
169
169
  !isVerificationLocked &&
170
- (enablePendingKycReminder || globalStore.kycReminder.open) && (_jsxs("div", { className: "p-3xl text-center", children: [_jsx("div", { className: "mx-auto mb-4 w-fit rounded-full bg-bg-primary p-2", children: _jsx(Image, { src: props.logo, alt: `${props.siteName} logo`, width: 200, height: 100, className: "mx-auto h-auto w-[120px]", draggable: false }) }), _jsx("h2", { className: `mt-4 font-semibold text-lg ${props.titleBgColor}`, children: "VERIFICATION IN PROGRESS" }), _jsx("p", { className: `mt-xs text-sm text-text-tertiary-600 ${props.descriptionBgColor}`, children: "Your account verification is currently under review. Please wait for approval to regain full access to this platform." }), _jsxs("div", { className: "mt-6 flex w-full items-center justify-center gap-3xl", children: [_jsx(Image, { src: props.pagcorLogo?.logo ?? pagcorLogo, alt: "PAGCOR logo", height: 88, width: 88, className: `h-[88px] w-auto shrink-0 ${props.pagcorLogo?.styles ?? ''}`, draggable: false, unoptimized: true }), _jsx(Image, { src: props.responsibleGamingLogo?.logo ?? responsibleGamingLogo, alt: "Responsible Gaming logo", height: 50, width: 186, className: `h-[50px] w-auto shrink-0 ${props.responsibleGamingLogo?.styles ?? ''}`, draggable: false, unoptimized: true })] }), _jsx("div", { className: "mt-6 space-y-lg", children: _jsx(Button, { className: "bg-transparent text-text-brand-primary-600", onClick: async () => {
170
+ (enablePendingKycReminder || globalStore.kycReminder.open) && (_jsxs("div", { className: "p-3xl text-center", children: [_jsx("div", { className: "mx-auto mb-4 w-fit rounded-full bg-bg-primary p-2", children: _jsx(Image, { src: props.logo, alt: `${props.siteName} logo`, width: 200, height: 100, className: "mx-auto h-auto w-[120px]", draggable: false }) }), _jsx("h2", { className: `mt-4 font-semibold text-lg ${props.titleBgColor}`, children: "VERIFICATION IN PROGRESS" }), _jsx("p", { className: `mt-xs text-sm text-text-tertiary-600 ${props.descriptionBgColor}`, children: "Your account verification is currently under review. Please wait for approval to regain full access to this platform." }), _jsxs("div", { className: "mt-6 flex w-full items-center justify-center gap-3xl", children: [_jsx(Image, { src: props.pagcorLogo?.logo ?? pagcorLogo, alt: "PAGCOR logo", height: 88, width: 88, className: `h-[88px] w-auto shrink-0 ${props.pagcorLogo?.styles ?? ''}`, draggable: false, unoptimized: true }), _jsx(Image, { src: props.responsibleGamingLogo?.logo ??
171
+ responsibleGamingLogo, alt: "Responsible Gaming logo", height: 50, width: 186, className: `h-[50px] w-auto shrink-0 ${props.responsibleGamingLogo?.styles ?? ''}`, draggable: false, unoptimized: true })] }), _jsx("div", { className: "mt-6 space-y-lg", children: _jsx(Button, { className: "bg-transparent text-text-brand-primary-600", onClick: async () => {
171
172
  if (Capacitor.isNativePlatform()) {
172
173
  const session = await getQueryClient().fetchQuery({
173
174
  queryKey: getSessionQueryKey(),
@@ -10,5 +10,5 @@ export const MIGRATE_LOADER_TITLE = 'Account migration';
10
10
  export const SIGN_IN_LOADER_TITLE = 'Signing in';
11
11
  export function MigrateInitializing(props) {
12
12
  const footerText = props.footerText ?? LOADER_FOOTER;
13
- return (_jsx("div", { className: mergeMigrateCardClassName(props.className), children: _jsxs("div", { className: "flex flex-col items-stretch gap-5 px-0.5 py-1 sm:px-1", children: [_jsx("div", { className: "flex justify-center", children: _jsxs("div", { className: "relative h-20 w-20 shrink-0", "aria-hidden": true, children: [_jsx("div", { className: "absolute inset-0 animate-spin rounded-full border-4 border-bg-tertiary border-t-button-tertiary-fg [animation-duration:1s]" }), _jsx("div", { className: "absolute inset-0 flex items-center justify-center text-button-tertiary-fg", children: props.logo ? (_jsx(Image, { src: props.logo, alt: "", width: 20, height: 20, className: "h-12 w-12 object-contain" })) : (_jsx(User01Icon, { className: "h-7 w-7", "aria-hidden": true })) })] }) }), _jsxs("div", { className: "flex w-full min-w-0 flex-col gap-1.5", children: [_jsx("h1", { className: "font-semibold text-text-primary-900 text-lg tracking-tight", children: props.title }), _jsx("p", { className: "min-w-0 max-w-full text-balance text-center text-sm text-text-secondary-700 leading-relaxed", children: LOADER_HEADLINE })] }), _jsxs("div", { className: "w-full min-w-0 space-y-1.5", children: [_jsxs("div", { className: "flex w-full min-w-0 items-center justify-between gap-3 text-text-tertiary-600 text-xs", children: [_jsx("span", { className: "min-w-0 truncate text-left", children: props.phaseLabel }), _jsxs("span", { className: "shrink-0 text-text-tertiary-600/90 tabular-nums", children: [props.pctShown, "%"] })] }), _jsx("div", { className: "h-2 w-full min-w-0 overflow-hidden rounded-full bg-bg-tertiary", children: _jsx("div", { className: "h-full rounded-full bg-button-primary-bg transition-[width] duration-1000 ease-[cubic-bezier(0.33,1,0.68,1)]", style: { width: `${props.barPct}%` } }) })] }), _jsx("p", { className: "min-w-0 max-w-full text-balance text-center text-text-tertiary-600/80 text-xs leading-relaxed", children: footerText })] }) }));
13
+ return (_jsx("div", { className: mergeMigrateCardClassName(props.className), children: _jsxs("div", { className: "flex flex-col items-stretch gap-5 px-0.5 py-1 sm:px-1", children: [_jsx("div", { className: "flex justify-center", children: _jsxs("div", { className: "relative h-20 w-20 shrink-0", "aria-hidden": true, children: [_jsx("div", { className: "absolute inset-0 animate-spin rounded-full border-4 border-bg-tertiary border-t-button-tertiary-fg [animation-duration:1s]" }), _jsx("div", { className: "absolute inset-0 flex items-center justify-center text-button-tertiary-fg", children: props.logo ? (_jsx(Image, { src: props.logo, alt: "", width: 20, height: 20, className: "h-12 w-12 object-contain" })) : (_jsx(User01Icon, { className: "h-7 w-7", "aria-hidden": true })) })] }) }), _jsxs("div", { className: "flex w-full min-w-0 flex-col gap-1.5", children: [_jsx("h1", { className: "font-semibold text-lg text-text-primary-900 tracking-tight", children: props.title }), _jsx("p", { className: "min-w-0 max-w-full text-balance text-center text-sm text-text-secondary-700 leading-relaxed", children: LOADER_HEADLINE })] }), _jsxs("div", { className: "w-full min-w-0 space-y-1.5", children: [_jsxs("div", { className: "flex w-full min-w-0 items-center justify-between gap-3 text-text-tertiary-600 text-xs", children: [_jsx("span", { className: "min-w-0 truncate text-left", children: props.phaseLabel }), _jsxs("span", { className: "shrink-0 text-text-tertiary-600/90 tabular-nums", children: [props.pctShown, "%"] })] }), _jsx("div", { className: "h-2 w-full min-w-0 overflow-hidden rounded-full bg-bg-tertiary", children: _jsx("div", { className: "h-full rounded-full bg-button-primary-bg transition-[width] duration-1000 ease-[cubic-bezier(0.33,1,0.68,1)]", style: { width: `${props.barPct}%` } }) })] }), _jsx("p", { className: "min-w-0 max-w-full text-balance text-center text-text-tertiary-600/80 text-xs leading-relaxed", children: footerText })] }) }));
14
14
  }
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import useEmblaCarousel, {} from 'embla-carousel-react';
4
4
  import Link from 'next/link';
5
- import { useCallback, useEffect, useState } from 'react';
5
+ import { useCallback, useEffect, useState, } from 'react';
6
6
  import { twMerge } from 'tailwind-merge';
7
7
  import { ArrowLeftIcon } from '../../icons/ArrowLeftIcon.js';
8
8
  import { ArrowRightIcon } from '../../icons/ArrowRightIcon.js';
@@ -1,10 +1,12 @@
1
1
  import type { Cashback as TCashback } from '../../types';
2
+ import type { PromoCardClassNames } from './PromosGrid';
2
3
  interface CashbackProps {
3
4
  data: TCashback;
4
5
  viewDetailsUrl: string;
5
6
  hasPromotionPeriod?: boolean;
6
7
  roundedButtons?: boolean;
7
8
  textOrientation?: 'left' | 'center';
9
+ cardClassNames?: PromoCardClassNames;
8
10
  }
9
- export declare function Cashback({ data, viewDetailsUrl, hasPromotionPeriod, roundedButtons, textOrientation, }: CashbackProps): import("react/jsx-runtime").JSX.Element;
11
+ export declare function Cashback({ data, viewDetailsUrl, hasPromotionPeriod, roundedButtons, textOrientation, cardClassNames, }: CashbackProps): import("react/jsx-runtime").JSX.Element;
10
12
  export {};
@@ -6,16 +6,16 @@ import { useShallow } from 'zustand/shallow';
6
6
  import { useAvailablePromosQuery } from '../../client/hooks/useAvailablePromosQuery.js';
7
7
  import { useGlobalStore } from '../../client/hooks/useGlobalStore.js';
8
8
  import { Button } from '../../ui/Button/index.js';
9
- import { formatPromotionPeriod } from './utils.js';
10
- export function Cashback({ data, viewDetailsUrl, hasPromotionPeriod, roundedButtons, textOrientation = 'center', }) {
9
+ import { formatPromotionPeriod, mergePromoCardClassName } from './utils.js';
10
+ export function Cashback({ data, viewDetailsUrl, hasPromotionPeriod, roundedButtons, textOrientation = 'center', cardClassNames, }) {
11
11
  const globalStore = useGlobalStore(useShallow((ctx) => ({
12
12
  depositWithdrawal: ctx.depositWithdrawal,
13
13
  })));
14
14
  const claimablePromos = useAvailablePromosQuery().data ?? [];
15
15
  const claimable = claimablePromos.find((availablePromo) => availablePromo.id === data.id);
16
16
  const promotionPeriod = formatPromotionPeriod(data.activationStartDateTime, data.activationEndDateTime);
17
- return (_jsxs("div", { className: "relative flex h-full flex-col overflow-hidden rounded-2xl border border-border-secondary bg-accent-50 bg-bg-primary-alt", children: [data.banner?.url && (_jsx(Image, { src: data.banner.url, alt: data.name, width: 400, height: 202, loading: "lazy", unoptimized: true, className: "block aspect-[365/180] w-full object-cover" })), hasPromotionPeriod && (_jsxs("div", { className: "bg-black py-1.5 text-center font-bold text-3xs uppercase", children: ["PROMOTION PERIOD: ", promotionPeriod] })), _jsxs("div", { className: "flex flex-grow flex-col px-4 pt-2xl pb-3xl", children: [_jsx("div", { className: twMerge('w-full grow font-semibold text-xl', textOrientation === 'center' ? 'text-center' : 'text-left'), children: data.name }), _jsxs("div", { className: "mt-auto flex flex-col gap-3 pt-4 lg:flex-row", children: [claimable && (_jsx(Button, { size: "sm", onClick: () => {
17
+ return (_jsxs("div", { className: mergePromoCardClassName('relative flex h-full flex-col overflow-hidden rounded-2xl border border-border-secondary bg-accent-50 bg-bg-primary-alt', cardClassNames?.container), children: [data.banner?.url && (_jsx(Image, { src: data.banner.url, alt: data.name, width: 400, height: 202, loading: "lazy", unoptimized: true, className: mergePromoCardClassName('block aspect-[365/180] w-full object-cover', cardClassNames?.image) })), hasPromotionPeriod && (_jsxs("div", { className: mergePromoCardClassName('bg-black py-1.5 text-center font-bold text-3xs uppercase', cardClassNames?.promotionPeriod), children: ["PROMOTION PERIOD: ", promotionPeriod] })), _jsxs("div", { className: mergePromoCardClassName('flex flex-grow flex-col px-4 pt-2xl pb-3xl', cardClassNames?.body), children: [_jsx("div", { className: mergePromoCardClassName(twMerge('w-full grow font-semibold text-xl', textOrientation === 'center' ? 'text-center' : 'text-left'), cardClassNames?.title), children: data.name }), _jsxs("div", { className: mergePromoCardClassName('mt-auto flex flex-col gap-3 pt-4 lg:flex-row', cardClassNames?.actions), children: [claimable && (_jsx(Button, { size: "sm", className: cardClassNames?.claimButton, onClick: () => {
18
18
  globalStore.depositWithdrawal.setOpen(true);
19
19
  globalStore.depositWithdrawal.setPromo(data.id);
20
- }, children: "Get bonus" })), _jsx(Button, { size: "sm", variant: "outline", asChild: true, className: roundedButtons ? 'rounded-full' : '', children: _jsxs(Link, { href: `${viewDetailsUrl}/${data.id}`, children: ["Read more", _jsxs("span", { className: "sr-only", children: [" about ", data.name] })] }) })] })] })] }));
20
+ }, children: "Get bonus" })), _jsx(Button, { size: "sm", variant: "outline", asChild: true, className: mergePromoCardClassName(roundedButtons ? 'rounded-full' : '', cardClassNames?.detailsButton), children: _jsxs(Link, { href: `${viewDetailsUrl}/${data.id}`, children: ["Read more", _jsxs("span", { className: "sr-only", children: [" about ", data.name] })] }) })] })] })] }));
21
21
  }
@@ -1,9 +1,11 @@
1
1
  import type { CustomPromo as TCustomPromo } from '../../types';
2
+ import type { PromoCardClassNames } from './PromosGrid';
2
3
  interface CustomPromoProps {
3
4
  data: TCustomPromo;
4
5
  viewDetailsUrl: string;
5
6
  roundedButtons?: boolean;
6
7
  textOrientation?: 'left' | 'center';
8
+ cardClassNames?: PromoCardClassNames;
7
9
  }
8
- export declare function CustomPromo({ data, viewDetailsUrl, roundedButtons, textOrientation, }: CustomPromoProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function CustomPromo({ data, viewDetailsUrl, roundedButtons, textOrientation, cardClassNames, }: CustomPromoProps): import("react/jsx-runtime").JSX.Element;
9
11
  export {};