@opexa/portal-components 0.0.124 → 0.0.126

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 (223) hide show
  1. package/dist/components/BetRecords/BetRecords.client.d.ts +13 -0
  2. package/dist/components/BetRecords/BetRecords.client.js +10 -1
  3. package/dist/components/Bonus/Bonus.client.js +1 -1
  4. package/dist/components/Cashback/Cashback.client.js +1 -1
  5. package/dist/components/CustomPromo/CustomPromo.js +1 -1
  6. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/OnlineBankDepositContext.d.ts +2 -2
  7. package/dist/components/DepositWithdrawal/Deposit/OnlineBankDeposit/useOnlineBankDeposit.d.ts +1 -1
  8. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/QRPHDepositContext.d.ts +2 -2
  9. package/dist/components/DepositWithdrawal/Deposit/QRPHDeposit/useQRPHDeposit.d.ts +1 -1
  10. package/dist/components/FavoriteGames/FavoriteGames.client.js +13 -1
  11. package/dist/components/ForgotPassword/ForgotPasswordForm.js +14 -7
  12. package/dist/components/GameLaunch/GameLaunch.lazy.js +26 -3
  13. package/dist/components/Games/Game.js +25 -2
  14. package/dist/components/GamesSearch/GamesSearch.js +1 -1
  15. package/dist/components/Jackpots/JackpotsCarousel/JackpotsCarouselItem.module.css +184 -184
  16. package/dist/components/Jackpots/JackpotsList/JackpotsList.d.ts +12 -1
  17. package/dist/components/Jackpots/JackpotsList/JackpotsListItem.module.css +184 -184
  18. package/dist/components/Jackpots/JackpotsList/JackpotsListItemGameProviders.js +14 -7
  19. package/dist/components/KYC/CaptureSelfie.js +5 -3
  20. package/dist/components/News/News.js +1 -1
  21. package/dist/components/Promo/Promo.client.js +1 -1
  22. package/dist/components/Quests/DailyCheckInQuest/DailyCheckInQuest.d.ts +1 -4
  23. package/dist/components/Quests/DailyCheckInQuest/DailyCheckInQuest.js +28 -25
  24. package/dist/components/Quests/DailyCheckInQuest/DailyCheckInQuestRules.d.ts +6 -0
  25. package/dist/components/Quests/DailyCheckInQuest/DailyCheckInQuestRules.js +15 -0
  26. package/dist/components/Quests/OnboardingQuest/OnboardingQuest.d.ts +1 -4
  27. package/dist/components/Quests/OnboardingQuest/OnboardingQuest.js +27 -3
  28. package/dist/components/Quests/OnboardingQuest/OnboardingQuestRules.d.ts +6 -0
  29. package/dist/components/Quests/OnboardingQuest/OnboardingQuestRules.js +15 -0
  30. package/dist/components/Quests/WageringQuest/WageringQuest.d.ts +1 -4
  31. package/dist/components/Quests/WageringQuest/WageringQuest.js +12 -9
  32. package/dist/components/Quests/WageringQuest/WageringQuestRules.d.ts +7 -0
  33. package/dist/components/Quests/WageringQuest/WageringQuestRules.js +17 -0
  34. package/dist/components/Search/Search.lazy.js +1 -1
  35. package/dist/components/SignIn/MobileNumberSignIn.js +14 -6
  36. package/dist/components/SignIn/NameAndPasswordSignIn.js +1 -1
  37. package/dist/components/SignUp/SignUpForm.js +21 -10
  38. package/dist/components/Tournaments/TournamentsCarousel/TournamentsCarouselItem.module.css +184 -184
  39. package/dist/components/Tournaments/TournamentsList/TournamentItem.module.css +184 -184
  40. package/dist/components/Tournaments/TournamentsList/TournamentsList.d.ts +12 -1
  41. package/dist/components/Tournaments/TournamentsList/TournamentsListItemGameProviders.js +11 -1
  42. package/dist/components/TransactionRecords/DepositRecordsTable.js +29 -17
  43. package/dist/components/TransactionRecords/TableFilters.d.ts +5 -1
  44. package/dist/components/TransactionRecords/TableFilters.js +105 -31
  45. package/dist/components/TransactionRecords/TransactionRecordsTable.js +21 -9
  46. package/dist/components/TransactionRecords/WithdrawalRecordsTable.js +29 -17
  47. package/dist/constants/EnvVar.d.ts +1 -1
  48. package/dist/services/queries.d.ts +5 -5
  49. package/dist/services/queries.js +2364 -2369
  50. package/dist/services/trigger.js +2 -2
  51. package/dist/services/wallet.d.ts +7 -6
  52. package/dist/services/wallet.js +14 -12
  53. package/dist/styles/theme.css +699 -699
  54. package/dist/ui/AlertDialog/AlertDialog.d.ts +121 -121
  55. package/dist/ui/AlertDialog/alertDialog.recipe.d.ts +11 -11
  56. package/dist/ui/Avatar/Avatar.d.ts +9 -9
  57. package/dist/ui/Avatar/avatar.recipe.d.ts +3 -3
  58. package/dist/ui/Checkbox/Checkbox.d.ts +23 -23
  59. package/dist/ui/Checkbox/checkbox.recipe.d.ts +3 -3
  60. package/dist/ui/Collapsible/Collapsible.d.ts +20 -20
  61. package/dist/ui/Collapsible/collapsible.recipe.d.ts +5 -5
  62. package/dist/ui/Combobox/Combobox.d.ts +42 -42
  63. package/dist/ui/Combobox/combobox.recipe.d.ts +3 -3
  64. package/dist/ui/DatePicker/DatePicker.d.ts +72 -72
  65. package/dist/ui/DatePicker/datePicker.recipe.d.ts +3 -3
  66. package/dist/ui/Dialog/Dialog.d.ts +121 -121
  67. package/dist/ui/Dialog/dialog.recipe.d.ts +11 -11
  68. package/dist/ui/Drawer/Drawer.d.ts +33 -33
  69. package/dist/ui/Drawer/drawer.recipe.d.ts +3 -3
  70. package/dist/ui/Field/Field.d.ts +21 -21
  71. package/dist/ui/Field/field.recipe.d.ts +3 -3
  72. package/dist/ui/Menu/Menu.d.ts +360 -360
  73. package/dist/ui/Menu/menu.recipe.d.ts +20 -20
  74. package/dist/ui/Popover/Popover.d.ts +88 -88
  75. package/dist/ui/Popover/popover.recipe.d.ts +8 -8
  76. package/dist/ui/Progress/Progress.d.ts +27 -27
  77. package/dist/ui/Progress/progress.recipe.d.ts +3 -3
  78. package/dist/ui/QrCode/QrCode.d.ts +25 -25
  79. package/dist/ui/QrCode/qrCode.recipe.d.ts +5 -5
  80. package/dist/ui/SegmentGroup/SegmentGroup.d.ts +18 -18
  81. package/dist/ui/SegmentGroup/segmentGroup.recipe.d.ts +3 -3
  82. package/dist/ui/Select/Select.d.ts +45 -45
  83. package/dist/ui/Select/select.recipe.d.ts +3 -3
  84. package/dist/ui/Table/Table.d.ts +21 -21
  85. package/dist/ui/Table/table.anatomy.d.ts +1 -1
  86. package/dist/ui/Table/table.recipe.d.ts +3 -3
  87. package/dist/ui/Tabs/Tabs.d.ts +15 -15
  88. package/dist/ui/Tabs/tabs.recipe.d.ts +3 -3
  89. package/package.json +164 -164
  90. package/dist/client/hooks/index.d.ts +0 -65
  91. package/dist/client/hooks/index.js +0 -65
  92. package/dist/client/services/index.d.ts +0 -4
  93. package/dist/client/services/index.js +0 -4
  94. package/dist/client/utils/index.d.ts +0 -3
  95. package/dist/client/utils/index.js +0 -3
  96. package/dist/components/CashbackBonus/CashbackBonus.client.d.ts +0 -2
  97. package/dist/components/CashbackBonus/CashbackBonus.client.js +0 -9
  98. package/dist/components/CashbackBonus/CashbackBonus.d.ts +0 -10
  99. package/dist/components/CashbackBonus/CashbackBonus.js +0 -5
  100. package/dist/components/CashbackBonus/index.d.ts +0 -1
  101. package/dist/components/CashbackBonus/index.js +0 -1
  102. package/dist/components/Empty.d.ts +0 -9
  103. package/dist/components/Empty.js +0 -7
  104. package/dist/components/Games/GameContext.d.ts +0 -2
  105. package/dist/components/Games/GameContext.js +0 -2
  106. package/dist/components/InfiniteScroll.d.ts +0 -10
  107. package/dist/components/InfiniteScroll.js +0 -25
  108. package/dist/components/JackpotCounter/JackpotCounter.client.d.ts +0 -2
  109. package/dist/components/JackpotCounter/JackpotCounter.client.js +0 -66
  110. package/dist/components/JackpotCounter/JackpotCounter.d.ts +0 -17
  111. package/dist/components/JackpotCounter/JackpotCounter.js +0 -21
  112. package/dist/components/JackpotCounter/JackpotCounterItem.d.ts +0 -18
  113. package/dist/components/JackpotCounter/JackpotCounterItem.js +0 -109
  114. package/dist/components/JackpotCounter/JackpotCounterItem.module.css +0 -184
  115. package/dist/components/JackpotCounter/index.d.ts +0 -1
  116. package/dist/components/JackpotCounter/index.js +0 -1
  117. package/dist/components/Jackpots/JackpotDesktop.d.ts +0 -1
  118. package/dist/components/Jackpots/JackpotDesktop.js +0 -45
  119. package/dist/components/Jackpots/JackpotGameProviders.d.ts +0 -5
  120. package/dist/components/Jackpots/JackpotGameProviders.js +0 -41
  121. package/dist/components/Jackpots/JackpotItemDesktop.d.ts +0 -9
  122. package/dist/components/Jackpots/JackpotItemDesktop.js +0 -43
  123. package/dist/components/Jackpots/JackpotItemMobile.d.ts +0 -9
  124. package/dist/components/Jackpots/JackpotItemMobile.js +0 -44
  125. package/dist/components/Jackpots/JackpotMobile.d.ts +0 -1
  126. package/dist/components/Jackpots/JackpotMobile.js +0 -46
  127. package/dist/components/Jackpots/JackpotRules.d.ts +0 -5
  128. package/dist/components/Jackpots/JackpotRules.js +0 -11
  129. package/dist/components/Jackpots/Jackpots.client.d.ts +0 -2
  130. package/dist/components/Jackpots/Jackpots.client.js +0 -29
  131. package/dist/components/Jackpots/JackpotsContext.d.ts +0 -4
  132. package/dist/components/Jackpots/JackpotsContext.js +0 -3
  133. package/dist/components/Jackpots/useJackpotData.d.ts +0 -14
  134. package/dist/components/Jackpots/useJackpotData.js +0 -93
  135. package/dist/components/Jackpots/useJackpotItemData.d.ts +0 -20
  136. package/dist/components/Jackpots/useJackpotItemData.js +0 -87
  137. package/dist/components/KYC/Header.d.ts +0 -1
  138. package/dist/components/KYC/Header.js +0 -8
  139. package/dist/components/KYC/Step1.d.ts +0 -1
  140. package/dist/components/KYC/Step1.js +0 -13
  141. package/dist/components/KYC/Step2.d.ts +0 -1
  142. package/dist/components/KYC/Step2.js +0 -13
  143. package/dist/components/KYC/Step3.d.ts +0 -1
  144. package/dist/components/KYC/Step3.js +0 -13
  145. package/dist/components/KYC/Step4.d.ts +0 -1
  146. package/dist/components/KYC/Step4.js +0 -7
  147. package/dist/components/Messages/MessageItem.d.ts +0 -4
  148. package/dist/components/Messages/MessageItem.js +0 -34
  149. package/dist/components/PortalProvider/WebVitals.d.ts +0 -1
  150. package/dist/components/PortalProvider/WebVitals.js +0 -8
  151. package/dist/components/Promo/PromoContent.d.ts +0 -2
  152. package/dist/components/Promo/PromoContent.js +0 -9
  153. package/dist/components/Promos/PromoCarousel.d.ts +0 -2
  154. package/dist/components/Promos/PromoCarousel.js +0 -41
  155. package/dist/components/Promos/PromoGrid.d.ts +0 -2
  156. package/dist/components/Promos/PromoGrid.js +0 -12
  157. package/dist/components/Promos/PromoItem.d.ts +0 -7
  158. package/dist/components/Promos/PromoItem.js +0 -10
  159. package/dist/components/Quests/DailyCheckInQuest/DailyCheckInQuestModal.d.ts +0 -8
  160. package/dist/components/Quests/DailyCheckInQuest/DailyCheckInQuestModal.js +0 -9
  161. package/dist/components/Quests/WageringQuest/WageringQuestModal.d.ts +0 -9
  162. package/dist/components/Quests/WageringQuest/WageringQuestModal.js +0 -9
  163. package/dist/components/TournamentCounter/TournamentCounter.client.d.ts +0 -2
  164. package/dist/components/TournamentCounter/TournamentCounter.client.js +0 -50
  165. package/dist/components/TournamentCounter/TournamentCounter.d.ts +0 -8
  166. package/dist/components/TournamentCounter/TournamentCounter.js +0 -21
  167. package/dist/components/TournamentCounter/TournamentCounterItem.d.ts +0 -8
  168. package/dist/components/TournamentCounter/TournamentCounterItem.js +0 -106
  169. package/dist/components/TournamentCounter/index.d.ts +0 -1
  170. package/dist/components/TournamentCounter/index.js +0 -1
  171. package/dist/components/Tournaments/TournamentDesktop.d.ts +0 -1
  172. package/dist/components/Tournaments/TournamentDesktop.js +0 -57
  173. package/dist/components/Tournaments/TournamentGameProviders.d.ts +0 -5
  174. package/dist/components/Tournaments/TournamentGameProviders.js +0 -38
  175. package/dist/components/Tournaments/TournamentItemDesktop.d.ts +0 -7
  176. package/dist/components/Tournaments/TournamentItemDesktop.js +0 -56
  177. package/dist/components/Tournaments/TournamentItemMobile.d.ts +0 -7
  178. package/dist/components/Tournaments/TournamentItemMobile.js +0 -54
  179. package/dist/components/Tournaments/TournamentMobile.d.ts +0 -1
  180. package/dist/components/Tournaments/TournamentMobile.js +0 -55
  181. package/dist/components/Tournaments/TournamentRules.d.ts +0 -5
  182. package/dist/components/Tournaments/TournamentRules.js +0 -11
  183. package/dist/components/Tournaments/Tournaments.client.d.ts +0 -2
  184. package/dist/components/Tournaments/Tournaments.client.js +0 -20
  185. package/dist/components/Tournaments/TournamentsContext.d.ts +0 -4
  186. package/dist/components/Tournaments/TournamentsContext.js +0 -3
  187. package/dist/components/Tournaments/useTournamentData.d.ts +0 -10
  188. package/dist/components/Tournaments/useTournamentData.js +0 -72
  189. package/dist/components/Tournaments/useTournamentItemData.d.ts +0 -16
  190. package/dist/components/Tournaments/useTournamentItemData.js +0 -64
  191. package/dist/components/index.d.ts +0 -33
  192. package/dist/components/index.js +0 -33
  193. package/dist/constants/endpoints.d.ts +0 -10
  194. package/dist/constants/endpoints.js +0 -41
  195. package/dist/constants/envVars.d.ts +0 -5
  196. package/dist/constants/envVars.js +0 -28
  197. package/dist/constants/gameProviders.d.ts +0 -4
  198. package/dist/constants/gameProviders.js +0 -368
  199. package/dist/constants/gameTypes.d.ts +0 -3
  200. package/dist/constants/gameTypes.js +0 -64
  201. package/dist/constants/headerKeys.d.ts +0 -2
  202. package/dist/constants/headerKeys.js +0 -2
  203. package/dist/constants/secretQuestions.d.ts +0 -3
  204. package/dist/constants/secretQuestions.js +0 -24
  205. package/dist/constants/storageKeys.d.ts +0 -2
  206. package/dist/constants/storageKeys.js +0 -2
  207. package/dist/icons/index.d.ts +0 -65
  208. package/dist/icons/index.js +0 -65
  209. package/dist/images/hacksaw-gaming.png +0 -0
  210. package/dist/server/services/index.d.ts +0 -4
  211. package/dist/server/services/index.js +0 -4
  212. package/dist/server/utils/index.d.ts +0 -29
  213. package/dist/server/utils/index.js +0 -29
  214. package/dist/ui/Presence.d.ts +0 -2
  215. package/dist/ui/Presence.js +0 -7
  216. package/dist/ui/Prose.d.ts +0 -2
  217. package/dist/ui/Prose.js +0 -5
  218. package/dist/ui/index.d.ts +0 -26
  219. package/dist/ui/index.js +0 -26
  220. package/dist/utils/index.d.ts +0 -17
  221. package/dist/utils/index.js +0 -17
  222. package/dist/utils/isMobile.d.ts +0 -5
  223. package/dist/utils/isMobile.js +0 -9
