@bikdotai/bik-widgets 1.0.0

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 (206) hide show
  1. package/.eslintrc +22 -0
  2. package/.eslintrc.js +19 -0
  3. package/.github/workflows/main.yml +293 -0
  4. package/.prettierignore +13 -0
  5. package/.prettierrc +10 -0
  6. package/README.md +128 -0
  7. package/cypress/apiHelper/endpoints.ts +21 -0
  8. package/cypress/apiHelper/executor.ts +42 -0
  9. package/cypress/e2e/bottomDrawer.cy.ts +49 -0
  10. package/cypress/e2e/directReward.cy.ts +67 -0
  11. package/cypress/e2e/scratchTheCard.cy.ts +68 -0
  12. package/cypress/e2e/stw.cy.ts +82 -0
  13. package/cypress/e2e/waRedirection.cy.ts +46 -0
  14. package/cypress/fixtures/payloads.ts +330 -0
  15. package/cypress/support/commands.ts +37 -0
  16. package/cypress/support/e2e.ts +20 -0
  17. package/cypress.staging.config.ts +23 -0
  18. package/jsconfig.json +6 -0
  19. package/localtest.sh +10 -0
  20. package/log-server.js +86 -0
  21. package/package.json +79 -0
  22. package/postcss.config.js +8 -0
  23. package/src/Globals.d.ts +2 -0
  24. package/src/assets/lottie/santa.json +11722 -0
  25. package/src/assets/svg/CalendarClockIcon.tsx +30 -0
  26. package/src/assets/svg/CalendarIcon.tsx +24 -0
  27. package/src/assets/svg/CheckIcon.tsx +17 -0
  28. package/src/assets/svg/ChevronIcon.tsx +21 -0
  29. package/src/assets/svg/Close.tsx +39 -0
  30. package/src/assets/svg/Confetti.tsx +140 -0
  31. package/src/assets/svg/Copy.tsx +26 -0
  32. package/src/assets/svg/DropdownCheckIcon.tsx +35 -0
  33. package/src/assets/svg/ErrorIcon.tsx +27 -0
  34. package/src/assets/svg/RadioIcon.tsx +25 -0
  35. package/src/assets/svg/UncheckedCheckboxIcon.tsx +28 -0
  36. package/src/assets/svg/UncheckedRadioIcon.tsx +26 -0
  37. package/src/assets/svg/info.tsx +30 -0
  38. package/src/assets/svg/qrcode.svg +14 -0
  39. package/src/bootstrap.tsx +8 -0
  40. package/src/components/CtaCard/index.tsx +37 -0
  41. package/src/components/CtaCard/preview.module.css +32 -0
  42. package/src/components/CtaCard/style.module.css +32 -0
  43. package/src/components/EmailInput/emailInputBox.tsx +95 -0
  44. package/src/components/Fab/index.tsx +224 -0
  45. package/src/components/Fab/preview.module.css +28 -0
  46. package/src/components/Fab/style.module.css +37 -0
  47. package/src/components/Icons/Call.tsx +26 -0
  48. package/src/components/Icons/Cross.tsx +24 -0
  49. package/src/components/Icons/Gmail.tsx +61 -0
  50. package/src/components/Icons/Instagram.tsx +60 -0
  51. package/src/components/Icons/LiveChat.tsx +43 -0
  52. package/src/components/Icons/Messenger.tsx +57 -0
  53. package/src/components/Icons/Send.tsx +22 -0
  54. package/src/components/Icons/Whatsapp.tsx +24 -0
  55. package/src/components/Shimmer/index.tsx +12 -0
  56. package/src/components/Shimmer/style.module.css +37 -0
  57. package/src/components/SmsInput/smsInputBox.tsx +135 -0
  58. package/src/components/UserDetailsV2/userDetailsV2.desktop.module.css +52 -0
  59. package/src/components/UserDetailsV2/userDetailsV2.mobile.module.css +52 -0
  60. package/src/components/UserDetailsV2/userDetailsV2.module.css +81 -0
  61. package/src/components/UserDetailsV2/userDetailsV2.tsx +527 -0
  62. package/src/components/WhatsappInput/Spinner.tsx +26 -0
  63. package/src/components/WhatsappInput/whatsappInput.module.css +106 -0
  64. package/src/components/WhatsappInput/whatsappInputBox.tsx +155 -0
  65. package/src/components/WhatsappInput/whatsappInputPreviewDesktop.module.css +71 -0
  66. package/src/components/WhatsappInput/whatsappInputPreviewMobile.module.css +65 -0
  67. package/src/components/checkbox/checkbox.module.css +19 -0
  68. package/src/components/checkbox/checkbox.tsx +88 -0
  69. package/src/components/countryCodePicker/countriesDropdown.module.css +77 -0
  70. package/src/components/countryCodePicker/countriesDropdown.tsx +81 -0
  71. package/src/components/couponDetails/coupon.module.css +208 -0
  72. package/src/components/couponDetails/coupon.tsx +210 -0
  73. package/src/components/couponDetails/couponPreviewDesktop.module.css +158 -0
  74. package/src/components/couponDetails/couponPreviewMobile.module.css +164 -0
  75. package/src/components/index.ts +3 -0
  76. package/src/components/inputComponents/Checkbox.module.css +197 -0
  77. package/src/components/inputComponents/Checkbox.tsx +85 -0
  78. package/src/components/inputComponents/DatePicker.module.css +565 -0
  79. package/src/components/inputComponents/DatePicker.tsx +278 -0
  80. package/src/components/inputComponents/Dropdown.module.css +796 -0
  81. package/src/components/inputComponents/Dropdown.tsx +630 -0
  82. package/src/components/inputComponents/InputBox.module.css +401 -0
  83. package/src/components/inputComponents/InputBox.tsx +209 -0
  84. package/src/components/selectedCountry/selectedCountry.module.css +76 -0
  85. package/src/components/selectedCountry/selectedCountry.tsx +76 -0
  86. package/src/components/selectedCountry/selectedCountryPreviewDesktop.module.css +56 -0
  87. package/src/components/selectedCountry/selectedCountryPreviewMobile.module.css +57 -0
  88. package/src/components/userDetailsForm/RenderCustomFields.tsx +333 -0
  89. package/src/components/userDetailsForm/userDetailsForm.tsx +675 -0
  90. package/src/hooks/index.ts +4 -0
  91. package/src/hooks/useExitIntent.ts +452 -0
  92. package/src/hooks/useIsMobile.tsx +21 -0
  93. package/src/hooks/useMessageEvent.ts +8 -0
  94. package/src/hooks/useTriggeredIntentDetails.ts +43 -0
  95. package/src/hooks/useUrlListerner.ts +30 -0
  96. package/src/hooks/useWebSocketLogger.ts +59 -0
  97. package/src/hooks/useWindowEvent.ts +8 -0
  98. package/src/icons/copyIcon.tsx +26 -0
  99. package/src/icons/crossIconDesktop.tsx +20 -0
  100. package/src/icons/crossIconMobile.tsx +20 -0
  101. package/src/index.html +30 -0
  102. package/src/index.ts +32 -0
  103. package/src/index.tsx +1 -0
  104. package/src/repo/widgetRepo.ts +21 -0
  105. package/src/types/customFields.ts +73 -0
  106. package/src/utilities/cookie.ts +70 -0
  107. package/src/utilities/customFieldTypeMapping.ts +67 -0
  108. package/src/utilities/customFieldValidation.ts +201 -0
  109. package/src/utilities/encryption.ts +21 -0
  110. package/src/utilities/exitIntentUtils.ts +31 -0
  111. package/src/utilities/global.css +11 -0
  112. package/src/utilities/languageUtilities.ts +235 -0
  113. package/src/utilities/localRunner.js +26 -0
  114. package/src/utilities/localRunner.ts +27 -0
  115. package/src/utilities/localStorage.ts +40 -0
  116. package/src/utilities/script.tsx +15 -0
  117. package/src/utilities/stringUtils.ts +5 -0
  118. package/src/utilities/styleUtils.ts +134 -0
  119. package/src/utilities/variables.ts +11 -0
  120. package/src/utilities/widgetUtils.js +342 -0
  121. package/src/utilities/widgetUtils.ts +313 -0
  122. package/src/widgets/BottomDrawer/config.ts +41 -0
  123. package/src/widgets/BottomDrawer/index.tsx +116 -0
  124. package/src/widgets/BottomDrawer/modal.tsx +286 -0
  125. package/src/widgets/BottomDrawer/preview.module.css +122 -0
  126. package/src/widgets/BottomDrawer/previewMobile.module.css +124 -0
  127. package/src/widgets/BottomDrawer/style.module.css +279 -0
  128. package/src/widgets/CaptivateBanner/captivateBanner.tsx +200 -0
  129. package/src/widgets/CaptivateBanner/config.ts +72 -0
  130. package/src/widgets/CaptivateBanner/index.tsx +204 -0
  131. package/src/widgets/CaptivateBanner/previewDesktop.module.css +51 -0
  132. package/src/widgets/CaptivateBanner/previewMobile.module.css +51 -0
  133. package/src/widgets/CaptivateBanner/style.module.css +77 -0
  134. package/src/widgets/CaptivateBanner/utils.ts +104 -0
  135. package/src/widgets/CentrallyAlignedPopup/config.ts +42 -0
  136. package/src/widgets/CentrallyAlignedPopup/index.tsx +109 -0
  137. package/src/widgets/CentrallyAlignedPopup/modal.tsx +269 -0
  138. package/src/widgets/CentrallyAlignedPopup/preview.module.css +153 -0
  139. package/src/widgets/CentrallyAlignedPopup/previewMobile.module.css +153 -0
  140. package/src/widgets/CentrallyAlignedPopup/style.module.css +283 -0
  141. package/src/widgets/DirectReward/components/couponDetails.tsx +265 -0
  142. package/src/widgets/DirectReward/components/userDetails.tsx +117 -0
  143. package/src/widgets/DirectReward/config.ts +186 -0
  144. package/src/widgets/DirectReward/directReward.tsx +350 -0
  145. package/src/widgets/DirectReward/index.tsx +579 -0
  146. package/src/widgets/DirectReward/previewStyles/thankYouPreviewDesktop.module.css +276 -0
  147. package/src/widgets/DirectReward/previewStyles/thankYouPreviewMobile.module.css +303 -0
  148. package/src/widgets/DirectReward/previewStyles/userDetailsPreviewDesktop.module.css +511 -0
  149. package/src/widgets/DirectReward/previewStyles/userDetailsPreviewMobile.module.css +462 -0
  150. package/src/widgets/DirectReward/style.module.css +836 -0
  151. package/src/widgets/ExitIntentHook.tsx +28 -0
  152. package/src/widgets/STW/api.ts +70 -0
  153. package/src/widgets/STW/components/svgFactory.tsx +44 -0
  154. package/src/widgets/STW/config.ts +193 -0
  155. package/src/widgets/STW/context.ts +7 -0
  156. package/src/widgets/STW/couponDetails.tsx +121 -0
  157. package/src/widgets/STW/index.tsx +733 -0
  158. package/src/widgets/STW/previewStyles/thankyouPreviewDesktop.module.css +215 -0
  159. package/src/widgets/STW/previewStyles/thankyouPreviewMobile.module.css +205 -0
  160. package/src/widgets/STW/previewStyles/userInputsPreviewDesktop.module.css +732 -0
  161. package/src/widgets/STW/previewStyles/userInputsPreviewMobile.module.css +661 -0
  162. package/src/widgets/STW/previewStyles/wheelPreviewDesktop.module.css +498 -0
  163. package/src/widgets/STW/previewStyles/wheelPreviewMobile.module.css +497 -0
  164. package/src/widgets/STW/stw1.tsx +119 -0
  165. package/src/widgets/STW/stw2Components/wheelDesign.tsx +183 -0
  166. package/src/widgets/STW/stw2Pages/couponDetails.tsx +72 -0
  167. package/src/widgets/STW/stw2Pages/stw2.tsx +212 -0
  168. package/src/widgets/STW/stw2Pages/style.module.css +1226 -0
  169. package/src/widgets/STW/stw2Pages/userDetails.tsx +86 -0
  170. package/src/widgets/STW/stw2Pages/wheel.tsx +117 -0
  171. package/src/widgets/STW/stw2PreviewStyles/thankyouPreviewDesktop.module.css +835 -0
  172. package/src/widgets/STW/stw2PreviewStyles/thankyouPreviewMobile.module.css +787 -0
  173. package/src/widgets/STW/stw2PreviewStyles/userInputsPreviewDesktop.module.css +867 -0
  174. package/src/widgets/STW/stw2PreviewStyles/userInputsPreviewMobile.module.css +798 -0
  175. package/src/widgets/STW/stw2PreviewStyles/wheelPreviewDesktop.module.css +572 -0
  176. package/src/widgets/STW/stw2PreviewStyles/wheelPreviewMobile.module.css +559 -0
  177. package/src/widgets/STW/style.module.css +901 -0
  178. package/src/widgets/STW/userDetails.tsx +150 -0
  179. package/src/widgets/STW/utility.ts +664 -0
  180. package/src/widgets/STW/wheel.tsx +304 -0
  181. package/src/widgets/ScratchCard/ScratchOff/scratchOff.tsx +157 -0
  182. package/src/widgets/ScratchCard/config.ts +152 -0
  183. package/src/widgets/ScratchCard/globalStyle.module.css +931 -0
  184. package/src/widgets/ScratchCard/index.tsx +546 -0
  185. package/src/widgets/ScratchCard/modal.tsx +225 -0
  186. package/src/widgets/ScratchCard/preview.module.css +250 -0
  187. package/src/widgets/ScratchCard/previewMobile.module.css +247 -0
  188. package/src/widgets/ScratchCard/previewStyles/userDetailsPreviewDesktop.module.css +537 -0
  189. package/src/widgets/ScratchCard/previewStyles/userDetailsPreviewMobile.module.css +463 -0
  190. package/src/widgets/ScratchCard/style.module.css +220 -0
  191. package/src/widgets/ShopifyForm/config.ts +168 -0
  192. package/src/widgets/ShopifyForm/index.tsx +214 -0
  193. package/src/widgets/ShopifyForm/previewDesktop.module.css +117 -0
  194. package/src/widgets/ShopifyForm/previewMobile.module.css +131 -0
  195. package/src/widgets/ShopifyForm/shopifyForm.tsx +445 -0
  196. package/src/widgets/ShopifyForm/style.module.css +161 -0
  197. package/src/widgets/SingleButtonRedirection/config.ts +47 -0
  198. package/src/widgets/SingleButtonRedirection/index.tsx +121 -0
  199. package/src/widgets/WebStories/config.ts +105 -0
  200. package/src/widgets/WebStories/index.css +3 -0
  201. package/src/widgets/WebStories/index.tsx +282 -0
  202. package/src/widgets/WebStories/style.module.css +26 -0
  203. package/src/widgets/index.tsx +3 -0
  204. package/src/widgets/utility.ts +31 -0
  205. package/tsconfig.json +12 -0
  206. package/webpack.config.js +239 -0
