@opexa/portal-components 0.0.308 → 0.0.309

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 (266) hide show
  1. package/dist/client/hooks/useCamera.js +2 -2
  2. package/dist/client/hooks/useControllableState.js +1 -1
  3. package/dist/client/hooks/useInfiniteQueryHelper.js +2 -3
  4. package/dist/client/hooks/useMarkGameAsFavoriteMutation.js +1 -2
  5. package/dist/client/hooks/useMobileNumberParser.js +1 -1
  6. package/dist/client/utils/recaptcha.d.ts +14 -0
  7. package/dist/client/utils/recaptcha.js +18 -0
  8. package/dist/components/Account/Account.lazy.js +5 -5
  9. package/dist/components/Account/account.recipe.js +4 -4
  10. package/dist/components/AccountInfo/AccountInfo.js +6 -6
  11. package/dist/components/AccountSecurity/AccountSecurity.js +6 -6
  12. package/dist/components/AccountVerification/AccountVerification.js +7 -7
  13. package/dist/components/Banner/Banner.js +1 -1
  14. package/dist/components/BetRecords/BetRecords.client.js +5 -5
  15. package/dist/components/Bonus/Bonus.client.js +2 -2
  16. package/dist/components/Bonuses/Bonuses.client.js +10 -10
  17. package/dist/components/Bonuses/BonusesTrigger.js +1 -1
  18. package/dist/components/Bonuses/ClaimSpotBonus.lazy.js +1 -1
  19. package/dist/components/Cashback/Cashback.client.js +2 -2
  20. package/dist/components/CustomPromo/CustomPromo.js +1 -1
  21. package/dist/components/DepositWithdrawal/Deposit/AvailablePromos.js +1 -1
  22. package/dist/components/DepositWithdrawal/Deposit/Deposit.js +2 -2
  23. package/dist/components/DepositWithdrawal/Deposit/GCashDeposit/GCashDeposit.js +2 -2
  24. package/dist/components/DepositWithdrawal/Deposit/LibanganDeposit/LibanganDeposit.js +2 -2
  25. package/dist/components/DepositWithdrawal/Deposit/MayaAppDeposit/MayaAppDeposit.js +2 -2
  26. package/dist/components/DepositWithdrawal/Deposit/MayaDeposit/MayaDeposit.js +2 -2
  27. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositAlert.js +1 -1
  28. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositDetails.js +2 -2
  29. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositForm.js +1 -1
  30. package/dist/components/DepositWithdrawal/Deposit/PisoPayDeposit/PisoPayDeposit.js +2 -2
  31. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositAlert.js +1 -1
  32. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositDetails.js +2 -2
  33. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositForm.js +1 -1
  34. package/dist/components/DepositWithdrawal/DepositWithdrawal.lazy.js +2 -2
  35. package/dist/components/DepositWithdrawal/DepositWithdrawalTrigger.js +2 -2
  36. package/dist/components/DepositWithdrawal/HasPendingBonuses.js +1 -1
  37. package/dist/components/DepositWithdrawal/PaymentMethods.js +1 -1
  38. package/dist/components/DepositWithdrawal/Withdrawal/GCashWithdrawal/GCashWithdrawal.js +3 -3
  39. package/dist/components/DepositWithdrawal/Withdrawal/InstapayWithdrawal/InstapayWithdrawal.js +2 -4
  40. package/dist/components/DepositWithdrawal/Withdrawal/MayaAppWithdrawal/MayaAppWithdrawal.js +2 -2
  41. package/dist/components/DepositWithdrawal/Withdrawal/MayaWithdrawal/MayaWithdrawal.js +3 -3
  42. package/dist/components/DepositWithdrawal/Withdrawal/PisoPayWithdrawal/PisoPayWithdrawal.js +2 -2
  43. package/dist/components/DepositWithdrawal/Withdrawal/TransactionPasswordNotSet.js +2 -2
  44. package/dist/components/DepositWithdrawal/Withdrawal/VentajaWithdrawal/VentajaWithdrawal.js +2 -2
  45. package/dist/components/DepositWithdrawal/Withdrawal/Withdrawal.js +4 -4
  46. package/dist/components/DigitainLauncher/Fallback.js +1 -1
  47. package/dist/components/DigitainLauncher/Loading.js +1 -1
  48. package/dist/components/DigitainLauncher/utils.js +1 -2
  49. package/dist/components/Disclaimer/DisclaimerV1.js +1 -1
  50. package/dist/components/Disclaimer/DisclaimerV2.js +3 -3
  51. package/dist/components/Disclaimer/ResponsibleGaming.d.ts +10 -0
  52. package/dist/components/Disclaimer/ResponsibleGaming.js +13 -0
  53. package/dist/components/Disclaimer/TermsOfUse.d.ts +11 -0
  54. package/dist/components/Disclaimer/TermsOfUse.js +13 -0
  55. package/dist/components/FavoriteGames/FavoriteGames.client.js +4 -4
  56. package/dist/components/ForgotPassword/ForgotPassword.lazy.js +1 -1
  57. package/dist/components/ForgotPassword/ForgotPasswordForm.js +5 -5
  58. package/dist/components/GCashFailed/GCashFailed.js +1 -1
  59. package/dist/components/GCashSuccess/GCashSuccess.js +1 -1
  60. package/dist/components/GameLaunch/GameLaunch.lazy.js +4 -4
  61. package/dist/components/GameLaunch/GameLaunchTrigger.js +2 -4
  62. package/dist/components/GameProviders/GameProvidersCarousel.js +1 -1
  63. package/dist/components/GameProviders/GameProvidersList.js +1 -1
  64. package/dist/components/Games/Game.js +3 -3
  65. package/dist/components/Games/GamesCarousel.client.js +2 -4
  66. package/dist/components/Games/GamesList.client.js +2 -2
  67. package/dist/components/GamesSearch/GamesSearch.js +4 -6
  68. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarousel.js +1 -1
  69. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.d.ts +1 -1
  70. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.js +53 -51
  71. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.module.css +184 -184
  72. package/dist/components/Jackpots/JackpotsList/JackpotsList.js +1 -1
  73. package/dist/components/Jackpots/JackpotsList/JackpotsListItem.module.css +184 -184
  74. package/dist/components/Jackpots/JackpotsList/JackpotsListItemDesktop.js +14 -12
  75. package/dist/components/Jackpots/JackpotsList/JackpotsListItemGameProviders.js +1 -1
  76. package/dist/components/Jackpots/JackpotsList/JackpotsListItemMobile.js +13 -11
  77. package/dist/components/Jackpots/JackpotsList/JackpotsListItemRules.js +1 -1
  78. package/dist/components/Jackpots/JackpotsList/useJackpotsListItemData.js +15 -15
  79. package/dist/components/KYC/BasicInformation.js +1 -1
  80. package/dist/components/KYC/CaptureIdDocument.d.ts +1 -0
  81. package/dist/components/KYC/CaptureIdDocument.js +219 -0
  82. package/dist/components/KYC/CaptureSelfie.d.ts +1 -0
  83. package/dist/components/KYC/CaptureSelfie.js +285 -0
  84. package/dist/components/KYC/DisplayImage.d.ts +5 -0
  85. package/dist/components/KYC/DisplayImage.js +8 -0
  86. package/dist/components/KYC/FileUpload.d.ts +10 -0
  87. package/dist/components/KYC/FileUpload.js +72 -0
  88. package/dist/components/KYC/IdentityVerification.js +1 -1
  89. package/dist/components/KYC/KYC.lazy.js +1 -1
  90. package/dist/components/KYC/KYCReminder.lazy.js +1 -1
  91. package/dist/components/KYC/NoCameraError.d.ts +7 -0
  92. package/dist/components/KYC/NoCameraError.js +6 -0
  93. package/dist/components/KYC/PersonOverlayDesktop.d.ts +7 -0
  94. package/dist/components/KYC/PersonOverlayDesktop.js +9 -0
  95. package/dist/components/KYC/PersonalInformation.js +1 -1
  96. package/dist/components/KYC/utils.d.ts +9 -0
  97. package/dist/components/KYC/utils.js +79 -0
  98. package/dist/components/Marquee/Marquee.js +1 -1
  99. package/dist/components/Messages/Messages.lazy.js +5 -5
  100. package/dist/components/Messages/MessagesPopup.js +3 -3
  101. package/dist/components/Messages/MessagesTrigger.js +1 -1
  102. package/dist/components/News/News.js +1 -1
  103. package/dist/components/NewsFeed/News.d.ts +2 -2
  104. package/dist/components/NewsFeed/News.js +1 -1
  105. package/dist/components/NewsFeed/NewsFeedCarousel.js +2 -2
  106. package/dist/components/NewsFeed/NewsFeedList.js +1 -1
  107. package/dist/components/PortalProvider/Snackbar.js +2 -2
  108. package/dist/components/Promo/Promo.client.js +2 -2
  109. package/dist/components/Promos/Cashback.js +1 -1
  110. package/dist/components/Promos/CustomPromo.d.ts +2 -2
  111. package/dist/components/Promos/CustomPromo.js +1 -1
  112. package/dist/components/Promos/Promo.js +1 -1
  113. package/dist/components/Promos/PromosCarousel.js +2 -2
  114. package/dist/components/Promos/PromosGrid.js +2 -2
  115. package/dist/components/Quests/DailyCheckInQuest.js +3 -3
  116. package/dist/components/Quests/JourneyQuest.js +5 -5
  117. package/dist/components/Quests/OnboardingQuest.js +2 -2
  118. package/dist/components/Quests/Quests.client.js +4 -4
  119. package/dist/components/Quests/WageringQuest.js +2 -2
  120. package/dist/components/ResponsibleGaming/ResponsibleGaming.lazy.js +1 -1
  121. package/dist/components/Search/Search.lazy.js +7 -9
  122. package/dist/components/SignIn/MobileNumberSignIn.js +5 -5
  123. package/dist/components/SignIn/NameAndPasswordSignIn.js +2 -2
  124. package/dist/components/SignIn/SignIn.lazy.d.ts +1 -1
  125. package/dist/components/SignIn/SignIn.lazy.js +1 -2
  126. package/dist/components/SignIn/SignInForm.js +1 -1
  127. package/dist/components/SignUp/SignUpDefault/SignUp.lazy.d.ts +17 -0
  128. package/dist/components/SignUp/SignUpDefault/SignUp.lazy.js +18 -0
  129. package/dist/components/SignUp/SignUpDefault/SignUpContext.d.ts +6 -0
  130. package/dist/components/SignUp/SignUpDefault/SignUpContext.js +2 -0
  131. package/dist/components/SignUp/SignUpDefault/SignUpDefault.lazy.js +1 -1
  132. package/dist/components/SignUp/SignUpDefault/SignUpDefaultForm.js +7 -7
  133. package/dist/components/SignUp/SignUpDefault/SignUpForm.d.ts +1 -0
  134. package/dist/components/SignUp/SignUpDefault/SignUpForm.js +310 -0
  135. package/dist/components/SignUp/SignUpKYC/CaptureIdDocument.d.ts +1 -0
  136. package/dist/components/SignUp/SignUpKYC/CaptureIdDocument.js +198 -0
  137. package/dist/components/SignUp/SignUpKYC/CaptureSelfie.d.ts +1 -0
  138. package/dist/components/SignUp/SignUpKYC/CaptureSelfie.js +251 -0
  139. package/dist/components/SignUp/SignUpKYC/IdFrontImageField/IdFrontImageField.client.js +7 -7
  140. package/dist/components/SignUp/SignUpKYC/IdFrontImageField/IdFrontImageField.js +1 -1
  141. package/dist/components/SignUp/SignUpKYC/ImageUploader.d.ts +10 -0
  142. package/dist/components/SignUp/SignUpKYC/ImageUploader.js +42 -0
  143. package/dist/components/SignUp/SignUpKYC/PersonOverlayDesktop.d.ts +7 -0
  144. package/dist/components/SignUp/SignUpKYC/PersonOverlayDesktop.js +9 -0
  145. package/dist/components/SignUp/SignUpKYC/SelfieImageField/SelfieImageField.client.js +6 -6
  146. package/dist/components/SignUp/SignUpKYC/SelfieImageField/SelfieImageField.js +1 -1
  147. package/dist/components/SignUp/SignUpKYC/SelfieImageField/useSelfieImageField.js +0 -1
  148. package/dist/components/SignUp/SignUpKYC/SignUpFormKYC.d.ts +1 -0
  149. package/dist/components/SignUp/SignUpKYC/SignUpFormKYC.js +464 -0
  150. package/dist/components/SignUp/SignUpKYC/SignUpKYC.lazy.js +1 -1
  151. package/dist/components/SignUp/SignUpKYC/SignUpKYCForm.js +8 -8
  152. package/dist/components/SignUp/SignUpKYC/useImageUploader.d.ts +11 -0
  153. package/dist/components/SignUp/SignUpKYC/useImageUploader.js +20 -0
  154. package/dist/components/SignUp/SignUpKYC/utils.d.ts +9 -0
  155. package/dist/components/SignUp/SignUpKYC/utils.js +79 -0
  156. package/dist/components/TermsAndConditions/TermsAndConditions.lazy.js +1 -1
  157. package/dist/components/TermsOfUse/TermsOfUse.lazy.js +1 -1
  158. package/dist/components/TopWins/TopWins.client.js +3 -3
  159. package/dist/components/Tournaments/TournamentsCarousel/TournamentsCarousel.js +1 -1
  160. package/dist/components/Tournaments/TournamentsCarousel/TournamentsCarouselItem.js +10 -8
  161. package/dist/components/Tournaments/TournamentsCarousel/TournamentsCarouselItem.module.css +184 -184
  162. package/dist/components/Tournaments/TournamentsList/TournamentItem.module.css +184 -184
  163. package/dist/components/Tournaments/TournamentsList/TournamentsList.js +2 -2
  164. package/dist/components/Tournaments/TournamentsList/TournamentsListItemDesktop.js +9 -7
  165. package/dist/components/Tournaments/TournamentsList/TournamentsListItemGameProviders.js +1 -1
  166. package/dist/components/Tournaments/TournamentsList/TournamentsListItemMobile.js +8 -6
  167. package/dist/components/Tournaments/TournamentsList/TournamentsListItemRules.js +1 -1
  168. package/dist/components/Tournaments/TournamentsList/useTournamentListItemData.js +1 -1
  169. package/dist/components/TransactionRecords/DepositRecordsTable.js +2 -2
  170. package/dist/components/TransactionRecords/TableFilters.js +1 -1
  171. package/dist/components/TransactionRecords/TransactionRecords.suspense.js +1 -1
  172. package/dist/components/TransactionRecords/TransactionRecordsTable.js +2 -2
  173. package/dist/components/TransactionRecords/WithdrawalRecordsTable.js +2 -2
  174. package/dist/components/shared/Empty.js +1 -1
  175. package/dist/components/shared/IdFrontImageField/IdFrontImageField.client.js +7 -7
  176. package/dist/components/shared/IdFrontImageField/IdFrontImageField.js +1 -1
  177. package/dist/components/shared/SelfieImageField/SelfieImageField.client.js +6 -6
  178. package/dist/components/shared/SelfieImageField/SelfieImageField.js +1 -1
  179. package/dist/components/shared/SelfieImageField/useSelfieImageField.js +0 -1
  180. package/dist/constants/EnvVar.d.ts +1 -1
  181. package/dist/handlers/postTransformIdFrontImage.d.ts +3 -0
  182. package/dist/handlers/postTransformIdFrontImage.js +82 -0
  183. package/dist/handlers/postTransformSelfieImage.d.ts +3 -0
  184. package/dist/handlers/postTransformSelfieImage.js +82 -0
  185. package/dist/middleware.d.ts +1 -1
  186. package/dist/middleware.js +1 -1
  187. package/dist/services/graphqlRequest.js +0 -1
  188. package/dist/styles/theme.css +706 -706
  189. package/dist/ui/AlertDialog/AlertDialog.d.ts +154 -154
  190. package/dist/ui/AlertDialog/alertDialog.recipe.d.ts +14 -14
  191. package/dist/ui/AlertDialog/alertDialog.recipe.js +6 -6
  192. package/dist/ui/Avatar/avatar.recipe.js +3 -3
  193. package/dist/ui/Badge/Badge.d.ts +12 -12
  194. package/dist/ui/Badge/badge.anatomy.d.ts +1 -1
  195. package/dist/ui/Badge/badge.recipe.d.ts +3 -3
  196. package/dist/ui/Badge/badge.recipe.js +7 -7
  197. package/dist/ui/Button/button.recipe.d.ts +2 -2
  198. package/dist/ui/Button/button.recipe.js +3 -3
  199. package/dist/ui/Carousel/Carousel.d.ts +45 -45
  200. package/dist/ui/Carousel/carousel.recipe.d.ts +5 -5
  201. package/dist/ui/Checkbox/Checkbox.d.ts +23 -23
  202. package/dist/ui/Checkbox/checkbox.recipe.d.ts +3 -3
  203. package/dist/ui/Checkbox/checkbox.recipe.js +1 -1
  204. package/dist/ui/Clipboard/Clipboard.d.ts +18 -18
  205. package/dist/ui/Clipboard/clipboard.recipe.d.ts +3 -3
  206. package/dist/ui/Clipboard/clipboard.recipe.js +2 -2
  207. package/dist/ui/Collapsible/Collapsible.d.ts +32 -32
  208. package/dist/ui/Collapsible/collapsible.recipe.d.ts +8 -8
  209. package/dist/ui/Collapsible/collapsible.recipe.js +2 -2
  210. package/dist/ui/Combobox/Combobox.d.ts +42 -42
  211. package/dist/ui/Combobox/Combobox.js +0 -1
  212. package/dist/ui/Combobox/combobox.recipe.d.ts +3 -3
  213. package/dist/ui/Combobox/combobox.recipe.js +6 -6
  214. package/dist/ui/DatePicker/DatePicker.d.ts +72 -72
  215. package/dist/ui/DatePicker/datePicker.recipe.d.ts +3 -3
  216. package/dist/ui/DatePicker/datePicker.recipe.js +7 -7
  217. package/dist/ui/Dialog/Dialog.d.ts +154 -154
  218. package/dist/ui/Dialog/dialog.recipe.d.ts +14 -14
  219. package/dist/ui/Dialog/dialog.recipe.js +4 -4
  220. package/dist/ui/Drawer/Drawer.d.ts +33 -33
  221. package/dist/ui/Drawer/drawer.recipe.d.ts +3 -3
  222. package/dist/ui/Drawer/drawer.recipe.js +5 -5
  223. package/dist/ui/Field/Field.d.ts +21 -21
  224. package/dist/ui/Field/field.recipe.d.ts +3 -3
  225. package/dist/ui/Field/field.recipe.js +3 -3
  226. package/dist/ui/IconButton/iconButton.recipe.d.ts +2 -2
  227. package/dist/ui/Menu/Menu.d.ts +144 -144
  228. package/dist/ui/Menu/menu.recipe.d.ts +8 -8
  229. package/dist/ui/NumberInput/numberInput.recipe.js +5 -5
  230. package/dist/ui/PasswordInput/PasswordInput.d.ts +18 -18
  231. package/dist/ui/PasswordInput/passwordInput.recipe.d.ts +3 -3
  232. package/dist/ui/PasswordInput/passwordInput.recipe.js +3 -3
  233. package/dist/ui/PinInput/pinInput.recipe.js +3 -3
  234. package/dist/ui/Popover/Popover.d.ts +121 -121
  235. package/dist/ui/Popover/popover.recipe.d.ts +11 -11
  236. package/dist/ui/Popover/popover.recipe.js +1 -1
  237. package/dist/ui/Presence/Presence.js +1 -1
  238. package/dist/ui/Progress/Progress.d.ts +27 -27
  239. package/dist/ui/Progress/progress.recipe.d.ts +3 -3
  240. package/dist/ui/Progress/progress.recipe.js +2 -2
  241. package/dist/ui/SegmentGroup/SegmentGroup.d.ts +18 -18
  242. package/dist/ui/SegmentGroup/segmentGroup.recipe.d.ts +3 -3
  243. package/dist/ui/SegmentGroup/segmentGroup.recipe.js +4 -4
  244. package/dist/ui/Select/Select.d.ts +45 -45
  245. package/dist/ui/Select/Select.js +0 -1
  246. package/dist/ui/Select/select.recipe.d.ts +3 -3
  247. package/dist/ui/Select/select.recipe.js +7 -7
  248. package/dist/ui/Table/Table.d.ts +21 -21
  249. package/dist/ui/Table/table.anatomy.d.ts +1 -1
  250. package/dist/ui/Table/table.recipe.d.ts +3 -3
  251. package/dist/ui/Table/table.recipe.js +3 -3
  252. package/dist/ui/Tabs/Tabs.d.ts +15 -15
  253. package/dist/ui/Tabs/tabs.recipe.d.ts +3 -3
  254. package/dist/ui/Tabs/tabs.recipe.js +4 -4
  255. package/dist/ui/Tooltip/tooltip.recipe.js +1 -1
  256. package/dist/utils/gamesAvailable3pmTo3am.d.ts +1 -0
  257. package/dist/utils/gamesAvailable3pmTo3am.js +1 -0
  258. package/dist/utils/getGameName.d.ts +1 -0
  259. package/dist/utils/getGameName.js +6 -0
  260. package/dist/utils/getLocaleInfo.js +7 -7
  261. package/dist/utils/getQueryClient.js +1 -1
  262. package/dist/utils/isBetween3amAnd3pm.d.ts +1 -0
  263. package/dist/utils/isBetween3amAnd3pm.js +5 -0
  264. package/dist/utils/parseDecimal.js +1 -1
  265. package/dist/utils/validateFile.d.ts +1 -1
  266. package/package.json +159 -164
