@opexa/portal-components 0.0.696 → 0.0.698

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 (108) hide show
  1. package/dist/client/hooks/useCreateGCashWebpayDepositMutation.d.ts +4 -0
  2. package/dist/client/hooks/useCreateGCashWebpayDepositMutation.js +73 -0
  3. package/dist/components/AccountInfo/GoogleDisconnect.d.ts +7 -0
  4. package/dist/components/AccountInfo/GoogleDisconnect.js +11 -0
  5. package/dist/components/DepositWithdrawal/Deposit/Deposit.js +25 -54
  6. package/dist/components/DepositWithdrawal/Deposit/GCashWebpayDeposit /GCashWebpayDeposit .d.ts +1 -0
  7. package/dist/components/DepositWithdrawal/Deposit/GCashWebpayDeposit /GCashWebpayDeposit .js +191 -0
  8. package/dist/components/DepositWithdrawal/PaymentMethods.js +31 -9
  9. package/dist/components/DepositWithdrawal/utils.d.ts +1 -3
  10. package/dist/components/DepositWithdrawal/utils.js +1 -3
  11. package/dist/components/DigitainLauncher/Loading.d.ts +1 -0
  12. package/dist/components/DigitainLauncher/Loading.js +5 -0
  13. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarousel.d.ts +23 -0
  14. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarousel.js +1 -1
  15. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.d.ts +24 -1
  16. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.js +41 -9
  17. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.module.css +184 -0
  18. package/dist/components/Jackpots/JackpotsList/JackpotsList.d.ts +22 -0
  19. package/dist/components/Jackpots/JackpotsList/JackpotsList.js +1 -1
  20. package/dist/components/Jackpots/JackpotsList/JackpotsListItem.module.css +184 -0
  21. package/dist/components/Jackpots/JackpotsList/JackpotsListItemDesktop.d.ts +24 -1
  22. package/dist/components/Jackpots/JackpotsList/JackpotsListItemDesktop.js +32 -10
  23. package/dist/components/Jackpots/JackpotsList/JackpotsListItemMobile.d.ts +24 -1
  24. package/dist/components/Jackpots/JackpotsList/JackpotsListItemMobile.js +32 -10
  25. package/dist/components/Jackpots/JackpotsList/useJackpotsListItemData.d.ts +1 -0
  26. package/dist/components/Jackpots/JackpotsList/useJackpotsListItemData.js +11 -0
  27. package/dist/components/KYC/BasicInformation.d.ts +1 -0
  28. package/dist/components/KYC/BasicInformation.js +101 -0
  29. package/dist/components/KYC/IdentityVerification.d.ts +1 -0
  30. package/dist/components/KYC/IdentityVerification.js +120 -0
  31. package/dist/components/KYC/Indicator.d.ts +1 -0
  32. package/dist/components/KYC/Indicator.js +8 -0
  33. package/dist/components/KYC/KYC.lazy.d.ts +6 -0
  34. package/dist/components/KYC/KYC.lazy.js +45 -0
  35. package/dist/components/KYC/KYCContext.d.ts +6 -0
  36. package/dist/components/KYC/KYCContext.js +2 -0
  37. package/dist/components/KYC/KYCDefault/BasicInformation.d.ts +1 -0
  38. package/dist/components/KYC/KYCDefault/BasicInformation.js +101 -0
  39. package/dist/components/KYC/KYCVerificationStatus.d.ts +1 -0
  40. package/dist/components/KYC/KYCVerificationStatus.js +10 -0
  41. package/dist/components/KYC/KYCVerificationStatus.lazy.d.ts +1 -0
  42. package/dist/components/KYC/KYCVerificationStatus.lazy.js +33 -0
  43. package/dist/components/KYC/PersonalInformation.d.ts +1 -0
  44. package/dist/components/KYC/PersonalInformation.js +122 -0
  45. package/dist/components/KYC/useKYC.d.ts +25 -0
  46. package/dist/components/KYC/useKYC.js +38 -0
  47. package/dist/components/PortalProvider/CXDTokenObserver.d.ts +1 -0
  48. package/dist/components/PortalProvider/CXDTokenObserver.js +30 -0
  49. package/dist/components/PortalProvider/LinkGoogleAccountObserver.d.ts +1 -0
  50. package/dist/components/PortalProvider/LinkGoogleAccountObserver.js +29 -0
  51. package/dist/components/SessionWatcher/SessionWatcher.d.ts +1 -0
  52. package/dist/components/SessionWatcher/SessionWatcher.js +20 -0
  53. package/dist/components/SessionWatcher/index.d.ts +1 -0
  54. package/dist/components/SessionWatcher/index.js +1 -0
  55. package/dist/icons/LinkBrokenIcon.d.ts +2 -0
  56. package/dist/icons/LinkBrokenIcon.js +4 -0
  57. package/dist/images/responsible-gaming-yellow.png +0 -0
  58. package/dist/services/queries.d.ts +1 -1
  59. package/dist/services/queries.js +3 -0
  60. package/dist/services/wallet.d.ts +2 -0
  61. package/dist/services/wallet.js +4 -4
  62. package/dist/types/index.d.ts +1 -0
  63. package/dist/ui/AlertDialog/AlertDialog.d.ts +55 -55
  64. package/dist/ui/AlertDialog/alertDialog.recipe.d.ts +5 -5
  65. package/dist/ui/Badge/Badge.d.ts +12 -12
  66. package/dist/ui/Badge/badge.anatomy.d.ts +1 -1
  67. package/dist/ui/Badge/badge.recipe.d.ts +3 -3
  68. package/dist/ui/Carousel/Carousel.d.ts +99 -99
  69. package/dist/ui/Carousel/carousel.recipe.d.ts +11 -11
  70. package/dist/ui/Checkbox/Checkbox.d.ts +23 -23
  71. package/dist/ui/Checkbox/checkbox.recipe.d.ts +3 -3
  72. package/dist/ui/Clipboard/Clipboard.d.ts +18 -18
  73. package/dist/ui/Clipboard/clipboard.recipe.d.ts +3 -3
  74. package/dist/ui/Collapsible/Collapsible.d.ts +20 -20
  75. package/dist/ui/Collapsible/collapsible.recipe.d.ts +5 -5
  76. package/dist/ui/Combobox/Combobox.d.ts +42 -42
  77. package/dist/ui/Combobox/combobox.recipe.d.ts +3 -3
  78. package/dist/ui/DatePicker/DatePicker.d.ts +72 -72
  79. package/dist/ui/DatePicker/datePicker.recipe.d.ts +3 -3
  80. package/dist/ui/Dialog/Dialog.d.ts +33 -33
  81. package/dist/ui/Dialog/dialog.recipe.d.ts +3 -3
  82. package/dist/ui/Drawer/Drawer.d.ts +33 -33
  83. package/dist/ui/Drawer/drawer.recipe.d.ts +3 -3
  84. package/dist/ui/Field/Field.d.ts +21 -21
  85. package/dist/ui/Field/field.recipe.d.ts +3 -3
  86. package/dist/ui/Menu/Menu.d.ts +306 -306
  87. package/dist/ui/Menu/menu.recipe.d.ts +17 -17
  88. package/dist/ui/NumberInput/NumberInput.d.ts +24 -24
  89. package/dist/ui/NumberInput/numberInput.recipe.d.ts +3 -3
  90. package/dist/ui/PasswordInput/PasswordInput.d.ts +18 -18
  91. package/dist/ui/PasswordInput/passwordInput.recipe.d.ts +3 -3
  92. package/dist/ui/PinInput/PinInput.d.ts +12 -12
  93. package/dist/ui/PinInput/pinInput.recipe.d.ts +3 -3
  94. package/dist/ui/Popover/Popover.d.ts +55 -55
  95. package/dist/ui/Popover/popover.recipe.d.ts +5 -5
  96. package/dist/ui/Progress/Progress.d.ts +27 -27
  97. package/dist/ui/Progress/progress.recipe.d.ts +3 -3
  98. package/dist/ui/QrCode/QrCode.d.ts +25 -25
  99. package/dist/ui/QrCode/qrCode.recipe.d.ts +5 -5
  100. package/dist/ui/SegmentGroup/SegmentGroup.d.ts +18 -18
  101. package/dist/ui/SegmentGroup/segmentGroup.recipe.d.ts +3 -3
  102. package/dist/ui/Select/Select.d.ts +45 -45
  103. package/dist/ui/Select/select.recipe.d.ts +3 -3
  104. package/dist/ui/Table/table.anatomy.d.ts +1 -1
  105. package/dist/ui/Tabs/Tabs.d.ts +15 -15
  106. package/dist/ui/Tabs/tabs.recipe.d.ts +3 -3
  107. package/package.json +1 -1
  108. package/dist/tsconfig.build.tsbuildinfo +0 -1