@@ -0,0 +1,497 @@
1
+ .bikCloseBtWnrapper {
2
+ width: 100%;
3
+ display: flex;
4
+ justify-content: flex-end;
5
+ align-items: center;
6
+ position: absolute;
7
+ top: -122px;
8
+ justify-content: center;
9
+ }
10
+
11
+ .bikCloseBtn {
12
+ width: 18px;
13
+ height: 18px;
14
+ border-radius: 50%;
15
+ background-color: #fff;
16
+ margin-bottom: 11px;
17
+ display: flex;
18
+ justify-content: center;
19
+ align-items: center;
20
+ cursor: pointer;
21
+ position: absolute;
22
+ top: -122px;
23
+ left: 50%;
24
+ transform: translate(-50%, 0);
25
+ }
26
+
27
+ #phoneField:focus-visible {
28
+ box-shadow: unset;
29
+ }
30
+
31
+ .bikCloseBtn svg {
32
+ width: 8px;
33
+ height: 8px;
34
+ }
35
+
36
+ .bikMainWrapper {
37
+ position: absolute;
38
+ z-index: 9999;
39
+ width: 100%;
40
+ bottom: 0;
41
+ left: 0;
42
+ }
43
+
44
+ .bikWrapper {
45
+ /* width: 90%; width: 892px; min-height: 300px; */
46
+ width: 100%;
47
+ height: calc(100% - 32px - 28px);
48
+ background-color: #ffffff;
49
+ /* position: absolute; */
50
+ /* transform: translate(-50%, -50%); top: 50%; left: 50%; */
51
+ display: flex;
52
+ border-radius: 8px 8px 0 0;
53
+ padding: 16px 0;
54
+ box-shadow: 0 4em 5em rgba(27, 8, 53, 0.2);
55
+ flex-direction: column;
56
+ align-items: center;
57
+ padding-top: 105px;
58
+ }
59
+
60
+ .bikHeaderContainer {
61
+ display: flex;
62
+ flex-direction: column;
63
+ width: 100%;
64
+ }
65
+
66
+ #bikHeader {
67
+ font-family: 'Inter';
68
+ font-style: normal;
69
+ font-size: 14px;
70
+ line-height: 20px;
71
+ text-align: center;
72
+ font-feature-settings:
73
+ 'tnum' on,
74
+ 'lnum' on,
75
+ 'case' on,
76
+ 'ss04' on;
77
+ color: #212121;
78
+ margin: 0;
79
+ }
80
+
81
+ #bikSubheader {
82
+ /* font-family: 'Inter'; font-style: normal; font-weight: 400; font-size: 16px; line-height: 24px; */
83
+ font-feature-settings:
84
+ 'tnum' on,
85
+ 'lnum' on,
86
+ 'case' on,
87
+ 'ss04' on;
88
+ color: #616161;
89
+ text-align: center;
90
+ margin: 0;
91
+ margin-bottom: 15px;
92
+ margin-top: 2px;
93
+ font-size: 10px;
94
+ line-height: 12px;
95
+ }
96
+
97
+ #bikHeader p,
98
+ #bikSubheader p {
99
+ margin: 0;
100
+ font-family: inherit;
101
+ }
102
+
103
+ .bikSegmentDivider {
104
+ background-color: white;
105
+ height: 2px;
106
+ width: 400%;
107
+ transform: rotate(-60deg);
108
+ box-shadow: 0px 0px 11px 2px #00000082;
109
+ position: absolute;
110
+ top: calc(100% - 2px);
111
+ }
112
+
113
+ .spinTopAligned {
114
+ position: absolute;
115
+ top: -18%;
116
+ height: 400px;
117
+ width: 400px;
118
+ }
119
+
120
+ /* .bikContainerPadding {
121
+ padding-top: 80px;
122
+ } */
123
+ #bikUserDetails {
124
+ width: 364px;
125
+ }
126
+
127
+ #bikInputWrapper {
128
+ padding: 8px 8px 8px 16px;
129
+ gap: 16px;
130
+ width: 100%;
131
+ height: 48px;
132
+ background: #ffffff;
133
+ border: 1px solid #e0e0e0;
134
+ border-radius: 4px;
135
+ display: flex;
136
+ align-items: center;
137
+ }
138
+
139
+ #bikInputWrapper input {
140
+ border: none;
141
+ outline: none;
142
+ width: 100%;
143
+ }
144
+
145
+ #bikErrorWrapper {
146
+ margin: 0;
147
+ color: #b92321;
148
+ font-weight: 400;
149
+ font-size: 12px;
150
+ line-height: 16px;
151
+ margin-top: 8px;
152
+ }
153
+
154
+ #bikayiBtn {
155
+ border: none;
156
+ padding: 14px 0;
157
+ background: #731dcf;
158
+ border-radius: 8px;
159
+ outline: none;
160
+ width: 100%;
161
+ color: #fff;
162
+ font-weight: 600;
163
+ font-size: 16px;
164
+ line-height: 20px;
165
+ margin-top: 24px;
166
+ cursor: pointer;
167
+ }
168
+
169
+ #bikFooterLastPage {
170
+ width: 405px;
171
+ }
172
+
173
+ #bikDiscountCodeDetails {
174
+ display: flex;
175
+ flex-direction: column;
176
+ align-items: center;
177
+ padding: 16px;
178
+ gap: 8px;
179
+ width: 100%;
180
+ height: 100px;
181
+ background: #e6f4e7;
182
+ border: 1px dashed #1a872c;
183
+ border-radius: 4px;
184
+ margin-bottom: 32px;
185
+ }
186
+
187
+ #bikDiscountCouponName {
188
+ text-align: center;
189
+ color: #212121;
190
+ }
191
+
192
+ #bikDiscountCouponDetail {
193
+ text-align: center;
194
+ color: #616161;
195
+ }
196
+
197
+ .font14 {
198
+ font-size: 14px;
199
+ line-height: 20px;
200
+ }
201
+
202
+ .font10 {
203
+ font-size: 10px;
204
+ line-height: 12px;
205
+ }
206
+
207
+ .fontWeight400 {
208
+ font-weight: 400;
209
+ }
210
+
211
+ .fontWeight600 {
212
+ font-weight: 600;
213
+ }
214
+
215
+ #bikWheel {
216
+ height: 100%;
217
+ width: 100%;
218
+ top: 0;
219
+ padding: 0;
220
+ border-radius: 50%;
221
+ box-shadow: 0px 5.75051px 51.7546px rgb(0 0 0 / 24%);
222
+ border: 21px solid #fff;
223
+ }
224
+
225
+ .top58 {
226
+ top: 58%;
227
+ }
228
+
229
+ @keyframes rotate {
230
+ 100% {
231
+ transform: rotate(360deg);
232
+ }
233
+ }
234
+
235
+ #spinBtn {
236
+ position: absolute;
237
+ transform: translate(-50%, -50%);
238
+ top: 50%;
239
+ left: 50%;
240
+ border: 10px solid #fff !important;
241
+ width: 23%;
242
+ height: 23%;
243
+ border-radius: 50%;
244
+ cursor: pointer;
245
+ border: 0;
246
+ background: #fbbb18;
247
+ color: #664006;
248
+ text-transform: uppercase;
249
+ font-family: 'Poppins';
250
+ font-style: normal;
251
+ font-weight: 700;
252
+ font-size: 24px;
253
+ line-height: 35px;
254
+ /* identical to box height, or 100% */
255
+ text-align: center;
256
+ }
257
+
258
+ /* img {
259
+ position: absolute;
260
+ width: 4em;
261
+ top: 45%;
262
+ right: -8%;
263
+ } */
264
+ .bikWidgetCTAHide {
265
+ display: none !important;
266
+ }
267
+
268
+ .bikWidgetCTAShow {
269
+ display: flex !important;
270
+ }
271
+
272
+ #bikWidgetCTA {
273
+ width: 70px;
274
+ height: 70px;
275
+ border-radius: 50%;
276
+ background: #fce49b;
277
+ display: flex;
278
+ justify-content: center;
279
+ align-items: center;
280
+ position: fixed;
281
+ bottom: 90px;
282
+ right: 70px;
283
+ z-index: 9999;
284
+ cursor: pointer;
285
+ box-shadow:
286
+ rgba(50, 50, 93, 0.25) 0px 13px 27px -5px,
287
+ rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;
288
+ opacity: 1;
289
+ animation: pulse 0.7s ease-in forwards;
290
+ }
291
+
292
+ #bikFooter2 {
293
+ display: none;
294
+ padding-bottom: 16px;
295
+ }
296
+
297
+ input::-webkit-outer-spin-button,
298
+ input::-webkit-inner-spin-button {
299
+ -webkit-appearance: none;
300
+ margin: 0;
301
+ }
302
+
303
+ /* Firefox */
304
+ input[type='number'] {
305
+ -moz-appearance: textfield;
306
+ }
307
+
308
+ @keyframes pulse {
309
+ 0% {
310
+ opacity: 0;
311
+ }
312
+
313
+ 100% {
314
+ opacity: 1;
315
+ }
316
+ }
317
+
318
+ .bikContainerSpinner {
319
+ position: relative;
320
+ height: 188px;
321
+ width: 188px;
322
+ border-radius: 50%;
323
+ /* margin: 50px auto; */
324
+ display: flex;
325
+ align-items: center;
326
+ justify-content: center;
327
+ overflow: hidden;
328
+ pointer-events: none;
329
+ box-shadow: 0px 5.75051px 51.7546px rgba(0, 0, 0, 0.24);
330
+ background-color: #fff;
331
+ }
332
+
333
+ .bikContainerInner {
334
+ position: relative;
335
+ height: 100%;
336
+ width: 100%;
337
+ display: flex;
338
+ align-items: center;
339
+ justify-content: center;
340
+ }
341
+
342
+ .bikContainerOverlay {
343
+ height: 100%;
344
+ width: 100%;
345
+ border-radius: 50%;
346
+ border: 7px solid white;
347
+ box-shadow:
348
+ inset 5px 5px 25px 0px #00000010,
349
+ inset -5px -5px 25px 0 #00000010;
350
+ z-index: 13;
351
+ position: relative;
352
+ display: block !important;
353
+ }
354
+
355
+ .bikSegment {
356
+ position: absolute;
357
+ clip-path: polygon(100% 0, 0 0, 50% 100%);
358
+ height: 87px;
359
+ width: 120px;
360
+ bottom: 50%;
361
+ transform-origin: bottom center;
362
+ display: flex;
363
+ align-items: flex-start;
364
+ justify-content: center;
365
+ pointer-events: none;
366
+ font-family: inherit;
367
+ padding-top: 15px;
368
+ /*padding: 0 40px;*/
369
+ /* padding: 0 110px; */
370
+ }
371
+
372
+ .bikCouponText {
373
+ text-align: center;
374
+ }
375
+
376
+ .bikSegment::after {
377
+ content: '';
378
+ background-color: white;
379
+ height: 2px;
380
+ width: 100%;
381
+ transform: rotate(-60deg) translateY(45px) translateY(19px);
382
+ box-shadow: 0px 0px 11px 2px #00000082;
383
+ position: absolute;
384
+ }
385
+
386
+ .bikContainerSpin {
387
+ position: absolute;
388
+ display: flex;
389
+ align-items: center;
390
+ justify-content: center;
391
+ }
392
+
393
+ .bikSpinArrow {
394
+ position: absolute;
395
+ background: #f3f3f3;
396
+ width: 10px;
397
+ height: 15px;
398
+ bottom: 17px;
399
+ clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
400
+ display: block !important;
401
+ }
402
+
403
+ .bikSpinContent {
404
+ height: 37px;
405
+ width: 37px;
406
+ position: absolute;
407
+ z-index: 1;
408
+ border: 2.6px solid white;
409
+ border-radius: 50%;
410
+ background: #fbbb18;
411
+ display: flex;
412
+ align-items: center;
413
+ justify-content: center;
414
+ box-shadow: 0px 0px 25px 1px #00000052;
415
+ cursor: pointer;
416
+ }
417
+
418
+ .bikSpinLogo {
419
+ font-style: normal;
420
+ font-weight: 700;
421
+ font-size: 9px;
422
+ line-height: 35px;
423
+ text-align: center;
424
+ font-feature-settings:
425
+ 'tnum' on,
426
+ 'lnum' on;
427
+ color: #feffff;
428
+ }
429
+
430
+ .bikSegment.one {
431
+ background-color: #fafafa;
432
+ }
433
+
434
+ .bikSegment.two {
435
+ background-color: #e0e0e0;
436
+ transform: rotate(60deg);
437
+ }
438
+
439
+ .bikSegment.three {
440
+ background-color: #f0f0f0;
441
+ transform: rotate(120deg);
442
+ }
443
+
444
+ .bikSegment.four {
445
+ background-color: #fafafa;
446
+ transform: rotate(180deg);
447
+ }
448
+
449
+ .bikSegment.five {
450
+ background-color: #e0e0e0;
451
+ transform: rotate(240deg);
452
+ }
453
+
454
+ .bikSegment.six {
455
+ background-color: #f0f0f0;
456
+ transform: rotate(300deg);
457
+ }
458
+
459
+ .bikMainContainer {
460
+ display: flex;
461
+ justify-content: center;
462
+ align-items: center;
463
+ position: absolute;
464
+ top: -95px;
465
+ }
466
+
467
+ .bikCouponText {
468
+ font-weight: 800;
469
+ font-size: 8px;
470
+ line-height: 10px;
471
+ font-family: inherit;
472
+ width: 50%;
473
+ }
474
+
475
+ .poweredBy {
476
+ color: #9e9e9e;
477
+ font-weight: 400;
478
+ font-size: 12px;
479
+ line-height: 12px;
480
+ pointer-events: none;
481
+ text-align: center;
482
+ display: flex;
483
+ justify-content: center;
484
+ align-items: center;
485
+ font-family: 'Inter';
486
+ }
487
+
488
+ .poweredBy a {
489
+ text-decoration: none;
490
+ color: #9e9e9e;
491
+ margin-right: 4px;
492
+ }
493
+
494
+ .poweredBy svg {
495
+ width: 20px;
496
+ height: 20px;
497
+ }
@@ -0,0 +1,119 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { ISTW } from '.';
3
+ import { STWContext } from './context';
4
+ import { IUserInputs } from './userDetails';
5
+ import {
6
+ IDRWidgetCustomisation,
7
+ ISO_CODES_VALUES,
8
+ ISTWWidgetCustomisation,
9
+ WidgetSchema,
10
+ } from '@bikdotai/bik-models/dm';
11
+ import { IUserFields } from '../../components/userDetailsForm/userDetailsForm';
12
+
13
+ export interface ISTWTemplate extends ISTW {
14
+ showComponents: {
15
+ wheel: boolean;
16
+ userDetails: boolean;
17
+ couponDetails: boolean;
18
+ showFab: boolean;
19
+ };
20
+ onSpinHandle: () => Promise<boolean>;
21
+ onCloseHandle: (component: 'wheel' | 'userDetails' | 'couponDetails') => void;
22
+ claimPrizeHandle: (userInputs: IUserFields) => Promise<void>;
23
+ error: string;
24
+ isLoading: boolean;
25
+ sameMobileNumberTogglers: { sameSMSNo: boolean; sameWhatsappNumber: boolean };
26
+ setSameMobileNumberTogglers: React.Dispatch<
27
+ React.SetStateAction<{
28
+ sameSMSNo: boolean;
29
+ sameWhatsappNumber: boolean;
30
+ }>
31
+ >;
32
+ couponCodeDetails: { code: string; description: string };
33
+ preview?: boolean;
34
+ isMobile?: boolean;
35
+ widgetName: string;
36
+ countryCode?: string;
37
+ widgetCustomisation: ISTWWidgetCustomisation;
38
+ widgetLanguage: ISO_CODES_VALUES;
39
+ }
40
+ const STW1 = (props: ISTWTemplate) => {
41
+ const {
42
+ showComponents,
43
+ onSpinHandle,
44
+ onCloseHandle,
45
+ claimPrizeHandle,
46
+ error,
47
+ isLoading,
48
+ setSameMobileNumberTogglers,
49
+ sameMobileNumberTogglers,
50
+ couponCodeDetails,
51
+ preview,
52
+ isMobile,
53
+ templateName,
54
+ } = props;
55
+
56
+ const [STWComponent, setSTWComponent] = useState<any>();
57
+ useEffect(() => {
58
+ if (showComponents && Object.keys(showComponents).length) {
59
+ if (showComponents.wheel) {
60
+ import('./wheel').then(Component => {
61
+ const ComponentTemp = Component;
62
+ setSTWComponent(ComponentTemp);
63
+ });
64
+ } else if (showComponents.userDetails) {
65
+ import('./userDetails').then(Component => {
66
+ const ComponentTemp = Component;
67
+ setSTWComponent(ComponentTemp);
68
+ });
69
+ } else if (showComponents.couponDetails) {
70
+ import('./couponDetails').then(Component => {
71
+ const ComponentTemp = Component;
72
+ setSTWComponent(ComponentTemp);
73
+ });
74
+ }
75
+ }
76
+ }, [showComponents]);
77
+
78
+ return (
79
+ <>
80
+ <STWContext.Provider value={{ preview, isMobile, templateName }}>
81
+ {showComponents.wheel && STWComponent ? (
82
+ <STWComponent.default
83
+ {...props}
84
+ onSpinHandle={onSpinHandle}
85
+ onCloseHandle={onCloseHandle}
86
+ templateName={templateName}
87
+ />
88
+ ) : (
89
+ <></>
90
+ )}
91
+
92
+ {showComponents.userDetails && STWComponent ? (
93
+ <STWComponent.default
94
+ {...props}
95
+ claimPrizeHandle={claimPrizeHandle}
96
+ error={error}
97
+ isLoading={isLoading}
98
+ onCloseHandle={onCloseHandle}
99
+ setSameMobileNumberTogglers={setSameMobileNumberTogglers}
100
+ sameMobileNumberTogglers={sameMobileNumberTogglers}
101
+ />
102
+ ) : (
103
+ <></>
104
+ )}
105
+
106
+ {showComponents.couponDetails && STWComponent ? (
107
+ <STWComponent.default
108
+ {...props}
109
+ couponCodeDetails={couponCodeDetails}
110
+ onCloseHandle={onCloseHandle}
111
+ />
112
+ ) : (
113
+ <></>
114
+ )}
115
+ </STWContext.Provider>
116
+ </>
117
+ );
118
+ };
119
+ export default STW1;