@@ -0,0 +1,79 @@
1
+ import * as faceapi from 'face-api.js';
2
+ import Resizer from 'react-image-file-resizer';
3
+ export async function loadFaceApiModels() {
4
+ // const url = `${STATIC_ENDPOINT}/models`;
5
+ const url = '/models';
6
+ await Promise.all([
7
+ faceapi.nets.tinyFaceDetector.loadFromUri(url),
8
+ faceapi.nets.faceLandmark68Net.loadFromUri(url),
9
+ faceapi.nets.faceRecognitionNet.loadFromUri(url),
10
+ ]);
11
+ }
12
+ export function dataURLtoBlob(dataURL) {
13
+ const parts = dataURL.split(';base64,');
14
+ const contentType = parts[0].split(':')[1];
15
+ const raw = window.atob(parts[1]);
16
+ const rawLength = raw.length;
17
+ const uInt8Array = new Uint8Array(rawLength);
18
+ for (let i = 0; i < rawLength; ++i) {
19
+ uInt8Array[i] = raw.charCodeAt(i);
20
+ }
21
+ return new Blob([uInt8Array], { type: contentType });
22
+ }
23
+ export const resizeFile = (file) => new Promise((resolve) => {
24
+ Resizer.imageFileResizer(file, 300, 300, 'jpeg', 100, 0, (uri) => {
25
+ resolve(uri);
26
+ }, 'file');
27
+ });
28
+ export const MAX_FILE_SIZE = 10; /* in MB */
29
+ export const MAX_NAME_LENGTH = 52;
30
+ export const SUPPORTED_FILES = [
31
+ /* add more supported ext */
32
+ 'image/png',
33
+ 'image/jpg',
34
+ 'image/jpeg',
35
+ ];
36
+ function removeFilenameExt(subject) {
37
+ const l = subject.split('.');
38
+ l.pop();
39
+ return l.join('.');
40
+ }
41
+ export function validateFile(file) {
42
+ const fileType = file.type;
43
+ const fileSize = file.size / (1024 * 1024);
44
+ const nameLength = removeFilenameExt(file.name).length;
45
+ if (fileSize > MAX_FILE_SIZE)
46
+ return 'File too large';
47
+ if (nameLength > MAX_NAME_LENGTH)
48
+ return 'File name too long';
49
+ if (!SUPPORTED_FILES.includes(fileType))
50
+ return 'Unsupported file';
51
+ }
52
+ export function showPermissionInstructions() {
53
+ const instructions = `
54
+ Camera access is blocked. To enable camera access:
55
+
56
+ Chrome/Edge:
57
+ 1. Click the camera icon in the address bar
58
+ 2. Select "Always allow" and click "Done"
59
+ 3. Or go to Settings > Privacy and security > Site settings > Camera
60
+
61
+ Firefox:
62
+ 1. Click the shield icon in the address bar
63
+ 2. Click on "Camera blocked"
64
+ 3. Select "Allow" and refresh the page
65
+
66
+ Safari:
67
+ 1. Go to Safari > Settings > Websites > Camera
68
+ 2. Find this website and change to "Allow"
69
+
70
+ After changing permissions, please refresh the page and try again.
71
+ `;
72
+ alert(instructions);
73
+ }
74
+ export const cameraErrorDescriptions = {
75
+ NotAllowedError: 'We were unable to detect a camera on your device. Please ensure it is properly connected and accessible to this application.',
76
+ NotReadableError: 'We were unable to access your camera. Please check if another application is using it or try reconnecting your device.',
77
+ NotFoundError: 'No camera was found. Please connect a camera and try again.',
78
+ NoIdDetectedError: 'No ID document was detected in the frame. Please ensure your ID is clearly visible and try again.',
79
+ };
@@ -30,7 +30,7 @@ export function TermsAndConditions({ logo, siteName, content, ...props }) {
30
30
  globalStore.disclaimer.setOpen(true);
31
31
  }