@@ -1,3 +1,4 @@
1
+ import { type ImageProps } from 'next/image';
1
2
  import { type CSSProperties } from 'react';
2
3
  import type { ClassNameEntries } from './JackpotsCarousel';
3
4
  export interface JackpotsCarouselItemProps {
@@ -16,6 +17,28 @@ export interface JackpotsCarouselItemProps {
16
17
  };
17
18
  };
18
19
  animate?: boolean;
20
+ chestImagesByTier?: {
21
+ grand?: {
22
+ open: ImageProps['src'];
23
+ closed: ImageProps['src'];
24
+ };
25
+ major?: {
26
+ open: ImageProps['src'];
27
+ closed: ImageProps['src'];
28
+ };
29
+ minor?: {
30
+ open: ImageProps['src'];
31
+ closed: ImageProps['src'];
32
+ };
33
+ default?: {
34
+ open: ImageProps['src'];
35
+ closed: ImageProps['src'];
36
+ };
37
+ style?: {
38
+ wrapper?: string;
39
+ image?: string;
40
+ };
41
+ };
19
42
  jackpotProfileShape?: 'oval' | 'star';
20
43
  }
21
- export declare function JackpotsCarouselItem({ style, className, viewAllUrl, animate, customJackpotChestImage, jackpotProfileShape, }: JackpotsCarouselItemProps): import("react/jsx-runtime").JSX.Element | null;
44
+ export declare function JackpotsCarouselItem({ style, className, viewAllUrl, animate, customJackpotChestImage, chestImagesByTier, jackpotProfileShape, }: JackpotsCarouselItemProps): import("react/jsx-runtime").JSX.Element | null;
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
3
3
  import { Progress } from '@ark-ui/react/progress';
4
4
  import { format } from 'date-fns';
5
5
  import isMobile from 'is-mobile';
6
- import Image from 'next/image';
6
+ import Image, {} from 'next/image';
7
7
  import Link from 'next/link';
8
8
  import { useCallback, useEffect, useId, useMemo, useState, } from 'react';
9
9
  import { twMerge } from 'tailwind-merge';
@@ -27,11 +27,49 @@ import { mask } from '../../../utils/mask.js';
27
27
  import { parseDecimal } from '../../../utils/parseDecimal.js';
28
28
  import styles from '../Jackpots.module.css';
29
29
  import { useJackpotsCarouselItemContext } from './JackpotsCarouselContext.js';