@@ -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
+ }
@@ -8,9 +8,20 @@ import { twMerge } from 'tailwind-merge';
8
8
  import { ArrowLeftIcon } from '../../../icons/ArrowLeftIcon.js';
9
9
  import { ArrowRightIcon } from '../../../icons/ArrowRightIcon.js';
10
10
  import { Button } from '../../../ui/Button/index.js';
11
+ import { callIfFn } from '../../../utils/callIfFn.js';
11
12
  import { useJackpotsListPropsContext } from './JackpotsListContext.js';
12
13
  export function JackpotsListItemGameProviders({ gameProviders, }) {
13
- const props = useJackpotsListPropsContext();
14
+ const jackpotsProps = useJackpotsListPropsContext();
15
+ const viewGamesUrl = (data) => {
16
+ return jackpotsProps.viewGamesUrl
17
+ ? callIfFn(jackpotsProps.viewGamesUrl, data)
18
+ .replace(':id', data.id)
19
+ .replace(':slug', data.slug)
20
+ : `/providers/${data.slug}`;
21
+ };
22
+ const classNames = isString(jackpotsProps.className)
23
+ ? { root: jackpotsProps.className }
24
+ : (jackpotsProps.className ?? {});
14
25
  const [emblaRef, emblaApi] = useEmblaCarousel({
15
26
  align: 'start',
16
27
  slidesToScroll: 1,
@@ -38,10 +49,6 @@ export function JackpotsListItemGameProviders({ gameProviders, }) {
38
49
  emblaApi.on('select', onSelect);
39
50
  emblaApi.on('reInit', onSelect);
40
51
  }, [emblaApi, onSelect]);
41
- const jackpotsProps = useJackpotsListPropsContext();
42
- const classNames = isString(props.className)
43
- ? { root: props.className }
44
- : (props.className ?? {});
45
- return (_jsxs("div", { className: "p-4 pb-8", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-text-primary-900 text-lg font-semibold", children: "Jackpot Game Providers" }), _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-3 overflow-hidden", ref: emblaRef, children: _jsx("div", { className: "flex gap-3.5", children: gameProviders.map((provider, i) => (_jsx(Link, { href: `/${provider.slug}`, className: twMerge('bg-gray-800 lg:bg-bg-primary-900 min-w-27.5 rounded-md', classNames.providerThumbnailRoot), children: _jsx(Image, { src: jackpotsProps.gameProviderImages?.[provider.id] ??
46
- provider.logo, alt: "provider", className: twMerge('size-full', classNames.providerThumbnailImage), width: 300, height: 150 }) }, i))) }) })] }));
52
+ return (_jsxs("div", { className: "p-4 pb-8", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "text-text-primary-900 text-lg font-semibold", children: "Jackpot Game Providers" }), _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-3 overflow-hidden", ref: emblaRef, children: _jsx("div", { className: "flex gap-3.5", children: gameProviders.map((provider) => (_jsx(Link, { href: viewGamesUrl(provider), className: twMerge('bg-gray-800 lg:bg-bg-primary-900 min-w-27.5 rounded-md', classNames.providerThumbnailRoot), children: _jsx(Image, { src: jackpotsProps.gameProviderImages?.[provider.id] ??
53
+ provider.logo, alt: "provider", className: twMerge('size-full', classNames.providerThumbnailImage), width: 300, height: 150 }) }, provider.slug))) }) })] }));
47
54
  }