32
32
  globalStore.termsAndConditions.setNext(null);
33
- }, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "z-popover" }), _jsx(Dialog.Positioner, { className: "z-popover", children: _jsxs(Dialog.Content, { className: twMerge('p-3xl flex h-full w-full flex-col items-start overflow-y-auto lg:mx-auto lg:h-auto lg:max-h-[80vh] lg:w-[400px]', 'scrollbar-thumb:bg-bg-quaternary scrollbar-track:bg-transparent scrollbar:h-2 scrollbar:w-2 scrollbar-thumb:rounded-full'), children: [_jsx(Image, { src: logo, alt: "", width: 200, height: 100, className: "mx-auto h-auto w-[120px]", draggable: false }), _jsxs("div", { className: "w-full grow", children: [_jsxs(Dialog.Title, { className: "text-brand-400 mt-3xl text-center text-lg font-semibold", children: [siteName, " Terms of Use"] }), _jsx(Dialog.Description, { className: "leading-2xl mt-xs text-sm", children: content }), _jsxs("div", { className: "gap-3xl mt-5 flex items-center justify-center", children: [_jsx(Image, { src: pagcorLogo, alt: "", height: 75, width: 88, className: "h-[5.5rem] w-auto shrink-0", draggable: false }), _jsx(Image, { src: props.responsibleGamingLogo ?? responsibleGamingLogo, alt: "", height: 62, width: 186, className: "h-[3.875rem] w-auto shrink-0", draggable: false })] })] }), _jsx(Dialog.Context, { children: (api) => (_jsx(Button, { type: "button", className: "mt-3 py-2.5", onClick: () => {
33
+ }, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "z-popover" }), _jsx(Dialog.Positioner, { className: "z-popover", children: _jsxs(Dialog.Content, { className: twMerge('flex h-full w-full flex-col items-start overflow-y-auto p-3xl lg:mx-auto lg:h-auto lg:max-h-[80vh] lg:w-[400px]', 'scrollbar:h-2 scrollbar:w-2 scrollbar-thumb:rounded-full scrollbar-thumb:bg-bg-quaternary scrollbar-track:bg-transparent'), children: [_jsx(Image, { src: logo, alt: "", width: 200, height: 100, className: "mx-auto h-auto w-[120px]", draggable: false }), _jsxs("div", { className: "w-full grow", children: [_jsxs(Dialog.Title, { className: "mt-3xl text-center font-semibold text-brand-400 text-lg", children: [siteName, " Terms of Use"] }), _jsx(Dialog.Description, { className: "mt-xs text-sm leading-2xl", children: content }), _jsxs("div", { className: "mt-5 flex items-center justify-center gap-3xl", children: [_jsx(Image, { src: pagcorLogo, alt: "", height: 75, width: 88, className: "h-[5.5rem] w-auto shrink-0", draggable: false }), _jsx(Image, { src: props.responsibleGamingLogo ?? responsibleGamingLogo, alt: "", height: 62, width: 186, className: "h-[3.875rem] w-auto shrink-0", draggable: false })] })] }), _jsx(Dialog.Context, { children: (api) => (_jsx(Button, { type: "button", className: "mt-3 py-2.5", onClick: () => {
34
34
  api.setOpen(false);
35
35
  }, children: "I Agree" })) })] }) })] }) }));
36
36
  }
@@ -30,7 +30,7 @@ export function TermsOfUse({ logo, siteName, content, ...props }) {
30
30
  globalStore.disclaimer.setOpen(true);
31
31
  }
32
32
  globalStore.termsOfUse.setNext(null);
33
- }, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "z-popover" }), _jsx(Dialog.Positioner, { className: "z-popover", children: _jsxs(Dialog.Content, { className: twMerge('p-3xl flex h-full w-full flex-col items-start overflow-y-auto lg:mx-auto lg:h-auto lg:max-h-[80vh] lg:w-[400px]', 'scrollbar-thumb:bg-bg-quaternary scrollbar-track:bg-transparent scrollbar:h-2 scrollbar:w-2 scrollbar-thumb:rounded-full'), children: [_jsx(Image, { src: logo, alt: "", width: 200, height: 100, className: "mx-auto h-auto w-[120px]", draggable: false }), _jsxs("div", { className: "w-full grow", children: [_jsxs(Dialog.Title, { className: "text-brand-400 mt-3xl text-center text-lg font-semibold", children: [siteName, " Terms of Use"] }), _jsx(Dialog.Description, { className: "leading-2xl mt-xs text-sm", children: content }), _jsxs("div", { className: "gap-3xl mt-5 flex items-center justify-center", children: [_jsx(Image, { src: pagcorLogo, alt: "", height: 75, width: 88, className: "h-[5.5rem] w-auto shrink-0", draggable: false }), _jsx(Image, { src: props.responsibleGamingLogo ?? responsibleGamingLogo, alt: "", height: 62, width: 186, className: "h-[3.875rem] w-auto shrink-0", draggable: false })] })] }), _jsx(Dialog.Context, { children: (api) => (_jsx(Button, { type: "button", className: "mt-3 py-2.5", onClick: () => {
33
+ }, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "z-popover" }), _jsx(Dialog.Positioner, { className: "z-popover", children: _jsxs(Dialog.Content, { className: twMerge('flex h-full w-full flex-col items-start overflow-y-auto p-3xl lg:mx-auto lg:h-auto lg:max-h-[80vh] lg:w-[400px]', 'scrollbar:h-2 scrollbar:w-2 scrollbar-thumb:rounded-full scrollbar-thumb:bg-bg-quaternary scrollbar-track:bg-transparent'), children: [_jsx(Image, { src: logo, alt: "", width: 200, height: 100, className: "mx-auto h-auto w-[120px]", draggable: false }), _jsxs("div", { className: "w-full grow", children: [_jsxs(Dialog.Title, { className: "mt-3xl text-center font-semibold text-brand-400 text-lg", children: [siteName, " Terms of Use"] }), _jsx(Dialog.Description, { className: "mt-xs text-sm leading-2xl", children: content }), _jsxs("div", { className: "mt-5 flex items-center justify-center gap-3xl", children: [_jsx(Image, { src: pagcorLogo, alt: "", height: 75, width: 88, className: "h-[5.5rem] w-auto shrink-0", draggable: false }), _jsx(Image, { src: props.responsibleGamingLogo ?? responsibleGamingLogo, alt: "", height: 62, width: 186, className: "h-[3.875rem] w-auto shrink-0", draggable: false })] })] }), _jsx(Dialog.Context, { children: (api) => (_jsx(Button, { type: "button", className: "mt-3 py-2.5", onClick: () => {
34
34
  api.setOpen(false);
35
35
  }, children: "I Agree" })) })] }) })] }) }));
36
36
  }
@@ -16,13 +16,13 @@ export function TopWins__client(props) {
16
16
  });