30
- export function JackpotsCarouselItem({ style, className, viewAllUrl, animate = true, customJackpotChestImage, jackpotProfileShape = 'oval', }) {
30
+ export function JackpotsCarouselItem({ style, className, viewAllUrl, animate = true, customJackpotChestImage, chestImagesByTier, jackpotProfileShape = 'oval', }) {
31
31
  const [ref, inView] = useIntersectionObserver({
32
32
  threshold: 0.75,
33
33
  });
34
34
  const jackpot = useJackpotsCarouselItemContext();
35
+ const getTierFromName = (name) => {
36
+ const lowerName = name.toLowerCase();
37
+ if (lowerName.includes('grand'))
38
+ return 'grand';
39
+ if (lowerName.includes('major'))
40
+ return 'major';
41
+ if (lowerName.includes('minor'))
42
+ return 'minor';
43
+ return 'default';
44
+ };
45
+ const getChestImages = () => {
46
+ // Priority: chestImagesByTier > customJackpotChestImage > default
47
+ if (chestImagesByTier) {
48
+ const tier = getTierFromName(jackpot.name);
49
+ const tierImages = chestImagesByTier[tier] || chestImagesByTier.default;
50
+ if (tierImages) {
51
+ return {
52
+ open: tierImages.open,
53
+ closed: tierImages.closed,
54
+ style: chestImagesByTier.style,
55
+ };
56
+ }
57
+ }
58
+ if (customJackpotChestImage?.image) {
59
+ return {
60
+ open: customJackpotChestImage.image.open,
61
+ closed: customJackpotChestImage.image.closed,
62
+ style: customJackpotChestImage.style,
63
+ };
64
+ }
65
+ // Default fallback
66
+ return {
67
+ open: openChest,
68
+ closed: closeChest,
69
+ style: undefined,
70
+ };
71
+ };
72
+ const chestImages = getChestImages();
35
73
  const jackpotPayoutsQuery = useJackpotPayoutsQuery({
36
74
  first: 30,
37
75
  filter: {
@@ -97,13 +135,7 @@ export function JackpotsCarouselItem({ style, className, viewAllUrl, animate = t
97
135
  currency: localeInfo.currency.code,
98
136
  minDecimalPlaces: 2,
99
137
  maxDecimalPlaces: 2,
100
- }) })] }), _jsx("div", { className: "hidden min-w-25 lg:block" }), _jsx("div", { className: twMerge('right-0 bottom-[-60] z-1 min-w-25 lg:absolute', customJackpotChestImage?.style?.wrapper), children: _jsx(Image, { width: 150, height: 150, src: customJackpotChestImage?.image
101
- ? isPayingOut
102
- ? customJackpotChestImage.image.open
103
- : customJackpotChestImage.image.closed
104
- : isPayingOut
105
- ? openChest
106
- : closeChest, alt: "closeChest", className: twMerge('size-full h-25 w-25 p-2 lg:h-37.5 lg:w-37.5', customJackpotChestImage?.style?.image) }) })] }), _jsx("div", { className: twMerge('relative mt-4 hidden w-full gap-4 rounded-lg bg-bg-primary p-4 lg:flex', className?.latestPayoutRoot), children: latestJackpotPayout?.amount ? (_jsxs(_Fragment, { children: [_jsx(ProfileIcon, {}), _jsxs("div", { className: "flex flex-col gap-1 text-left", children: [_jsx(PayoutBadge, {}), _jsx("div", { className: "font-semibold", children: mask(latestJackpotPayout.member.name, {
138
+ }) })] }), _jsx("div", { className: "hidden min-w-25 lg:block" }), _jsx("div", { className: twMerge('right-0 bottom-[-60] z-1 min-w-25 lg:absolute', chestImages?.style?.wrapper), children: _jsx(Image, { width: 150, height: 150, src: isPayingOut ? chestImages.open : chestImages.closed, alt: "closeChest", className: twMerge('size-full h-25 w-25 p-2 lg:h-37.5 lg:w-37.5', chestImages?.style?.image) }) })] }), _jsx("div", { className: twMerge('relative mt-4 hidden w-full gap-4 rounded-lg bg-bg-primary p-4 lg:flex', className?.latestPayoutRoot), children: latestJackpotPayout?.amount ? (_jsxs(_Fragment, { children: [_jsx(ProfileIcon, {}), _jsxs("div", { className: "flex flex-col gap-1 text-left", children: [_jsx(PayoutBadge, {}), _jsx("div", { className: "font-semibold", children: mask(latestJackpotPayout.member.name, {
107
139
  totalCharsCount: 6,
108
140
  }) }), _jsx("div", { className: twMerge('text-2xl text-brand-400', className?.latestPayoutAmount), children: formatNumber(latestJackpotPayout.amount, {
109
141
  currency: localeInfo.currency.code,
@@ -0,0 +1,184 @@
1
+ @keyframes arrow-green-flash {
2
+ 0% {
3
+ color: #abefc6;
4
+ }
5
+ 100% {
6
+ color: #079455;
7
+ }
8
+ }
9
+
10
+ .animate-arrow-green-flash-1 {
11
+ animation: arrow-green-flash 0.4s infinite;
12
+ animation-delay: -0.2s;
13
+ }
14
+
15
+ .animate-arrow-green-flash-2 {
16
+ animation: arrow-green-flash 0.4s infinite;
17
+ animation-delay: -0.1s;
18
+ }
19
+
20
+ .animate-arrow-green-flash-3 {
21
+ animation: arrow-green-flash 0.4s infinite;
22
+ }
23
+
24
+ @keyframes arrow-red-flash {
25
+ 0%,
26
+ 100% {
27
+ color: #f97066;
28
+ }
29
+ 50% {
30
+ color: #fecdca;
31
+ }
32
+ }
33
+
34
+ .animate-arrow-red-flash-1 {
35
+ animation: arrow-red-flash 0.4s infinite;
36
+ }
37
+
38
+ .animate-arrow-red-flash-2 {
39
+ animation: arrow-red-flash 0.4s infinite;
40
+ animation-delay: -0.1s;
41
+ }
42
+
43
+ .animate-arrow-red-flash-3 {
44
+ animation: arrow-red-flash 0.4s infinite;
45
+ animation-delay: -0.2s;
46
+ }
47
+
48
+ /* Animated BG */
49
+ @keyframes rotate {
50
+ to {
51
+ transform: rotate(1turn);
52
+ }
53
+ }
54
+
55
+ .light-rays {
56
+ position: absolute;
57
+ top: 0;
58
+ left: 0;
59
+ right: 0;
60
+ bottom: 0;
61
+ overflow: hidden;
62
+
63
+ --first: var(--color-bg-tertiary);
64
+ --second: var(--color-bg-quaternary);
65
+ }
66
+
67
+ .light-rays::before,
68
+ .light-rays::after {
69
+ content: '';
70
+ position: absolute;
71
+ top: var(--light-rays-top, 150px);
72
+ left: calc(50% - 90px);
73
+ margin: -100vmax;
74
+ width: 200vmax;
75
+ height: 200vmax;
76
+ opacity: 0.6;
77
+ transform-origin: center;
78
+ }
79
+
80
+ .light-rays::before {
81
+ background: conic-gradient(
82
+ var(--first) 0deg 7.2deg,
83
+ var(--second) 7.2deg 14.4deg,
84
+ var(--first) 14.4deg 21.6deg,
85
+ var(--second) 21.6deg 28.8deg,
86
+ var(--first) 28.8deg 36deg,
87
+ var(--second) 36deg 43.2deg,
88
+ var(--first) 43.2deg 50.4deg,
89
+ var(--second) 50.4deg 57.6deg,
90
+ var(--first) 57.6deg 64.8deg,
91
+ var(--second) 64.8deg 72deg,
92
+ var(--first) 72deg 79.2deg,
93
+ var(--second) 79.2deg 86.4deg,
94
+ var(--first) 86.4deg 93.6deg,
95
+ var(--second) 93.6deg 100.8deg,
96
+ var(--first) 100.8deg 108deg,
97
+ var(--second) 108deg 115.2deg,
98
+ var(--first) 115.2deg 122.4deg,
99
+ var(--second) 122.4deg 129.6deg,
100
+ var(--first) 129.6deg 136.8deg,
101
+ var(--second) 136.8deg 144deg,
102
+ var(--first) 144deg 151.2deg,
103
+ var(--second) 151.2deg 158.4deg,
104
+ var(--first) 158.4deg 165.6deg,
105
+ var(--second) 165.6deg 172.8deg,
106
+ var(--first) 172.8deg 180deg,
107
+ var(--second) 180deg 187.2deg,
108
+ var(--first) 187.2deg 194.4deg,
109
+ var(--second) 194.4deg 201.6deg,
110
+ var(--first) 201.6deg 208.8deg,
111
+ var(--second) 208.8deg 216deg,
112
+ var(--first) 216deg 223.2deg,
113
+ var(--second) 223.2deg 230.4deg,
114
+ var(--first) 230.4deg 237.6deg,
115
+ var(--second) 237.6deg 244.8deg,
116
+ var(--first) 244.8deg 252deg,
117
+ var(--second) 252deg 259.2deg,
118
+ var(--first) 259.2deg 266.4deg,
119
+ var(--second) 266.4deg 273.6deg,
120
+ var(--first) 273.6deg 280.8deg,
121
+ var(--second) 280.8deg 288deg,
122
+ var(--first) 288deg 295.2deg,
123
+ var(--second) 295.2deg 302.4deg,
124
+ var(--first) 302.4deg 309.6deg,
125
+ var(--second) 309.6deg 316.8deg,
126
+ var(--first) 316.8deg 324deg,
127
+ var(--second) 324deg 331.2deg,
128
+ var(--first) 331.2deg 338.4deg,
129
+ var(--second) 338.4deg 345.6deg,
130
+ var(--first) 345.6deg 352.8deg,
131
+ var(--second) 352.8deg 360deg
132
+ );
133
+ animation: rotate 20s linear infinite;
134
+ }
135
+
136
+ @media (max-width: 1024px) {
137
+ .light-rays::before,
138
+ .light-rays::after {
139
+ left: auto;
140
+ right: 11%;
141
+ }
142
+ }
143
+
144
+ /* ScrollArea.module.css */
145
+ .scrollArea {
146
+ overflow-y: scroll;
147
+ padding-right: 4px;
148
+ }
149
+
150
+ /* WebKit-based browsers */
151
+ .scrollArea::-webkit-scrollbar {
152
+ width: 8px;
153
+ }
154
+
155
+ .scrollArea::-webkit-scrollbar-track {
156
+ background: var(--color-bg-primary-alt);
157
+ border-radius: 9999px;
158
+ }
159
+
160
+ .scrollArea::-webkit-scrollbar-thumb {
161
+ background-color: var(--color-bg-quaternary);
162
+ border-radius: 9999px;
163
+ }
164
+
165
+ @keyframes waveColor {
166
+ 0%,
167
+ 2.5% {
168
+ color: var(--wave-highlight-color);
169
+ }
170
+ 2.51%,
171
+ 100% {
172
+ color: var(--color-brand-300);
173
+ }
174
+ }
175
+
176
+ .animate-wave-color-success {
177
+ --wave-highlight-color: var(--color-success-800);
178
+ animation: waveColor 4s ease-in-out infinite;
179
+ }
180
+
181
+ .animate-wave-color-error {
182
+ --wave-highlight-color: var(--color-error-600);
183
+ animation: waveColor 4s ease-in-out infinite;
184
+ }
@@ -60,6 +60,28 @@ export interface JackpotsListProps {
60
60
  };
61
61
  };
62
62
  jackpotProfileShape?: 'oval' | 'star';
63
+ chestImagesByTier?: {
64
+ grand?: {
65
+ open: ImageProps['src'];
66
+ closed: ImageProps['src'];
67
+ };
68
+ major?: {
69
+ open: ImageProps['src'];
70
+ closed: ImageProps['src'];
71
+ };
72
+ minor?: {
73
+ open: ImageProps['src'];
74
+ closed: ImageProps['src'];
75
+ };
76
+ default?: {
77
+ open: ImageProps['src'];
78
+ closed: ImageProps['src'];
79
+ };
80
+ style?: {
81
+ wrapper?: string;
82
+ image?: string;
83
+ };
84
+ };
63
85
  }
64
86
  export declare function JackpotsList(props: JackpotsListProps): import("react/jsx-runtime").JSX.Element;
65
87
  export {};
@@ -34,5 +34,5 @@ export function JackpotsList(props) {
34
34
  const classNames = isString(props.className)
35
35
  ? { root: props.className }
36
36
  : (props.className ?? {});
37
- return (_jsx(JackpotsListPropsContext, { value: props, children: _jsxs("div", { ref: ref, style: styles.root, className: classNames.root, children: [_jsx("div", { className: "mb-3 font-semibold text-lg lg:mb-4.5", children: props.heading ?? 'Jackpots' }), jackpots.length > 0 ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "hidden flex-col gap-6 lg:flex", children: jackpots.map((jackpot) => (_jsx(JackpotsListItemContext, { value: jackpot, children: _jsx(JackpotsListItemDesktop, { style: styles.itemRoot, className: classNames, animate: props.animate, customJackpotChestImage: props.customJackpotChestImage, jackpotProfileShape: props.jackpotProfileShape }) }, jackpot.id))) }), _jsx("div", { className: "flex flex-col gap-6 lg:hidden", children: jackpots.map((jackpot) => (_jsx(JackpotsListItemContext, { value: jackpot, children: _jsx(JackpotsListItemMobile, { style: styles.itemRoot, className: classNames, animate: props.animate, customJackpotChestImage: props.customJackpotChestImage, jackpotProfileShape: props.jackpotProfileShape }) }, jackpot.id))) })] })) : (_jsxs("div", { className: "mt-5 flex h-fit flex-col items-center justify-center lg:mt-0 lg:h-62", children: [_jsx(Image, { width: 100, height: 100, src: closeChest, alt: "closeChest", className: "size-full h-29.5 w-29.5 mix-blend-luminosity lg:h-25 lg:w-25" }), _jsx("div", { className: "mt-4 font-semibold text-base text-text-primary-900", children: "No Jackpots" }), _jsxs("div", { className: "mt-1 text-center text-sm text-text-tertiary-600", children: ["No jackpots are running at the moment. ", _jsx("br", {}), "Please check back later!"] })] }))] }) }));
37
+ return (_jsx(JackpotsListPropsContext, { value: props, children: _jsxs("div", { ref: ref, style: styles.root, className: classNames.root, children: [_jsx("div", { className: "mb-3 font-semibold text-lg lg:mb-4.5", children: props.heading ?? 'Jackpots' }), jackpots.length > 0 ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "hidden flex-col gap-6 lg:flex", children: jackpots.map((jackpot) => (_jsx(JackpotsListItemContext, { value: jackpot, children: _jsx(JackpotsListItemDesktop, { style: styles.itemRoot, className: classNames, animate: props.animate, customJackpotChestImage: props.customJackpotChestImage, jackpotProfileShape: props.jackpotProfileShape, chestImagesByTier: props.chestImagesByTier }) }, jackpot.id))) }), _jsx("div", { className: "flex flex-col gap-6 lg:hidden", children: jackpots.map((jackpot) => (_jsx(JackpotsListItemContext, { value: jackpot, children: _jsx(JackpotsListItemMobile, { style: styles.itemRoot, className: classNames, animate: props.animate, customJackpotChestImage: props.customJackpotChestImage, jackpotProfileShape: props.jackpotProfileShape, chestImagesByTier: props.chestImagesByTier }) }, jackpot.id))) })] })) : (_jsxs("div", { className: "mt-5 flex h-fit flex-col items-center justify-center lg:mt-0 lg:h-62", children: [_jsx(Image, { width: 100, height: 100, src: closeChest, alt: "closeChest", className: "size-full h-29.5 w-29.5 mix-blend-luminosity lg:h-25 lg:w-25" }), _jsx("div", { className: "mt-4 font-semibold text-base text-text-primary-900", children: "No Jackpots" }), _jsxs("div", { className: "mt-1 text-center text-sm text-text-tertiary-600", children: ["No jackpots are running at the moment. ", _jsx("br", {}), "Please check back later!"] })] }))] }) }));
38
38
  }
@@ -0,0 +1,184 @@
1
+ @keyframes arrow-green-flash {
2
+ 0% {
3
+ color: #abefc6;
4
+ }
5
+ 100% {
6
+ color: #079455;
7
+ }
8
+ }
9
+
10
+ .animate-arrow-green-flash-1 {
11
+ animation: arrow-green-flash 0.4s infinite;
12
+ animation-delay: -0.2s;
13
+ }
14
+
15
+ .animate-arrow-green-flash-2 {
16
+ animation: arrow-green-flash 0.4s infinite;
17
+ animation-delay: -0.1s;
18
+ }
19
+
20
+ .animate-arrow-green-flash-3 {
21
+ animation: arrow-green-flash 0.4s infinite;
22
+ }
23
+
24
+ @keyframes arrow-red-flash {
25
+ 0%,
26
+ 100% {
27
+ color: #f97066;
28
+ }
29
+ 50% {
30
+ color: #fecdca;
31
+ }
32
+ }
33
+
34
+ .animate-arrow-red-flash-1 {
35
+ animation: arrow-red-flash 0.4s infinite;
36
+ }
37
+
38
+ .animate-arrow-red-flash-2 {
39
+ animation: arrow-red-flash 0.4s infinite;
40
+ animation-delay: -0.1s;
41
+ }
42
+
43
+ .animate-arrow-red-flash-3 {
44
+ animation: arrow-red-flash 0.4s infinite;
45
+ animation-delay: -0.2s;
46
+ }
47
+
48
+ /* Animated BG */
49
+ @keyframes rotate {
50
+ to {
51
+ transform: rotate(1turn);
52
+ }
53
+ }
54
+
55
+ .light-rays {
56
+ position: absolute;
57
+ top: 0;
58
+ left: 0;
59
+ right: 0;
60
+ bottom: 0;
61
+ overflow: hidden;
62
+
63
+ --first: var(--color-bg-tertiary);
64
+ --second: var(--color-bg-quaternary);
65
+ }
66
+
67
+ .light-rays::before,
68
+ .light-rays::after {
69
+ content: '';
70
+ position: absolute;
71
+ top: var(--light-rays-top, 150px);
72
+ left: calc(50% - 90px);
73
+ margin: -100vmax;
74
+ width: 200vmax;
75
+ height: 200vmax;
76
+ opacity: 0.6;
77
+ transform-origin: center;
78
+ }
79
+
80
+ .light-rays::before {
81
+ background: conic-gradient(
82
+ var(--first) 0deg 7.2deg,
83
+ var(--second) 7.2deg 14.4deg,
84
+ var(--first) 14.4deg 21.6deg,
85
+ var(--second) 21.6deg 28.8deg,
86
+ var(--first) 28.8deg 36deg,
87
+ var(--second) 36deg 43.2deg,
88
+ var(--first) 43.2deg 50.4deg,
89
+ var(--second) 50.4deg 57.6deg,
90
+ var(--first) 57.6deg 64.8deg,
91
+ var(--second) 64.8deg 72deg,
92
+ var(--first) 72deg 79.2deg,
93
+ var(--second) 79.2deg 86.4deg,
94
+ var(--first) 86.4deg 93.6deg,
95
+ var(--second) 93.6deg 100.8deg,
96
+ var(--first) 100.8deg 108deg,
97
+ var(--second) 108deg 115.2deg,
98
+ var(--first) 115.2deg 122.4deg,
99
+ var(--second) 122.4deg 129.6deg,
100
+ var(--first) 129.6deg 136.8deg,
101
+ var(--second) 136.8deg 144deg,
102
+ var(--first) 144deg 151.2deg,
103
+ var(--second) 151.2deg 158.4deg,
104
+ var(--first) 158.4deg 165.6deg,
105
+ var(--second) 165.6deg 172.8deg,
106
+ var(--first) 172.8deg 180deg,
107
+ var(--second) 180deg 187.2deg,
108
+ var(--first) 187.2deg 194.4deg,
109
+ var(--second) 194.4deg 201.6deg,
110
+ var(--first) 201.6deg 208.8deg,
111
+ var(--second) 208.8deg 216deg,
112
+ var(--first) 216deg 223.2deg,
113
+ var(--second) 223.2deg 230.4deg,
114
+ var(--first) 230.4deg 237.6deg,
115
+ var(--second) 237.6deg 244.8deg,
116
+ var(--first) 244.8deg 252deg,
117
+ var(--second) 252deg 259.2deg,
118
+ var(--first) 259.2deg 266.4deg,
119
+ var(--second) 266.4deg 273.6deg,
120
+ var(--first) 273.6deg 280.8deg,
121
+ var(--second) 280.8deg 288deg,
122
+ var(--first) 288deg 295.2deg,
123
+ var(--second) 295.2deg 302.4deg,
124
+ var(--first) 302.4deg 309.6deg,
125
+ var(--second) 309.6deg 316.8deg,
126
+ var(--first) 316.8deg 324deg,
127
+ var(--second) 324deg 331.2deg,
128
+ var(--first) 331.2deg 338.4deg,
129
+ var(--second) 338.4deg 345.6deg,
130
+ var(--first) 345.6deg 352.8deg,
131
+ var(--second) 352.8deg 360deg
132
+ );
133
+ animation: rotate 20s linear infinite;
134
+ }
135
+
136
+ @media (max-width: 1024px) {
137
+ .light-rays::before,
138
+ .light-rays::after {
139
+ left: auto;
140
+ right: 11%;
141
+ }
142
+ }
143
+
144
+ /* ScrollArea.module.css */
145
+ .scrollArea {
146
+ overflow-y: scroll;
147
+ padding-right: 4px;
148
+ }
149
+
150
+ /* WebKit-based browsers */
151
+ .scrollArea::-webkit-scrollbar {
152
+ width: 8px;
153
+ }
154
+
155
+ .scrollArea::-webkit-scrollbar-track {
156
+ background: var(--color-bg-primary-alt);
157
+ border-radius: 9999px;
158
+ }
159
+
160
+ .scrollArea::-webkit-scrollbar-thumb {
161
+ background-color: var(--color-bg-quaternary);
162
+ border-radius: 9999px;
163
+ }
164
+
165
+ @keyframes waveColor {
166
+ 0%,
167
+ 2.5% {
168
+ color: var(--wave-highlight-color);
169
+ }
170
+ 2.51%,
171
+ 100% {
172
+ color: var(--color-brand-300);
173
+ }
174
+ }
175
+
176
+ .animate-wave-color-success {
177
+ --wave-highlight-color: var(--color-success-800);
178
+ animation: waveColor 4s ease-in-out infinite;
179
+ }
180
+
181
+ .animate-wave-color-error {
182
+ --wave-highlight-color: var(--color-error-600);
183
+ animation: waveColor 4s ease-in-out infinite;
184
+ }
@@ -1,3 +1,4 @@
1
+ import { type ImageProps } from 'next/image';
1
2
  import type { CSSProperties } from 'react';
2
3
  import type { ClassNameEntries } from './JackpotsList';
3
4
  interface JackpotsListItemDesktopProps {
@@ -14,7 +15,29 @@ interface JackpotsListItemDesktopProps {
14
15
  image?: string;
15
16
  };
16
17
  };
18
+ chestImagesByTier?: {
19
+ grand?: {
20
+ open: ImageProps['src'];
21
+ closed: ImageProps['src'];
22
+ };
23
+ major?: {
24
+ open: ImageProps['src'];
25
+ closed: ImageProps['src'];
26
+ };
27
+ minor?: {
28
+ open: ImageProps['src'];
29
+ closed: ImageProps['src'];
30
+ };
31
+ default?: {
32
+ open: ImageProps['src'];
33
+ closed: ImageProps['src'];
34
+ };
35
+ style?: {
36
+ wrapper?: string;
37
+ image?: string;
38
+ };
39
+ };
17
40
  jackpotProfileShape?: 'oval' | 'star';
18
41
  }
19
- export declare function JackpotsListItemDesktop({ animate, customJackpotChestImage, jackpotProfileShape, className, ...props }: JackpotsListItemDesktopProps): import("react/jsx-runtime").JSX.Element | null;
42
+ export declare function JackpotsListItemDesktop({ animate, customJackpotChestImage, chestImagesByTier, jackpotProfileShape, className, ...props }: JackpotsListItemDesktopProps): import("react/jsx-runtime").JSX.Element | null;
20
43
  export {};
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Progress } from '@ark-ui/react/progress';
3
3
  import { format } from 'date-fns';