@@ -8,6 +8,7 @@ import { Camera01Icon } from '../../icons/Camera01Icon.js';
8
8
  import { XIcon } from '../../icons/XIcon.js';
9
9
  import { Button } from '../../ui/Button/index.js';
10
10
  import { Dialog } from '../../ui/Dialog/index.js';
11
+ import { onMobileDevice } from '../../utils/onMobileDevice.js';
11
12
  import { useKYCContext } from './KYCContext.js';
12
13
  import { loadFaceApiModels } from './loadModels.js';
13
14
  import PersonOverlayDesktop from './PersonOverlayDesktop.js';
@@ -15,6 +16,7 @@ import { dataURLtoBlob, resizeFile } from './utils.js';
15
16
  export function CaptureSelfie() {
16
17
  const kyc = useKYCContext();
17
18
  const { mutate, isPending } = useUploadImageFileMutation();
19
+ const mobileDevice = onMobileDevice();
18
20
  const [modelsLoaded, setModelsLoaded] = useState(false);
19
21
  const [videoStream, setVideoStream] = useState(null);
20
22
  const [cameraError, setCameraError] = useState(null);
@@ -40,8 +42,8 @@ export function CaptureSelfie() {
40
42
  setCaptureInProgress(true);
41
43
  const stream = await navigator.mediaDevices.getUserMedia({
42
44
  video: {
43
- facingMode: 'environment',
44
- aspectRatio: 16 / 9,
45
+ facingMode: mobileDevice ? 'user' : 'environment',
46
+ aspectRatio: mobileDevice ? 9 / 16 : 16 / 9,
45
47
  width: { ideal: 1920 },
46
48
  height: { ideal: 1080 },
47
49
  },
@@ -232,5 +234,5 @@ export function CaptureSelfie() {
232
234
  return (_jsxs("div", { className: "w-full p-4 lg:w-[640px] lg:px-12 lg:py-4xl", children: [_jsxs("button", { type: "button", className: "flex items-center gap-lg lg:absolute lg:right-5 lg:top-5 lg:p-md", onClick: () => {
233
235
  stopCamera();
234
236
  kyc.setCapturing(null);
235
- }, children: [_jsx(XIcon, { className: "text-text-senary-300 hidden size-5 lg:block" }), _jsx(ArrowLeftIcon, { className: "text-text-senary-300 size-5 lg:hidden" }), _jsx("span", { className: "text-lg font-semibold lg:hidden", children: "Back" })] }), _jsx(Dialog.Title, { className: "mt-6 text-center text-lg font-semibold lg:mt-0", children: "Take a Selfie Holding Your ID" }), _jsx(Dialog.Description, { className: "text-text-tertiary-600 mx-auto mt-sm max-w-[19rem] text-center text-sm lg:max-w-full", children: "Make sure your face and ID are clearly visible, with no glare or blur." }), _jsx("div", { id: "parent", className: "border-border-disabled mt-6 aspect-video rounded-xl border bg-black lg:mt-8", children: captureInProgress ? (_jsxs("div", { className: "relative flex h-fit w-full flex-col items-center justify-center", children: [_jsx("video", { ref: videoRef, autoPlay: true, muted: true, className: "h-[60vh] w-full rounded-lg object-cover md:aspect-video md:h-[333px]", width: "100%", height: "100%" }), _jsx("canvas", { ref: faceCanvasRef, className: "absolute inset-0 h-[60vh] w-full object-cover md:aspect-video md:h-[333px] md:object-contain", width: "100%", height: "100%" }), isFaceCentered && (_jsx("span", { className: "absolute inset-x-0 bottom-4 flex items-center justify-center text-5xl font-bold text-[#713B12CC]", children: countdown })), !isFaceCentered && (_jsx("span", { className: "absolute inset-x-0 bottom-12 mx-auto w-1/2 text-center text-xs text-white md:bottom-3", children: "Please center your face in the camera view. Make sure your ID is clearly visible next to your face." })), _jsx(PersonOverlayDesktop, { isFaceCentered: isFaceCentered, width: videoRef.current?.clientWidth || 543, height: videoRef.current?.clientHeight || 333 })] })) : (selectedImage && (_jsx("img", { src: selectedImage, alt: "Captured Photo", className: "h-full w-full rounded-lg object-cover md:aspect-video md:h-[333px]" }))) }), selectedImage && (_jsxs("div", { className: "flex flex-col items-center justify-center gap-2 md:flex-row", children: [_jsxs(Button, { className: "disabled:bg-bg-disabled disabled:text-text-disabled mx-auto mt-4 px-xl disabled:opacity-100", size: "sm", onClick: retakePhoto, type: "button", children: ["Rekate Photo", _jsx(Camera01Icon, { className: "size-5" })] }), _jsxs(Button, { className: "disabled:bg-bg-disabled disabled:text-text-disabled mx-auto mt-4 px-xl disabled:opacity-100", size: "sm", onClick: usePhoto, type: "button", disabled: isPending, children: ["Use Photo", _jsx(Camera01Icon, { className: "size-5" })] })] })), !selectedImage && (_jsxs(Button, { className: "mx-auto mt-6 px-xl lg:mt-8", onClick: startCamera, disabled: !modelsLoaded, type: "button", children: ["Start Camera", _jsx(Camera01Icon, { className: "size-5" })] }))] }));
237
+ }, children: [_jsx(XIcon, { className: "text-text-senary-300 hidden size-5 lg:block" }), _jsx(ArrowLeftIcon, { className: "text-text-senary-300 size-5 lg:hidden" }), _jsx("span", { className: "text-lg font-semibold lg:hidden", children: "Back" })] }), _jsx(Dialog.Title, { className: "mt-6 text-center text-lg font-semibold lg:mt-0", children: "Take a Selfie Holding Your ID" }), _jsx(Dialog.Description, { className: "text-text-tertiary-600 mx-auto mt-sm max-w-[19rem] text-center text-sm lg:max-w-full", children: "Make sure your face and ID are clearly visible, with no glare or blur." }), _jsx("div", { id: "parent", className: "border-border-disabled mt-6 aspect-video rounded-xl border bg-black lg:mt-8", children: captureInProgress ? (_jsxs("div", { className: "relative flex h-fit w-full flex-col items-center justify-center", children: [_jsx("video", { ref: videoRef, autoPlay: true, muted: true, className: "h-[60vh] w-full rounded-lg object-cover md:aspect-video md:h-[333px]", width: "100%", height: "100%" }), _jsx("canvas", { ref: faceCanvasRef, className: "absolute inset-0 h-[60vh] w-full object-cover md:aspect-video md:h-[333px] md:object-contain", width: "100%", height: "100%" }), isFaceCentered && (_jsx("span", { className: "absolute inset-x-0 bottom-8 flex items-center justify-center text-5xl font-bold text-[#713B12CC] md:bottom-4", children: countdown })), !isFaceCentered && (_jsx("span", { className: "absolute inset-x-0 bottom-12 mx-auto w-1/2 text-center text-xs text-white md:bottom-3", children: "Please center your face in the camera view. Make sure your ID is clearly visible next to your face." })), _jsx(PersonOverlayDesktop, { isFaceCentered: isFaceCentered, width: videoRef.current?.clientWidth || 543, height: videoRef.current?.clientHeight || 333 })] })) : (selectedImage && (_jsx("img", { src: selectedImage, alt: "Captured Photo", className: "h-full w-full rounded-lg object-cover md:aspect-video md:h-[333px]" }))) }), selectedImage && (_jsxs("div", { className: "flex flex-col items-center justify-center gap-2 md:flex-row", children: [_jsxs(Button, { className: "disabled:bg-bg-disabled disabled:text-text-disabled mx-auto mt-4 px-xl disabled:opacity-100", size: "sm", onClick: retakePhoto, type: "button", children: ["Rekate Photo", _jsx(Camera01Icon, { className: "size-5" })] }), _jsxs(Button, { className: "disabled:bg-bg-disabled disabled:text-text-disabled mx-auto mt-4 px-xl disabled:opacity-100", size: "sm", onClick: usePhoto, type: "button", disabled: isPending, children: ["Use Photo", _jsx(Camera01Icon, { className: "size-5" })] })] })), !selectedImage && (_jsxs(Button, { className: "mx-auto mt-6 px-xl lg:mt-8", onClick: startCamera, disabled: !modelsLoaded, type: "button", children: ["Start Camera", _jsx(Camera01Icon, { className: "size-5" })] }))] }));
236
238
  }
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import Image from 'next/image';
3
3
  import Link from 'next/link';