17
17
  if (!topWins?.length)
18
18
  return null;
19
- return (_jsxs("div", { className: props.className, children: [_jsx("div", { className: "mb-3 text-lg font-semibold md:mb-4", children: props.heading ?? 'Recent Big Wins' }), _jsx("div", { ref: emblaRef, className: "relative lg:overflow-hidden", children: _jsx("div", { className: "flex gap-sm lg:gap-md", children: topWins.map((topWin) => (_jsxs("div", { className: "bg-bg-tertiary border-border-primary flex w-[calc((100%-(0.375rem*2))/3)] shrink-0 flex-col space-y-2 rounded-sm border p-2 text-center lg:w-[calc((100%-(0.5rem*5))/6)] xl:w-[calc((100%-(0.5rem*9))/10)]", children: [_jsx("div", { className: "mx-auto aspect-square w-full", children: topWin.game && (_jsx(Image, { src: getGameImageUrl({
19
+ return (_jsxs("div", { className: props.className, children: [_jsx("div", { className: "mb-3 font-semibold text-lg md:mb-4", children: props.heading ?? 'Recent Big Wins' }), _jsx("div", { ref: emblaRef, className: "relative lg:overflow-hidden", children: _jsx("div", { className: "flex gap-sm lg:gap-md", children: topWins.map((topWin) => (_jsxs("div", { className: "flex w-[calc((100%-(0.375rem*2))/3)] shrink-0 flex-col space-y-2 rounded-sm border border-border-primary bg-bg-tertiary p-2 text-center lg:w-[calc((100%-(0.5rem*5))/6)] xl:w-[calc((100%-(0.5rem*9))/10)]", children: [_jsx("div", { className: "mx-auto aspect-square w-full", children: topWin.game && (_jsx(Image, { src: getGameImageUrl({
20
20
  id: topWin.game.id,
21
21
  provider: topWin.game.provider,
22
- }), alt: "", width: 120, height: 120, loading: "lazy", unoptimized: true, className: "size-full rounded-sm object-cover" })) }), _jsxs("div", { className: "space-y-0.5", children: [_jsx("div", { className: "text-text-secondary-700 text-xs", children: topWin.member.name }), _jsx("div", { className: "text-text-primary-brand break-words text-sm font-semibold", children: formatNumber(topWin.payout, {
22
+ }), alt: "", width: 120, height: 120, loading: "lazy", unoptimized: true, className: "size-full rounded-sm object-cover" })) }), _jsxs("div", { className: "space-y-0.5", children: [_jsx("div", { className: "text-text-secondary-700 text-xs", children: topWin.member.name }), _jsx("div", { className: "break-words font-semibold text-sm text-text-primary-brand", children: formatNumber(topWin.payout, {
23
23
  currency: localeInfo.currency.code,
24
24
  minDecimalPlaces: 2,
25
- }) }), _jsxs("div", { className: "text-text-secondary-700 break-words text-xs", children: [formatNumber(topWin.multiplier, {
25
+ }) }), _jsxs("div", { className: "break-words text-text-secondary-700 text-xs", children: [formatNumber(topWin.multiplier, {
26
26
  minDecimalPlaces: 2,
27
27
  }), "x"] })] })] }, topWin.id))) }) })] }));
28
28
  }
@@ -63,7 +63,7 @@ export function TournamentsCarousel({ style, className, ...props }) {
63
63
  const classNames = isString(className)
64
64
  ? { root: className }
65
65
  : (className ?? {});
66
- return (_jsxs("div", { className: classNames.root, style: styles.root, children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-lg font-semibold", children: props.heading ?? 'Tournaments' }), _jsxs("div", { className: "flex items-center md:gap-3xl", children: [_jsxs(Link, { href: props.viewAllUrl ?? '/tournaments', className: "text-button-tertiary-fg flex gap-sm text-sm font-semibold", children: ["See All", _jsx(ChevronRightIcon, { className: "size-5 lg:hidden" })] }), _jsxs("div", { className: "hidden lg:flex", children: [_jsx(Button, { disabled: !canScrollPrev, onClick: scrollPrev, variant: "outline", colorScheme: "gray", className: "rounded-r-none border-r-0", "aria-label": "Previous", children: _jsx(ArrowLeftIcon, { className: "size-5" }) }), _jsxs(Button, { disabled: !canScrollNext, onClick: scrollNext, variant: "outline", colorScheme: "gray", className: "rounded-l-none", "aria-label": "Next", children: [_jsx("span", { className: "sr-only", children: "Next" }), _jsx(ArrowRightIcon, { className: "size-5" })] })] })] })] }), _jsx("div", { className: "relative mt-lg lg:overflow-hidden", ref: emblaRef, children: _jsx("div", { className: "flex gap-2.5", children: tournaments.map((tournament) => (_jsx(TournamentsCarouselItemContext, { value: tournament, children: _jsx(TournamentsCarouselItem, { viewAllUrl: props.viewAllUrl, style: {
66
+ return (_jsxs("div", { className: classNames.root, style: styles.root, children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "font-semibold text-lg", children: props.heading ?? 'Tournaments' }), _jsxs("div", { className: "flex items-center md:gap-3xl", children: [_jsxs(Link, { href: props.viewAllUrl ?? '/tournaments', className: "flex gap-sm font-semibold text-button-tertiary-fg text-sm", children: ["See All", _jsx(ChevronRightIcon, { className: "size-5 lg:hidden" })] }), _jsxs("div", { className: "hidden lg:flex", children: [_jsx(Button, { disabled: !canScrollPrev, onClick: scrollPrev, variant: "outline", colorScheme: "gray", className: "rounded-r-none border-r-0", "aria-label": "Previous", children: _jsx(ArrowLeftIcon, { className: "size-5" }) }), _jsxs(Button, { disabled: !canScrollNext, onClick: scrollNext, variant: "outline", colorScheme: "gray", className: "rounded-l-none", "aria-label": "Next", children: [_jsx("span", { className: "sr-only", children: "Next" }), _jsx(ArrowRightIcon, { className: "size-5" })] })] })] })] }), _jsx("div", { className: "relative mt-lg lg:overflow-hidden", ref: emblaRef, children: _jsx("div", { className: "flex gap-2.5", children: tournaments.map((tournament) => (_jsx(TournamentsCarouselItemContext, { value: tournament, children: _jsx(TournamentsCarouselItem, { viewAllUrl: props.viewAllUrl, style: {
67
67
  root: styles.itemRoot,
68
68
  badgeIcon: styles.itemBadgeIcon,
69
69
  badgeRoot: styles.itemBadgeRoot,
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { isString, pick } from 'lodash-es';
4
4
  import Image from 'next/image';
5
5
  import Link from 'next/link';
@@ -12,8 +12,8 @@ import { StarIcon } from '../../../icons/StarIcon.js';
12
12
  import { Trophy01Icon } from '../../../icons/Trophy01Icon.js';
13
13
  import { User01Icon } from '../../../icons/User01Icon.js';
14
14
  import firstPlace from '../../../images/first-place.png';
15
- import trophyTwo from '../../../images/trophy-two.png';
16
15
  import trophy from '../../../images/trophy.png';
16
+ import trophyTwo from '../../../images/trophy-two.png';
17
17
  import { formatNumber } from '../../../utils/formatNumber.js';
18
18
  import { isStyleEntries } from '../../../utils/isStyleEntries.js';
19
19
  import { mask } from '../../../utils/mask.js';
@@ -61,7 +61,7 @@ export function TournamentsCarouselItem({ style, className, viewAllUrl, }) {
61
61
  calculateRemainingTime();
62
62
  const interval = setInterval(calculateRemainingTime, 1000); // Update every second
63
63
  return () => clearInterval(interval);
64
- }, [activationEndDateTime, calculateRemainingTime]);
64
+ }, [calculateRemainingTime]);
65
65
  const timeParts = [
66
66
  { label: 'Day', value: timeRemaining.days },
67
67
  { label: 'Hour', value: timeRemaining.hours },
@@ -83,21 +83,23 @@ export function TournamentsCarouselItem({ style, className, viewAllUrl, }) {
83
83
  const classNames = isString(className)
84
84
  ? { root: className }
85
85
  : (className ?? {});
86
- return (_jsxs("div", { className: twMerge('bg-bg-tertiary border-border-primary relative flex w-full shrink-0 rounded-2xl border p-3 text-center lg:gap-6 lg:p-5', classNames.root), style: styles.root, children: [_jsx("div", { className: "z-1 relative flex flex-1 flex-col", children: _jsx("div", { className: "flex h-full flex-col justify-between", children: _jsx("div", { className: "flex w-full justify-between", children: _jsxs("div", { className: "flex w-full flex-col", children: [_jsxs("div", { className: "relative flex w-full justify-between", children: [_jsxs("div", { className: "w-full", children: [_jsxs("div", { className: "flex w-full justify-between", children: [_jsxs("div", { style: styles.badgeRoot, className: twMerge('border-utility-brand-200 bg-utility-brand-50 text-utility-brand-700 flex h-fit w-fit items-center gap-1 rounded-full border px-2 py-0.5 text-xs font-medium', classNames.badgeRoot), children: [_jsx(Award01Icon, { style: styles.badgeIcon, className: twMerge('text-utility-brand-500 size-3.5', classNames.badgeIcon) }), _jsx("span", { style: styles.badgeLabel, className: classNames.badgeLabel, children: "Multiplier" })] }), _jsx("div", { className: "flex h-fit", children: timeParts.map((part, idx) => (_jsxs(React.Fragment, { children: [_jsxs("div", { className: twMerge('bg-bg-primary text-text-primary-900 flex h-fit w-8 flex-col items-center rounded-[0.25rem] pb-1.5'), children: [_jsx("span", { className: "text-base font-medium", children: String(part.value).padStart(2, '0') }), _jsx("span", { className: "text-3xs", children: part.label })] }), idx < timeParts.length - 1 && (_jsxs("div", { className: "flex flex-col justify-center gap-1.5 px-1.5", children: [_jsx("div", { className: "bg-bg-primary h-1 w-1 rounded-full" }), _jsx("div", { className: "bg-bg-primary h-1 w-1 rounded-full" })] }))] }, part.label))) })] }), _jsxs("div", { className: "flex justify-between", children: [_jsxs("div", { children: [_jsx("div", { className: "text-text-primary-900 mt-2.5 text-left text-lg font-medium lg:mt-5 lg:text-2xl", children: tournament.name }), _jsx("div", { className: "bg-bg-primary text-brand-400 mt-1.5 w-fit rounded-md px-2 py-1 text-2xl font-bold lg:mt-2 lg:text-4xl", children: formatNumber(tournamentReward, {
86
+ return (_jsxs("div", { className: twMerge('relative flex w-full shrink-0 rounded-2xl border border-border-primary bg-bg-tertiary p-3 text-center lg:gap-6 lg:p-5', classNames.root), style: styles.root, children: [_jsx("div", { className: "relative z-1 flex flex-1 flex-col", children: _jsx("div", { className: "flex h-full flex-col justify-between", children: _jsx("div", { className: "flex w-full justify-between", children: _jsxs("div", { className: "flex w-full flex-col", children: [_jsxs("div", { className: "relative flex w-full justify-between", children: [_jsxs("div", { className: "w-full", children: [_jsxs("div", { className: "flex w-full justify-between", children: [_jsxs("div", { style: styles.badgeRoot, className: twMerge('flex h-fit w-fit items-center gap-1 rounded-full border border-utility-brand-200 bg-utility-brand-50 px-2 py-0.5 font-medium text-utility-brand-700 text-xs', classNames.badgeRoot), children: [_jsx(Award01Icon, { style: styles.badgeIcon, className: twMerge('size-3.5 text-utility-brand-500', classNames.badgeIcon) }), _jsx("span", { style: styles.badgeLabel, className: classNames.badgeLabel, children: "Multiplier" })] }), _jsx("div", { className: "flex h-fit", children: timeParts.map((part, idx) => (_jsxs(React.Fragment, { children: [_jsxs("div", { className: twMerge('flex h-fit w-8 flex-col items-center rounded-[0.25rem] bg-bg-primary pb-1.5 text-text-primary-900'), children: [_jsx("span", { className: "font-medium text-base", children: String(part.value).padStart(2, '0') }), _jsx("span", { className: "text-3xs", children: part.label })] }), idx < timeParts.length - 1 && (_jsxs("div", { className: "flex flex-col justify-center gap-1.5 px-1.5", children: [_jsx("div", { className: "h-1 w-1 rounded-full bg-bg-primary" }), _jsx("div", { className: "h-1 w-1 rounded-full bg-bg-primary" })] }))] }, part.label))) })] }), _jsxs("div", { className: "flex justify-between", children: [_jsxs("div", { children: [_jsx("div", { className: "mt-2.5 text-left font-medium text-lg text-text-primary-900 lg:mt-5 lg:text-2xl", children: tournament.name }), _jsx("div", { className: "mt-1.5 w-fit rounded-md bg-bg-primary px-2 py-1 font-bold text-2xl text-brand-400 lg:mt-2 lg:text-4xl", children: formatNumber(tournamentReward, {
87
87
  currency: localeInfo.currency.code,
88
88
  minDecimalPlaces: 2,
89
89
  maxDecimalPlaces: 2,
90
- }) }), _jsx("div", { className: "text-text-primary-900 mt-4 block text-left text-base lg:hidden", children: "Play and Win!" })] }), _jsx("div", { className: "flex items-end lg:hidden", children: _jsx(Image, { src: trophy, alt: "trophy", width: 155, height: 155, className: "h-23 w-auto" }) })] })] }), _jsx("div", { className: "z-1 absolute -bottom-16 right-0 hidden lg:block", children: _jsx(Image, { width: 155, height: 155, src: trophy, alt: "trophy", className: "px-6 py-2.5" }) })] }), tournament.topPayouts.length ? (_jsx("div", { children: _jsxs("div", { className: "bg-bg-primary relative mt-4 hidden w-full gap-4 rounded-lg p-4 lg:flex", children: [_jsxs("div", { className: "bg-bg-tertiary relative flex h-18 w-18 items-center justify-center rounded-full", children: [_jsx(User01Icon, { className: "text-text-quarterary-500 size-9" }), _jsx("div", { className: "bg-yellow-400 text-brand-950 border-bg-primary absolute bottom-0 right-0 flex h-6 w-6 items-center justify-center rounded-full border-[1.5px] text-xs font-bold", children: "1st" })] }), _jsxs("div", { className: "flex flex-col gap-1 text-left", children: [_jsxs("div", { className: "border-utility-brand-200 bg-utility-brand-50 text-utility-brand-700 flex h-fit w-fit items-center gap-1 rounded-sm border px-2 py-0.5 text-xs font-medium", children: [_jsx(Trophy01Icon, { className: "text-utility-brand-600 size-3.5" }), "Top Payout"] }), _jsx("div", { className: "font-semibold", children: mask(tournament?.topPayouts[0]?.member?.name || '') }), _jsx("div", { className: "text-brand-400 text-2xl", children: formatNumber(tournament?.topPayouts[0]?.amount, {
90
+ }) }), _jsx("div", { className: "mt-4 block text-left text-base text-text-primary-900 lg:hidden", children: "Play and Win!" })] }), _jsx("div", { className: "flex items-end lg:hidden", children: _jsx(Image, { src: trophy, alt: "trophy", width: 155, height: 155, className: "h-23 w-auto" }) })] })] }), _jsx("div", { className: "-bottom-16 absolute right-0 z-1 hidden lg:block", children: _jsx(Image, { width: 155, height: 155, src: trophy, alt: "trophy", className: "px-6 py-2.5" }) })] }), tournament.topPayouts.length ? (_jsx("div", { children: _jsxs("div", { className: "relative mt-4 hidden w-full gap-4 rounded-lg bg-bg-primary p-4 lg:flex", children: [_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: "absolute right-0 bottom-0 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", children: "1st" })] }), _jsxs("div", { className: "flex flex-col gap-1 text-left", children: [_jsxs("div", { className: "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", children: [_jsx(Trophy01Icon, { className: "size-3.5 text-utility-brand-600" }), "Top Payout"] }), _jsx("div", { className: "font-semibold", children: mask(tournament?.topPayouts[0]?.member?.name || '') }), _jsx("div", { className: "text-2xl text-brand-400", children: formatNumber(tournament?.topPayouts[0]?.amount, {
91
91
  currency: localeInfo.currency.code,
92
92
  minDecimalPlaces: 2,
93
93
  maxDecimalPlaces: 2,
94
- }) })] })] }) })) : (_jsxs("div", { className: "bg-bg-primary relative mt-4 hidden w-full gap-4 rounded-lg p-4 lg:flex", children: [_jsx(Image, { width: 66, height: 87, src: firstPlace, alt: "closeChest", className: "size-full h-auto w-[4.125rem] mix-blend-luminosity" }), _jsxs("div", { className: "flex flex-col gap-1 text-left", children: [_jsxs("div", { className: "border-utility-brand-200 bg-utility-brand-50 text-utility-brand-700 flex h-fit w-fit items-center gap-1 rounded-sm border px-2 py-0.5 text-xs font-medium", children: [_jsx(Trophy01Icon, { className: "text-utility-brand-600 size-3.5" }), "Top Payout"] }), _jsx("div", { className: "font-semibold", children: "No winners yet" }), _jsx("div", { className: "text-text-secondary-700 text-xs", children: "You could be the first to win the tournament!" })] })] }))] }) }) }) }), _jsxs("div", { className: "z-1 hidden flex-1 space-y-4 lg:block", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Image, { width: 24, height: 24, src: trophyTwo, alt: "leaderboardIcon", className: "size-full w-6" }), _jsx("div", { className: "text-text-primary-900 text-lg font-semibold", children: tournament.currentLeaderboard.edges.length
94
+ }) })] })] }) })) : (_jsxs("div", { className: "relative mt-4 hidden w-full gap-4 rounded-lg bg-bg-primary p-4 lg:flex", children: [_jsx(Image, { width: 66, height: 87, src: firstPlace, alt: "closeChest", className: "size-full h-auto w-[4.125rem] mix-blend-luminosity" }), _jsxs("div", { className: "flex flex-col gap-1 text-left", children: [_jsxs("div", { className: "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", children: [_jsx(Trophy01Icon, { className: "size-3.5 text-utility-brand-600" }), "Top Payout"] }), _jsx("div", { className: "font-semibold", children: "No winners yet" }), _jsx("div", { className: "text-text-secondary-700 text-xs", children: "You could be the first to win the tournament!" })] })] }))] }) }) }) }), _jsxs("div", { className: "z-1 hidden flex-1 space-y-4 lg:block", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Image, { width: 24, height: 24, src: trophyTwo, alt: "leaderboardIcon", className: "size-full w-6" }), _jsx("div", { className: "font-semibold text-lg text-text-primary-900", children: tournament.currentLeaderboard.edges.length
95
95
  ? 'Leaderboard'
96
- : 'Starting soon!' })] }), _jsxs(Link, { className: "text-button-tertiary-fg flex text-sm font-semibold", href: viewAllUrl ?? '/tournaments', children: ["See details", _jsx(ChevronRightIcon, { className: "size-5" })] })] }), _jsx("div", { className: twMerge('max-h-[17rem] overflow-y-scroll', css['scrollArea']), children: _jsx("div", { className: "border-gray-200 overflow-hidden rounded-xl", children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { children: _jsxs("tr", { className: "bg-bg-secondary text-text-tertiary-600 h-8 text-xs font-medium", children: [_jsx("th", { className: "w-[3.25rem]", children: "#" }), _jsx("th", { children: "Player" }), _jsx("th", { children: "Multiplier" }), _jsx("th", { children: "Prize" })] }) }), _jsx("tbody", { children: tournament.currentLeaderboard.edges.length ? (_jsx(_Fragment, { children: tournament.currentLeaderboard.edges.map((tournament, i) => (_jsxs("tr", { className: "bg-bg-primary text-text-secondary-700 text-sm", children: [_jsx("td", { className: "border-border-secondary h-12 w-[3.25rem] border-t-2", children: i + 1 < 6 ? (_jsxs("div", { className: "relative", children: [_jsx(StarIcon, { className: twMerge('mx-auto size-6.5', starTierStyles[i].starColor) }), _jsx("span", { className: twMerge('absolute inset-0 mt-0.5 flex items-center justify-center text-2xs font-bold', starTierStyles[i].numberColor), children: i + 1 })] })) : (i + 1) }), _jsx("td", { className: "border-border-secondary h-12 border-t-2", children: mask(tournament.node.username) }), _jsxs("td", { className: "border-border-secondary h-12 border-t-2", children: [tournament.node.multiplier, "x"] }), i + 1 <= prizeAmountsByRank.length ? (_jsx("td", { className: "border-border-secondary text-brand-400 h-12 border-t-2", children: formatNumber(prizeAmountsByRank[i], {
96
+ : 'Starting soon!' })] }), _jsxs(Link, { className: "flex font-semibold text-button-tertiary-fg text-sm", href: viewAllUrl ?? '/tournaments', children: ["See details", _jsx(ChevronRightIcon, { className: "size-5" })] })] }), _jsx("div", { className: twMerge('max-h-[17rem] overflow-y-scroll', css.scrollArea), children: _jsx("div", { className: "overflow-hidden rounded-xl border-gray-200", children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { children: _jsxs("tr", { className: "h-8 bg-bg-secondary font-medium text-text-tertiary-600 text-xs", children: [_jsx("th", { className: "w-[3.25rem]", children: "#" }), _jsx("th", { children: "Player" }), _jsx("th", { children: "Multiplier" }), _jsx("th", { children: "Prize" })] }) }), _jsx("tbody", { children: tournament.currentLeaderboard.edges.length
97
+ ? tournament.currentLeaderboard.edges.map((tournament, i) => (_jsxs("tr", { className: "bg-bg-primary text-sm text-text-secondary-700", children: [_jsx("td", { className: "h-12 w-[3.25rem] border-border-secondary border-t-2", children: i + 1 < 6 ? (_jsxs("div", { className: "relative", children: [_jsx(StarIcon, { className: twMerge('mx-auto size-6.5', starTierStyles[i].starColor) }), _jsx("span", { className: twMerge('absolute inset-0 mt-0.5 flex items-center justify-center font-bold text-2xs', starTierStyles[i].numberColor), children: i + 1 })] })) : (i + 1) }), _jsx("td", { className: "h-12 border-border-secondary border-t-2", children: mask(tournament.node.username) }), _jsxs("td", { className: "h-12 border-border-secondary border-t-2", children: [tournament.node.multiplier, "x"] }), i + 1 <= prizeAmountsByRank.length ? (_jsx("td", { className: "h-12 border-border-secondary border-t-2 text-brand-400", children: formatNumber(prizeAmountsByRank[i], {
97
98
  currency: localeInfo.currency.code,
98
99
  minDecimalPlaces: 2,
99
100
  maxDecimalPlaces: 2,
100
- }) })) : (_jsx("td", { className: "border-border-secondary h-12 border-t-2", children: "-" }))] }, i))) })) : (_jsx(_Fragment, { children: Array.from({ length: 10 }).map((_, i) => (_jsxs("tr", { className: "bg-bg-primary text-text-secondary-700 text-sm", children: [_jsx("td", { className: "border-border-secondary h-12 w-[3.25rem] border-t-2", children: i + 1 < 6 ? (_jsxs("div", { className: "relative", children: [_jsx(StarIcon, { className: twMerge('mx-auto size-6.5', starTierStyles[i].starColor) }), _jsx("span", { className: twMerge('absolute inset-0 mt-0.5 flex items-center justify-center text-2xs font-bold', starTierStyles[i].numberColor), children: i + 1 })] })) : (i + 1) }), _jsx("td", { className: "border-border-secondary h-12 border-t-2", children: "-" }), _jsx("td", { className: "border-border-secondary h-12 border-t-2", children: "-" }), _jsx("td", { className: "border-border-secondary h-12 border-t-2", children: "-" })] }, i))) })) })] }) }) })] })] }));
101
+ }) })) : (_jsx("td", { className: "h-12 border-border-secondary border-t-2", children: "-" }))] }, i)))
102
+ : Array.from({ length: 10 }).map((_, i) => (_jsxs("tr", { className: "bg-bg-primary text-sm text-text-secondary-700", children: [_jsx("td", { className: "h-12 w-[3.25rem] border-border-secondary border-t-2", children: i + 1 < 6 ? (_jsxs("div", { className: "relative", children: [_jsx(StarIcon, { className: twMerge('mx-auto size-6.5', starTierStyles[i].starColor) }), _jsx("span", { className: twMerge('absolute inset-0 mt-0.5 flex items-center justify-center font-bold text-2xs', starTierStyles[i].numberColor), children: i + 1 })] })) : (i + 1) }), _jsx("td", { className: "h-12 border-border-secondary border-t-2", children: "-" }), _jsx("td", { className: "h-12 border-border-secondary border-t-2", children: "-" }), _jsx("td", { className: "h-12 border-border-secondary border-t-2", children: "-" })] }, i))) })] }) }) })] })] }));
101
103
  }
102
104
  const starTierStyles = [
103
105
  {
@@ -1,184 +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
+ @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
+ }