4
- import Image from 'next/image';
4
+ import Image, {} from 'next/image';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { ArrowNarrowUpRightIcon } from '../../../icons/ArrowNarrowUpRightIcon.js';
7
7
  import { ChevronLeftIcon } from '../../../icons/ChevronLeftIcon.js';
@@ -23,9 +23,37 @@ import { useJackpotsListItemContext } from './JackpotsListContext.js';
23
23
  import { JackpotsListItemGameProviders } from './JackpotsListItemGameProviders.js';
24
24
  import { JackpotsListItemRules } from './JackpotsListItemRules.js';
25
25
  import { useJackpotsListItemData } from './useJackpotsListItemData.js';
26
- export function JackpotsListItemDesktop({ animate = true, customJackpotChestImage, jackpotProfileShape = 'oval', className, ...props }) {
26
+ export function JackpotsListItemDesktop({ animate = true, customJackpotChestImage, chestImagesByTier, jackpotProfileShape = 'oval', className, ...props }) {
27
27
  const jackpot = useJackpotsListItemContext();
28
- const { rootRef, jackpotPayouts, topJackpotPayout, filteredGameProviders, localeInfo, isPayingOut, jackpotAmount, arrowImages, getAccumulatingJackpotDescription, } = useJackpotsListItemData();
28
+ const { rootRef, jackpotPayouts, topJackpotPayout, filteredGameProviders, localeInfo, isPayingOut, jackpotAmount, arrowImages, getAccumulatingJackpotDescription, getTierFromName, } = useJackpotsListItemData();
29
+ const getChestImages = () => {
30
+ // Priority: chestImagesByTier > customJackpotChestImage > default
31
+ if (chestImagesByTier) {
32
+ const tier = getTierFromName(jackpot.name);
33
+ const tierImages = chestImagesByTier[tier] || chestImagesByTier.default;
34
+ if (tierImages) {
35
+ return {
36
+ open: tierImages.open,
37
+ closed: tierImages.closed,
38
+ style: chestImagesByTier.style,
39
+ };
40
+ }
41
+ }
42
+ if (customJackpotChestImage?.image) {
43
+ return {
44
+ open: customJackpotChestImage.image.open,
45
+ closed: customJackpotChestImage.image.closed,
46
+ style: customJackpotChestImage.style,
47
+ };
48
+ }
49
+ // Default fallback
50
+ return {
51
+ open: openChest,
52
+ closed: closeChest,
53
+ style: undefined,
54
+ };
55
+ };
56
+ const chestImages = getChestImages();
29
57
  const ProfileIcon = () => jackpotProfileShape === 'oval' ? (_jsxs("div", { className: "relative flex h-18 w-18 items-center justify-center rounded-full bg-bg-tertiary", children: [_jsx(User01Icon, { className: "size-9 text-text-quarterary-500" }), _jsx("div", { className: twMerge('absolute right-0 bottom-safe-area-inset-bottom flex h-6 w-6 items-center justify-center rounded-full border-[1.5px] border-bg-primary bg-yellow-400 font-bold text-brand-950 text-xs', className?.latestPayoutRankRoot), children: "1st" })] })) : (_jsxs("div", { className: "relative grid h-18 w-18", children: [_jsx(StarIcon, { className: "col-start-1 row-start-1 h-full w-full" }), _jsx(User01Icon, { className: "z-10 col-start-1 row-start-1 size-9 place-self-center text-text-quarterary-500" }), _jsx("div", { className: twMerge('-right-0 absolute bottom-safe-area-inset-bottom z-20 flex h-7 w-7 items-center justify-center rounded-full border-[1.5px] border-bg-primary bg-yellow-400 text-center font-bold text-brand-950 text-xs', className?.latestPayoutRankRoot), children: "1st" })] }));
30
58
  const PayoutBadge = () => (_jsxs("div", { className: twMerge('flex h-fit w-fit items-center gap-1 rounded-sm border border-utility-brand-200 bg-utility-brand-50 px-2 py-0.5 font-medium text-utility-brand-700 text-xs', className?.latestPayoutBadgeRoot), children: [_jsx(Trophy01Icon, { className: twMerge('size-3.5 text-utility-brand-600', className?.latestPayoutBadgeIcon) }), "Latest Payout"] }));
31
59
  const ProgressBar = () => (_jsxs("div", { className: "mt-3 lg:mt-4", children: [_jsxs("div", { className: "mb-1 flex justify-between", children: [_jsx("div", { className: "font-semibold text-text-primary-900 text-xs", children: formatNumber(0, {
@@ -72,13 +100,7 @@ export function JackpotsListItemDesktop({ animate = true, customJackpotChestImag
72
100
  currency: localeInfo.currency.code,
73
101
  minDecimalPlaces: 2,
74
102
  maxDecimalPlaces: 2,
75
- }) })] }), _jsx("div", { className: "min-w-30" }), _jsx("div", { className: twMerge('right-0 bottom-[-60] z-1 min-w-30 lg:absolute', customJackpotChestImage?.style?.wrapper), children: _jsx(Image, { width: 150, height: 150, src: customJackpotChestImage?.image
76
- ? isPayingOut
77
- ? customJackpotChestImage.image.open
78
- : customJackpotChestImage.image.closed
79
- : isPayingOut
80
- ? openChest
81
- : closeChest, alt: "closeChest", className: twMerge('size-full h-25 w-25 p-2 lg:h-37.5 lg:w-37.5', customJackpotChestImage?.style?.image) }) })] }), _jsx("div", { className: twMerge('relative mt-4 hidden w-full gap-4 rounded-lg bg-bg-primary p-4 lg:flex', className?.latestPayoutRoot), children: topJackpotPayout?.amount ? (_jsxs(_Fragment, { children: [_jsx(ProfileIcon, {}), _jsxs("div", { className: "flex flex-col gap-1 text-left", children: [_jsx(PayoutBadge, {}), _jsx("div", { className: "font-semibold", children: mask(topJackpotPayout.member.name, {
103
+ }) })] }), _jsx("div", { className: "min-w-30" }), _jsx("div", { className: twMerge('right-0 bottom-[-60] z-1 min-w-30 lg:absolute', chestImages?.style?.wrapper), children: _jsx(Image, { width: 150, height: 150, src: isPayingOut ? chestImages.open : chestImages.closed, alt: "chest", className: twMerge('size-full h-25 w-25 p-2 lg:h-37.5 lg:w-37.5', chestImages?.style?.image) }) })] }), _jsx("div", { className: twMerge('relative mt-4 hidden w-full gap-4 rounded-lg bg-bg-primary p-4 lg:flex', className?.latestPayoutRoot), children: topJackpotPayout?.amount ? (_jsxs(_Fragment, { children: [_jsx(ProfileIcon, {}), _jsxs("div", { className: "flex flex-col gap-1 text-left", children: [_jsx(PayoutBadge, {}), _jsx("div", { className: "font-semibold", children: mask(topJackpotPayout.member.name, {
82
104
  totalCharsCount: 6,
83
105
  }) }), _jsx("div", { className: twMerge('text-2xl text-brand-400', className?.latestPayoutAmount), children: formatNumber(topJackpotPayout.amount, {
84
106
  currency: localeInfo.currency.code,
@@ -1,3 +1,4 @@
1
+ import { type ImageProps } from 'next/image';
1
2
  import { type CSSProperties } from 'react';
2
3
  import type { ClassNameEntries } from './JackpotsList';
3
4
  interface JackpotsListItemMobileProps {
@@ -14,7 +15,29 @@ interface JackpotsListItemMobileProps {
14
15
  image?: string;
15
16
  };
16
17
  };
18
+ chestImagesByTier?: {
19
+ grand?: {
20
+ open: ImageProps['src'];
21
+ closed: ImageProps['src'];
22
+ };
23
+ major?: {
24
+ open: ImageProps['src'];
25
+ closed: ImageProps['src'];
26
+ };
27
+ minor?: {
28
+ open: ImageProps['src'];
29
+ closed: ImageProps['src'];
30
+ };
31
+ default?: {
32
+ open: ImageProps['src'];
33
+ closed: ImageProps['src'];
34
+ };
35
+ style?: {
36
+ wrapper?: string;
37
+ image?: string;
38
+ };
39
+ };
17
40
  jackpotProfileShape?: 'oval' | 'star';
18
41
  }
19
- export declare function JackpotsListItemMobile({ animate, customJackpotChestImage, jackpotProfileShape, className, ...props }: JackpotsListItemMobileProps): import("react/jsx-runtime").JSX.Element | null;
42
+ export declare function JackpotsListItemMobile({ animate, customJackpotChestImage, jackpotProfileShape, chestImagesByTier, className, ...props }: JackpotsListItemMobileProps): import("react/jsx-runtime").JSX.Element | null;
20
43
  export {};