4
4
  import { ChevronLeftIcon } from '../../icons/ChevronLeftIcon.js';
5
- import { Prose } from '../../ui/Prose.js';
5
+ import { Prose } from '../../ui/Prose/index.js';
6
6
  export function News(props) {
7
7
  return (_jsxs("div", { style: props.style, className: props.className, children: [_jsxs(Link, { href: props.viewAllUrl ?? '/news', className: "text-button-secondary-fg flex items-center gap-lg text-lg font-semibold", children: [_jsx(ChevronLeftIcon, { className: "size-6" }), "Back to all News"] }), _jsx(Image, { src: props.news.image, alt: "", width: 1024, height: 600, className: "mt-3xl block h-auto w-full rounded-xl lg:mt-6" }), _jsx("p", { className: "text-brand-400 mt-xl text-sm font-semibold lg:mt-6", children: props.news.category }), _jsx("h2", { className: "mt-xl text-2xl font-semibold lg:mt-6", children: props.news.title }), _jsx(Prose, { className: "mt-xl lg:mt-6", dangerouslySetInnerHTML: {
8
8
  __html: props.news.content,
@@ -11,7 +11,7 @@ import { useLocaleInfo } from '../../client/hooks/useLocaleInfo.js';
11
11
  import { usePromoQuery } from '../../client/hooks/usePromoQuery.js';
12
12
  import { ChevronLeftIcon } from '../../icons/ChevronLeftIcon.js';
13
13
  import { Button } from '../../ui/Button/index.js';
14
- import { Prose } from '../../ui/Prose.js';
14
+ import { Prose } from '../../ui/Prose/index.js';
15
15
  export function Promo__client(props) {
16
16
  const localeInfo = useLocaleInfo();
17
17
  const availablePromosQuery = useAvailablePromosQuery();
@@ -1,4 +1 @@
1
- import type { Quest } from '../../../types';
2
- export declare function DailyCheckInQuest({ quest }: {
3
- quest: Quest;
4
- }): import("react/jsx-runtime").JSX.Element;
1
+ export declare function DailyCheckInQuest(): import("react/jsx-runtime").JSX.Element;
@@ -4,6 +4,8 @@ import { addDays, isEqual, startOfDay } from 'date-fns';
4
4
  import { useState } from 'react';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { useCheckInDailyCheckInQuestMutation } from '../../../client/hooks/useCheckInDailyCheckInQuestMutation.js';
7
+ import { useDisclosure } from '../../../client/hooks/useDisclosure.js';
8
+ import { useLocaleInfo } from '../../../client/hooks/useLocaleInfo.js';
7
9
  import { toaster } from '../../../client/utils/toaster.js';
8
10
  import { CalendarIcon } from '../../../icons/CalendarIcon.js';
9
11
  import { CheckIcon } from '../../../icons/CheckIcon.js';
@@ -11,13 +13,19 @@ import { ClockStopWatchIcon } from '../../../icons/ClockStopWatchIcon.js';
11
13
  import { InfoCircleIcon } from '../../../icons/InfoCircleIcon.js';
12
14
  import { Badge } from '../../../ui/Badge/index.js';
13
15
  import { Button } from '../../../ui/Button/index.js';
16
+ import { dataAttr } from '../../../utils/dataAttr.js';
17
+ import { formatNumber } from '../../../utils/formatNumber.js';
14
18
  import { getQueryClient } from '../../../utils/getQueryClient.js';
19
+ import { parseDecimal } from '../../../utils/parseDecimal.js';
15
20
  import { getAvailableQuestsQueryKey } from '../../../utils/queryKeys.js';
16
21
  import CountdownTimer from '../CountdownTimer.js';
17
- import { DailyCheckInQuestModal } from './DailyCheckInQuestModal.js';
18
- export function DailyCheckInQuest({ quest }) {
22
+ import { useQuestContext } from '../QuestsContext.js';
23
+ import { DailyCheckInQuestRules } from './DailyCheckInQuestRules.js';
24
+ export function DailyCheckInQuest() {
25
+ const quest = useQuestContext();
19
26
  const queryClient = getQueryClient();
20
- const [showRules, setShowRules] = useState(false);
27
+ const disclosure = useDisclosure();
28
+ const localeInfo = useLocaleInfo();
21
29
  const [isExpired, setIsExpired] = useState(false);
22
30
  const { name, description, status, lastCheckInDate, progressPercentage, checkInStreak, thirdDayBonusAmount, sixthDayBonusAmount, seventhDayBonusAmount, endDateTime, id, } = quest;
23
31
  const today = startOfDay(new Date());
@@ -25,26 +33,23 @@ export function DailyCheckInQuest({ quest }) {
25
33
  ? isEqual(today, startOfDay(new Date(lastCheckInDate)))
26
34
  : false;
27
35
  const checkedInRewards = {
28
- 3: thirdDayBonusAmount,
29
- 6: sixthDayBonusAmount,
30
- 7: seventhDayBonusAmount,
36
+ 3: parseDecimal(thirdDayBonusAmount, 0),
37
+ 6: parseDecimal(sixthDayBonusAmount, 0),
38
+ 7: parseDecimal(seventhDayBonusAmount, 0),
31
39
  };
32
40
  const dailyCheckedInData = Array.from({ length: 7 }, (_, i) => {
33
41
  const day = i + 1;
34
42
  return {
35
43
  day,
36
- reward: checkedInRewards[day] ?? 0,
44
+ reward: checkedInRewards[day] ? checkedInRewards[day] : null,
37
45
  };
38
46
  });
39
- const { mutate } = useCheckInDailyCheckInQuestMutation({
47
+ const checkInDailyQuestMutation = useCheckInDailyCheckInQuestMutation({
40
48
  onSuccess() {
41
49
  toaster.success({
42
50
  title: 'Check-in successful 🎉',
43
51
  description: 'You’ve successfully checked in for today! Keep it up to maintain your streak!',
44
52
  });
45
- queryClient.invalidateQueries({
46
- queryKey: getAvailableQuestsQueryKey(),
47
- });
48
53
  },
49
54
  onError(e) {
50
55
  toaster.error({
@@ -53,26 +58,24 @@ export function DailyCheckInQuest({ quest }) {
53
58
  });
54
59
  },
55
60
  });
56
- const handleCheckIn = async () => mutate(id);
57
- return (_jsxs(_Fragment, { children: [_jsx(DailyCheckInQuestModal, { modalState: {
58
- isOpen: showRules,
59
- setIsOpen: setShowRules,
60
- } }), _jsxs("div", { className: "border-border-primary bg-bg-tertiary flex h-full w-full flex-col space-y-6 rounded-2xl border px-4 pb-6 pt-5", children: [_jsxs("div", { className: "flex flex-col space-y-2", children: [_jsxs("div", { className: "flex max-h-7.5 items-start justify-between", children: [_jsx(CountdownTimer, { endDateTime: endDateTime, renderAction: (timeLeft) => (_jsxs(Badge.Root, { size: "lg", colorScheme: "brand", round: false, children: [_jsx(Badge.Icon, { children: _jsx(ClockStopWatchIcon, {}) }), _jsxs(Badge.Label, { children: [timeLeft.days, "d:", timeLeft.hours, "h:", timeLeft.minutes, "m:", timeLeft.seconds, "s"] })] })), onEnd: () => setIsExpired(true) }), _jsx("div", { role: "button", className: "bg-bg-primary border-border-secondary flex size-9 cursor-pointer items-center justify-center rounded-md border", onClick: () => setShowRules((prev) => !prev), children: _jsx(InfoCircleIcon, { className: "text-text-disabled size-5" }) })] }), _jsx("p", { className: "text-xl font-semibold", children: name }), _jsx("p", { className: "text-text-secondary-700 text-wrap text-sm font-normal", dangerouslySetInnerHTML: { __html: description } })] }), _jsxs("div", { className: "flex w-full flex-col space-y-2", children: [_jsx("div", { className: "grid grid-cols-7", children: dailyCheckedInData.map((item) => {
61
- const reward = item.reward ? `+₱${item.reward}` : '-';
61
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "border-border-primary bg-bg-tertiary flex h-full w-full flex-col space-y-6 rounded-2xl border px-4 pb-6 pt-5", children: [_jsxs("div", { className: "flex flex-col space-y-2", children: [_jsxs("div", { className: "flex max-h-7.5 items-start justify-between", children: [_jsx(CountdownTimer, { endDateTime: endDateTime, renderAction: (timeLeft) => (_jsxs(Badge.Root, { size: "lg", colorScheme: "brand", round: false, children: [_jsx(Badge.Icon, { children: _jsx(ClockStopWatchIcon, {}) }), _jsxs(Badge.Label, { children: [timeLeft.days, "d:", timeLeft.hours, "h:", timeLeft.minutes, "m:", timeLeft.seconds, "s"] })] })), onEnd: () => setIsExpired(true) }), _jsx("div", { role: "button", className: "bg-bg-primary border-border-secondary flex size-9 cursor-pointer items-center justify-center rounded-md border", onClick: () => disclosure.setOpen(true), children: _jsx(InfoCircleIcon, { className: "text-text-disabled size-5" }) })] }), _jsx("p", { className: "text-xl font-semibold", children: name }), _jsx("p", { className: "text-text-secondary-700 text-wrap text-sm font-normal", dangerouslySetInnerHTML: { __html: description } })] }), _jsxs("div", { className: "flex w-full flex-col space-y-2", children: [_jsx("div", { className: "grid grid-cols-7", children: dailyCheckedInData.map((item) => {
62
+ const reward = item.reward
63
+ ? `+${formatNumber(item.reward, {
64
+ currency: localeInfo.currency.code,
65
+ minDecimalPlaces: 0,
66
+ maxDecimalPlaces: 0,
67
+ })}`
68
+ : '-';
62
69
  return (_jsx("div", { className: twMerge('flex items-center justify-center', item.day <= (checkInStreak || 0)
63
70
  ? 'text-brand-400'
64
71
  : 'text-text-secondary-700'), children: _jsx("p", { children: reward }) }, item.day));
65
- }) }), _jsx("div", { className: "bg-bg-primary h-2 w-full overflow-hidden rounded-full", children: _jsx("div", { className: "bg-utility-brand-600 h-full rounded-full transition-all duration-300", style: { width: `${progressPercentage}%` } }) }), _jsx("div", { className: "grid grid-cols-7", children: dailyCheckedInData.map((item) => (_jsx("div", { className: "flex items-center justify-center", children: _jsx(CalendarWithDayNumber, { day: item.day, currentCheckedInDays: checkInStreak || 0 }, item.day) }, item.day))) })] }), _jsx(Button, { onClick: handleCheckIn, className: "disabled:bg-bg-primary disabled:text-text-disabled", disabled: isExpired ||
72
+ }) }), _jsx("div", { className: "bg-bg-primary h-2 w-full overflow-hidden rounded-full", children: _jsx("div", { className: "bg-utility-brand-600 h-full rounded-full transition-all duration-300", style: { width: `${progressPercentage}%` } }) }), _jsx("div", { className: "grid grid-cols-7 place-items-center", children: dailyCheckedInData.map((item) => (_jsxs("div", { className: "text-text-secondary-700 ui-active:text-brand-400 group relative size-fit", "data-active": dataAttr(item.day <= (checkInStreak ?? 0)), children: [_jsx(CalendarIcon, { className: "h-4.5 w-auto" }), _jsx("p", { className: "absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 text-2xs leading-none", children: item.day })] }, item.day))) })] }), _jsx(Button, { onClick: () => checkInDailyQuestMutation.mutate(id), className: "disabled:bg-bg-primary disabled:text-text-disabled", disabled: isExpired ||
66
73
  status === 'COMPLETED' ||
67
74
  status === 'FAILED' ||
68
- hasCheckedInToday, children: hasCheckedInToday && status === 'IN_PROGRESS' ? (_jsx(CountdownTimer, { endDateTime: startOfDay(addDays(new Date(), 1)).toISOString(), renderAction: (timeLeft) => (_jsxs("div", { className: "flex items-center space-x-0.5", children: [_jsx(CheckIcon, {}), _jsxs("p", { children: [timeLeft.hours, "h:", timeLeft.minutes, "m:", timeLeft.seconds, "s"] })] })), onEnd: () => {
75
+ hasCheckedInToday ||
76
+ checkInDailyQuestMutation.isPending, children: hasCheckedInToday && status === 'IN_PROGRESS' ? (_jsx(CountdownTimer, { endDateTime: startOfDay(addDays(new Date(), 1)).toISOString(), renderAction: (timeLeft) => (_jsxs("div", { className: "flex items-center space-x-0.5", children: [_jsx(CheckIcon, { className: "size-5" }), _jsxs("p", { children: [timeLeft.hours, "h:", timeLeft.minutes, "m:", timeLeft.seconds, "s"] })] })), onEnd: () => {
69
77
  queryClient.invalidateQueries({
70
78
  queryKey: getAvailableQuestsQueryKey(),
71
79
  });
72
- } })) : ('Check-In') })] })] }));
73
- }
74
- function CalendarWithDayNumber({ day, currentCheckedInDays, }) {
75
- return (_jsxs("div", { className: twMerge('group relative h-fit w-fit', day <= currentCheckedInDays
76
- ? 'text-brand-400'
77
- : 'text-text-secondary-700'), children: [_jsx(CalendarIcon, {}), _jsx("div", { className: "absolute inset-0 mt-1 flex items-center justify-center text-2xs lg:mt-[2px]", children: _jsx("p", { className: "text-center", children: day }) })] }));
80
+ } })) : ('Check-In') })] }), _jsx(DailyCheckInQuestRules, { open: disclosure.open, onOpenChange: disclosure.setOpen })] }));
78
81
  }
@@ -0,0 +1,6 @@
1
+ export interface DailyCheckInQuestRulesProps {
2
+ open?: boolean;
3
+ onOpenChange?: (open: boolean) => void;
4
+ defaultOpen?: boolean;
5
+ }
6
+ export declare function DailyCheckInQuestRules(props: DailyCheckInQuestRulesProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useControllableState } from '../../../client/hooks/useControllableState.js';
4
+ import { XIcon } from '../../../icons/XIcon.js';
5
+ import { Button } from '../../../ui/Button/index.js';
6
+ import { Dialog } from '../../../ui/Dialog/index.js';
7
+ import { Portal } from '../../../ui/Portal/index.js';
8
+ export function DailyCheckInQuestRules(props) {
9
+ const [open, setOpen] = useControllableState({
10
+ value: props.open,
11
+ defaultValue: props.defaultOpen ?? false,
12
+ onChange: props.onOpenChange,
13
+ });
14
+ return (_jsx(Dialog.Root, { lazyMount: true, unmountOnExit: true, open: open, onOpenChange: (details) => setOpen(details.open), closeOnEscape: false, closeOnInteractOutside: false, children: _jsxs(Portal, { children: [_jsx(Dialog.Backdrop, { className: "!z-[calc(var(--z-dialog)+1)]" }), _jsx(Dialog.Positioner, { className: "!z-[calc(var(--z-dialog)+2)] flex items-center justify-center", children: _jsxs(Dialog.Content, { className: "min-h-auto mx-auto max-w-[343px] rounded-xl px-4 pb-0 pt-5", children: [_jsx(Dialog.CloseTrigger, { children: _jsx(XIcon, {}) }), _jsxs("div", { className: "flex flex-col space-y-5", children: [_jsx("h2", { className: "text-text-primary-900 text-lg font-semibold", children: "Daily Check-In Rules" }), _jsxs("ol", { className: "text-text-tertiary-600 group list-disc text-wrap pl-4 text-sm font-normal", children: [_jsx("li", { children: "Earn rewards just for checking in each day!" }), _jsx("li", { children: "Stay consistent to unlock special rewards on the 3rd, 5th, and 7th day." }), _jsx("li", { children: "Missing a day will reset your streak, starting again from Day 1." }), _jsx("li", { children: "Each check-in unlocks the next one on the following day." }), _jsx("li", { children: "Successfully check in for 7 consecutive days to complete the quest and reset the cycle." })] })] }), _jsx("div", { className: "pb-4 pt-6", children: _jsx(Button, { onClick: () => setOpen(false), children: "Ok" }) })] }) })] }) }));
15
+ }
@@ -1,4 +1 @@
1
- import type { Quest } from '../../../types';
2
- export declare function OnboardingQuest(props: {
3
- quest: Quest;
4
- }): null;
1
+ export declare function OnboardingQuest(): import("react/jsx-runtime").JSX.Element;