@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,225 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import ReactModal from 'react-modal';
3
+ import STCStyles from './style.module.css';
4
+ import PreviewStyle from './preview.module.css';
5
+ import PreviewMobileStyle from './previewMobile.module.css';
6
+ import Cross from 'components/Icons/Cross';
7
+ import { createRef } from 'preact';
8
+ import SVGFactory, { SVGName } from '../STW/components/svgFactory';
9
+ import {
10
+ IRedirectWidgetCustomisation,
11
+ ISTCWidgetCustomisation,
12
+ LANGUAGE_VALUES,
13
+ WidgetSchema,
14
+ LANGUAGE_ISO_CODES,
15
+ } from '@bikdotai/bik-models/dm';
16
+ import ScratchOff from './ScratchOff/scratchOff';
17
+ import useIsMobile from '../../hooks/useIsMobile';
18
+ import { LanguageUtils } from 'utilities/languageUtilities';
19
+
20
+ export interface IScratchCardModal extends WidgetSchema {
21
+ id?: string;
22
+ backgroundImage?: string;
23
+ preview?: boolean;
24
+ isMobile?: boolean;
25
+ environment: string;
26
+ showModal: boolean;
27
+ onScratchComplete: () => void;
28
+ onClose: () => void;
29
+ discountTitle: string;
30
+ }
31
+
32
+ const ScratchCardModal = (props: IScratchCardModal) => {
33
+ const [show, setShow] = useState(false);
34
+ const isMobileDevice = useIsMobile();
35
+ const languageUtilities = new LanguageUtils();
36
+ const [widgetLanguage, setWidgetLanguage] = useState(LANGUAGE_VALUES.ENGLISH);
37
+ const {
38
+ cardTitle,
39
+ imageType,
40
+ cardDescription,
41
+ scratchLayerColor,
42
+ multiLingualConfigurations,
43
+ } = props.widgetCustomisation as ISTCWidgetCustomisation;
44
+ let customStyles = {
45
+ content: {
46
+ top: '50%',
47
+ left: '50%',
48
+ right: 'auto',
49
+ bottom: 'auto',
50
+ marginRight: '-50%',
51
+ transform: 'translate(-50%, -50%)',
52
+ },
53
+ overlay: {
54
+ position: 'fixed',
55
+ inset: 0,
56
+ backgroundColor: props.preview ? 'rgba(0,0,0,0)' : 'rgba(0,0,0,0.8)',
57
+ zIndex: 100000,
58
+ },
59
+ };
60
+ let currentStyle;
61
+ let parent;
62
+ if (props.preview) {
63
+ parent = document.getElementById('preview-container');
64
+ } else {
65
+ parent = document.body;
66
+ }
67
+
68
+ if (props?.preview) {
69
+ customStyles = {
70
+ content: {
71
+ ...customStyles.content,
72
+ height: 110,
73
+ width: 180,
74
+ },
75
+ };
76
+ if (props?.isMobile) {
77
+ currentStyle = PreviewMobileStyle;
78
+ } else {
79
+ currentStyle = PreviewStyle;
80
+ }
81
+ } else {
82
+ currentStyle = STCStyles;
83
+ }
84
+ const redirectWidgetBackgroundColor =
85
+ (props?.widgetCustomisation as IRedirectWidgetCustomisation)
86
+ ?.redirectWidgetBackgroundColor ?? '#e0e0e0';
87
+
88
+ const ref = createRef();
89
+
90
+ const backgroundImage =
91
+ props.widgetCustomisation?.backgroundImage ??
92
+ 'https://firebasestorage.googleapis.com/v0/b/bikayi-chat.appspot.com/o/images-uid%2F68c5ef0d-c34d-4a69-9bd5-0afeb459c602?alt=media&token=fa566461-08e9-4212-b561-55446ec46c5a';
93
+ useEffect(() => {
94
+ setShow(props.showModal);
95
+ }, [props.showModal]);
96
+
97
+ useEffect(() => {
98
+ const isBikURL =
99
+ window.location.href?.includes('https://dashboard.bik.ai/') ||
100
+ window.location.href?.includes('https://staging.dashboard.bik.ai/');
101
+ const previewLanguage = props?.widgetCustomisation?.previewLanguage;
102
+ const storeLanguage =
103
+ (isBikURL ? previewLanguage : window?.Shopify?.locale) ??
104
+ previewLanguage ??
105
+ LANGUAGE_ISO_CODES.EN;
106
+ setWidgetLanguage(languageUtilities.getStoreLanguage(storeLanguage));
107
+ }, [window.location.href, props?.widgetCustomisation?.previewLanguage]);
108
+
109
+ const [scratchCardComponent, setScratchCardComponent] = useState(null);
110
+
111
+ useEffect(() => {
112
+ if (ref.current !== null && !props.preview) {
113
+ const canvas = ref.current;
114
+ const ctx = canvas.getContext('2d');
115
+ ctx.fillStyle = scratchLayerColor;
116
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
117
+ const dataUrl = canvas.toDataURL('image/png');
118
+ const image = new Image();
119
+ image.src = dataUrl;
120
+ image.onload = () => {
121
+ const scratchCard = (
122
+ <ScratchOff
123
+ width={isMobileDevice ? 200 : 400}
124
+ height={isMobileDevice ? 40 : 80}
125
+ children={
126
+ <div
127
+ style={{
128
+ display: 'flex',
129
+ width: '100%',
130
+ height: '100%',
131
+ alignItems: 'center',
132
+ justifyContent: 'center',
133
+ }}
134
+ >
135
+ <h1 class={currentStyle.bikCouponCode}>
136
+ {props.discountTitle}
137
+ </h1>
138
+ </div>
139
+ }
140
+ onScratched={props.onScratchComplete}
141
+ />
142
+ );
143
+ setScratchCardComponent(scratchCard);
144
+ };
145
+ }
146
+ }, [ref]);
147
+
148
+ return (
149
+ <>
150
+ <ReactModal
151
+ ariaHideApp={false}
152
+ parentSelector={() => parent}
153
+ isOpen={show}
154
+ style={customStyles}
155
+ className={currentStyle.content}
156
+ >
157
+ <div>
158
+ <button
159
+ className={currentStyle.crossBtn}
160
+ style={{ backgroundColor: redirectWidgetBackgroundColor }}
161
+ onClick={() => {
162
+ props.onClose();
163
+ }}
164
+ >
165
+ <Cross
166
+ color={'#5C5C5C'}
167
+ height={props.preview ? 10 : 24}
168
+ width={props.preview ? 10 : 24}
169
+ />
170
+ </button>
171
+ <div className={currentStyle.imageContainer}>
172
+ <img
173
+ src={backgroundImage}
174
+ style={{
175
+ width: '100%',
176
+ height: '100%',
177
+ borderRadius: 8,
178
+ objectFit: 'cover',
179
+ }}
180
+ />
181
+ {imageType === 'TEXT_BASED' && (
182
+ <div className={currentStyle.cardTitleDescriptionContainer}>
183
+ <div className={currentStyle.scratchCardTitle}>
184
+ {multiLingualConfigurations?.[widgetLanguage]?.cardTitle ??
185
+ cardTitle}
186
+ </div>
187
+ <div className={currentStyle.scratchCardDescription}>
188
+ {multiLingualConfigurations?.[widgetLanguage]
189
+ ?.cardDescription ?? cardDescription}
190
+ </div>
191
+ </div>
192
+ )}
193
+ <div className={currentStyle.scratchCardContainer}>
194
+ {!scratchCardComponent ? (
195
+ <canvas
196
+ className={currentStyle.scratchAreaImage}
197
+ style={{ backgroundColor: scratchLayerColor }}
198
+ ref={ref}
199
+ ></canvas>
200
+ ) : (
201
+ scratchCardComponent
202
+ )}
203
+ </div>
204
+ </div>
205
+
206
+ <p
207
+ className={currentStyle.poweredBy}
208
+ onClick={() =>
209
+ window.open(
210
+ `https://bik.ai/?utm_campaign=Scratch_The_Card&utm_medium=Widgets&utm_source=Powered_by_bik`,
211
+ )
212
+ }
213
+ >
214
+ <a target="_blank" rel="noreferrer">
215
+ {languageUtilities.getPoweredByMessage(widgetLanguage)}
216
+ </a>
217
+ <SVGFactory name={SVGName.BIK} color={'#ffffff'} />
218
+ </p>
219
+ </div>
220
+ </ReactModal>
221
+ </>
222
+ );
223
+ };
224
+
225
+ export default ScratchCardModal;
@@ -0,0 +1,250 @@
1
+ .content {
2
+ width: 180px;
3
+ height: 110px;
4
+ border-radius: 5px;
5
+ border-width: 10px;
6
+ position: relative;
7
+ }
8
+
9
+ .scratchCardContainer {
10
+ position: absolute;
11
+ bottom: 0px;
12
+ left: 30px;
13
+ width: 100%;
14
+ pointer-events: none;
15
+ }
16
+
17
+ .scratchAreaImage {
18
+ width: 121px;
19
+ height: 28px;
20
+ background-color: #fff;
21
+ box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.12);
22
+ border-radius: 4px;
23
+ }
24
+
25
+ .cardTitleDescriptionContainer {
26
+ position: absolute;
27
+ bottom: 72px;
28
+ left: 50%;
29
+ transform: translateX(-50%);
30
+ width: 100%;
31
+ }
32
+
33
+ .scratchCardDescription {
34
+ font-family: 'Poppins';
35
+ font-style: normal;
36
+ font-weight: 600;
37
+ font-size: 10px;
38
+ margin: 0;
39
+ font-feature-settings:
40
+ 'tnum' on,
41
+ 'lnum' on,
42
+ 'case' on,
43
+ 'ss04' on;
44
+ background: linear-gradient(182.52deg, #ffffff 2.11%, #fed56e 145.8%);
45
+ -webkit-background-clip: text;
46
+ -webkit-text-fill-color: transparent;
47
+ background-clip: text;
48
+ text-fill-color: transparent;
49
+ text-shadow: 0px 4px 12px rgba(0, 0, 0, 0.12);
50
+ text-align: center;
51
+ }
52
+
53
+ .scratchCardTitle {
54
+ font-family: 'Poppins';
55
+ font-style: normal;
56
+ font-weight: 600;
57
+ margin: 4px 0;
58
+ font-size: 14px;
59
+ font-feature-settings:
60
+ 'tnum' on,
61
+ 'lnum' on,
62
+ 'case' on,
63
+ 'ss04' on;
64
+ background: linear-gradient(182.52deg, #ffffff 2.11%, #fed56e 145.8%);
65
+ -webkit-background-clip: text;
66
+ -webkit-text-fill-color: transparent;
67
+ background-clip: text;
68
+ text-fill-color: transparent;
69
+ text-shadow: 0px 4px 12px rgba(0, 0, 0, 0.12);
70
+ text-align: center;
71
+ }
72
+
73
+ .bikCouponCode {
74
+ position: absolute;
75
+ top: 0;
76
+ width: 100%;
77
+ height: 100%;
78
+ background: #fff;
79
+ font-family: 'Inter';
80
+ font-style: normal;
81
+ font-weight: 600;
82
+ font-size: 12px;
83
+ line-height: 40px;
84
+ font-feature-settings:
85
+ 'tnum' on,
86
+ 'lnum' on,
87
+ 'case' on,
88
+ 'ss04' on;
89
+ color: #616161;
90
+ display: flex;
91
+ justify-content: center;
92
+ align-items: center;
93
+ }
94
+
95
+ .couponText {
96
+ font-size: 8px;
97
+ }
98
+
99
+ .imageContainer {
100
+ width: 180px;
101
+ height: 110px;
102
+ position: relative;
103
+ }
104
+
105
+ .card {
106
+ height: 110px;
107
+ position: relative;
108
+ border-radius: 5px 5px 0 0;
109
+ }
110
+
111
+ .cardContainer {
112
+ position: relative;
113
+ padding: 3px;
114
+ border-top-left-radius: 5px;
115
+ border-top-right-radius: 5px;
116
+ }
117
+
118
+ .cardOverlay {
119
+ justify-content: center;
120
+ align-items: center;
121
+ width: 95%;
122
+ margin-left: 2px;
123
+ height: 30px;
124
+ display: flex;
125
+ background-color: white;
126
+ border-radius: 5px 5px 0 0;
127
+ position: absolute;
128
+ bottom: 0px;
129
+ }
130
+
131
+ .overlay {
132
+ position: absolute;
133
+ top: 50%;
134
+ left: 50%;
135
+ transform: translate(-50%, -50%);
136
+ border-radius: 5px;
137
+ background-color: rgba(0, 0, 0, 0.5);
138
+ display: flex;
139
+ align-items: center;
140
+ justify-content: center;
141
+ z-index: 10;
142
+ }
143
+
144
+ .parentContent {
145
+ border-radius: 4px;
146
+ background-color: white;
147
+ }
148
+
149
+ .crossBtn {
150
+ display: flex;
151
+ width: 16px;
152
+ height: 16px;
153
+ display: flex;
154
+ pointer-events: none;
155
+ border-radius: 16px;
156
+ padding: 4px;
157
+ position: absolute;
158
+ justify-content: center;
159
+ align-items: center;
160
+ top: -50px;
161
+ left: 80px;
162
+ border: none;
163
+ }
164
+
165
+ .bannerImageContainer {
166
+ overflow: hidden;
167
+ border-top-left-radius: 4px;
168
+ border-top-right-radius: 4px;
169
+ }
170
+
171
+ .bannerImage {
172
+ border-top-left-radius: 4px;
173
+ border-top-right-radius: 4px;
174
+ border-left: 4px;
175
+ border-right: 4px;
176
+ border-top: 4px;
177
+ overflow: hidden;
178
+ width: 184px;
179
+ }
180
+
181
+ .titleContainer {
182
+ position: absolute;
183
+ top: 346px;
184
+ display: flex;
185
+ justify-content: center;
186
+ align-items: center;
187
+ border-top-left-radius: 4px;
188
+ border-top-right-radius: 4px;
189
+ padding: 8px;
190
+ width: 272px;
191
+ background-color: white;
192
+ }
193
+
194
+ .title {
195
+ font-family: 'Inter';
196
+ font-style: normal;
197
+ margin-bottom: 0px;
198
+ font-weight: 600;
199
+ font-size: 10px;
200
+ line-height: 5px;
201
+ text-align: center;
202
+ font-feature-settings:
203
+ 'tnum' on,
204
+ 'lnum' on,
205
+ 'case' on,
206
+ 'ss04' on;
207
+ color: #212121;
208
+ flex: none;
209
+ order: 0;
210
+ flex-grow: 0;
211
+ }
212
+
213
+ .poweredBy {
214
+ font-family: 'Inter';
215
+ font-style: normal;
216
+ font-weight: 400;
217
+ font-size: 8px;
218
+ line-height: 12px;
219
+ font-feature-settings:
220
+ 'tnum' on,
221
+ 'lnum' on,
222
+ 'case' on,
223
+ 'ss04' on;
224
+ color: #1877f2;
225
+ text-align: center;
226
+ margin: 0;
227
+ margin-top: 12px;
228
+ pointer-events: none;
229
+ display: flex;
230
+ align-items: center;
231
+ justify-content: center;
232
+ }
233
+
234
+ .poweredBy svg {
235
+ width: 20px;
236
+ height: 20px;
237
+ }
238
+
239
+ .poweredBy a {
240
+ color: #ffffff !important;
241
+ text-decoration: none !important;
242
+ margin-right: 4px;
243
+ }
244
+
245
+ .cardParent {
246
+ background-color: white;
247
+ border-bottom-left-radius: 5px;
248
+ border-bottom-right-radius: 5px;
249
+ padding: 8px;
250
+ }
@@ -0,0 +1,247 @@
1
+ .content {
2
+ width: 180px;
3
+ height: 110px;
4
+ border-radius: 5px;
5
+ border-width: 10px;
6
+ position: relative;
7
+ }
8
+
9
+ .scratchCardContainer {
10
+ position: absolute;
11
+ bottom: 0px;
12
+ left: 30px;
13
+ width: 100%;
14
+ }
15
+
16
+ .scratchAreaImage {
17
+ width: 121px;
18
+ height: 28px;
19
+ background-color: #fff;
20
+ box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.12);
21
+ border-radius: 4px;
22
+ }
23
+
24
+ .cardTitleDescriptionContainer {
25
+ position: absolute;
26
+ bottom: 72px;
27
+ right: 40px;
28
+ }
29
+
30
+ .scratchCardDescription {
31
+ font-family: 'Poppins';
32
+ font-style: normal;
33
+ font-weight: 600;
34
+ font-size: 10px;
35
+ margin: 0px;
36
+ font-feature-settings:
37
+ 'tnum' on,
38
+ 'lnum' on,
39
+ 'case' on,
40
+ 'ss04' on;
41
+ background: linear-gradient(182.52deg, #ffffff 2.11%, #fed56e 145.8%);
42
+ -webkit-background-clip: text;
43
+ -webkit-text-fill-color: transparent;
44
+ background-clip: text;
45
+ text-fill-color: transparent;
46
+ text-shadow: 0px 4px 12px rgba(0, 0, 0, 0.12);
47
+ text-align: center;
48
+ }
49
+
50
+ .scratchCardTitle {
51
+ font-family: 'Poppins';
52
+ font-style: normal;
53
+ font-weight: 600;
54
+ margin: 4px 0;
55
+ font-size: 14px;
56
+ font-feature-settings:
57
+ 'tnum' on,
58
+ 'lnum' on,
59
+ 'case' on,
60
+ 'ss04' on;
61
+ background: linear-gradient(182.52deg, #ffffff 2.11%, #fed56e 145.8%);
62
+ -webkit-background-clip: text;
63
+ -webkit-text-fill-color: transparent;
64
+ background-clip: text;
65
+ text-fill-color: transparent;
66
+ text-shadow: 0px 4px 12px rgba(0, 0, 0, 0.12);
67
+ text-align: center;
68
+ }
69
+
70
+ .bikCouponCode {
71
+ position: absolute;
72
+ top: 0;
73
+ width: 100%;
74
+ height: 100%;
75
+ background: #fff;
76
+ font-family: 'Inter';
77
+ font-style: normal;
78
+ font-weight: 600;
79
+ font-size: 12px;
80
+ line-height: 40px;
81
+ font-feature-settings:
82
+ 'tnum' on,
83
+ 'lnum' on,
84
+ 'case' on,
85
+ 'ss04' on;
86
+ color: #616161;
87
+ display: flex;
88
+ justify-content: center;
89
+ align-items: center;
90
+ }
91
+
92
+ .couponText {
93
+ font-size: 8px;
94
+ }
95
+
96
+ .imageContainer {
97
+ width: 180px;
98
+ height: 110px;
99
+ position: relative;
100
+ }
101
+
102
+ .card {
103
+ height: 110px;
104
+ position: relative;
105
+ border-radius: 5px 5px 0 0;
106
+ }
107
+
108
+ .cardContainer {
109
+ position: relative;
110
+ padding: 3px;
111
+ border-top-left-radius: 5px;
112
+ border-top-right-radius: 5px;
113
+ }
114
+
115
+ .cardOverlay {
116
+ justify-content: center;
117
+ align-items: center;
118
+ width: 95%;
119
+ margin-left: 2px;
120
+ height: 30px;
121
+ display: flex;
122
+ background-color: white;
123
+ border-radius: 5px 5px 0 0;
124
+ position: absolute;
125
+ bottom: 0px;
126
+ }
127
+
128
+ .overlay {
129
+ position: absolute;
130
+ top: 50%;
131
+ left: 50%;
132
+ transform: translate(-50%, -50%);
133
+ border-radius: 5px;
134
+ background-color: rgba(0, 0, 0, 0.5);
135
+ display: flex;
136
+ align-items: center;
137
+ justify-content: center;
138
+ z-index: 10;
139
+ }
140
+
141
+ .parentContent {
142
+ border-radius: 4px;
143
+ background-color: white;
144
+ }
145
+
146
+ .crossBtn {
147
+ display: flex;
148
+ width: 16px;
149
+ height: 16px;
150
+ display: flex;
151
+ pointer-events: none;
152
+ border-radius: 16px;
153
+ padding: 4px;
154
+ position: absolute;
155
+ justify-content: center;
156
+ align-items: center;
157
+ top: -50px;
158
+ left: 80px;
159
+ border: none;
160
+ }
161
+
162
+ .bannerImageContainer {
163
+ overflow: hidden;
164
+ border-top-left-radius: 4px;
165
+ border-top-right-radius: 4px;
166
+ }
167
+
168
+ .bannerImage {
169
+ border-top-left-radius: 4px;
170
+ border-top-right-radius: 4px;
171
+ border-left: 4px;
172
+ border-right: 4px;
173
+ border-top: 4px;
174
+ overflow: hidden;
175
+ width: 184px;
176
+ }
177
+
178
+ .titleContainer {
179
+ position: absolute;
180
+ top: 346px;
181
+ display: flex;
182
+ justify-content: center;
183
+ align-items: center;
184
+ border-top-left-radius: 4px;
185
+ border-top-right-radius: 4px;
186
+ padding: 8px;
187
+ width: 272px;
188
+ background-color: white;
189
+ }
190
+
191
+ .title {
192
+ font-family: 'Inter';
193
+ font-style: normal;
194
+ margin-bottom: 0px;
195
+ font-weight: 600;
196
+ font-size: 10px;
197
+ line-height: 5px;
198
+ text-align: center;
199
+ font-feature-settings:
200
+ 'tnum' on,
201
+ 'lnum' on,
202
+ 'case' on,
203
+ 'ss04' on;
204
+ color: #212121;
205
+ flex: none;
206
+ order: 0;
207
+ flex-grow: 0;
208
+ }
209
+
210
+ .poweredBy {
211
+ font-family: 'Inter';
212
+ font-style: normal;
213
+ font-weight: 400;
214
+ font-size: 8px;
215
+ line-height: 12px;
216
+ font-feature-settings:
217
+ 'tnum' on,
218
+ 'lnum' on,
219
+ 'case' on,
220
+ 'ss04' on;
221
+ color: #1877f2;
222
+ text-align: center;
223
+ margin: 0;
224
+ margin-top: 12px;
225
+ pointer-events: none;
226
+ display: flex;
227
+ align-items: center;
228
+ justify-content: center;
229
+ }
230
+
231
+ .poweredBy svg {
232
+ width: 20px;
233
+ height: 20px;
234
+ }
235
+
236
+ .poweredBy a {
237
+ color: #ffffff !important;
238
+ text-decoration: none !important;
239
+ margin-right: 4px;
240
+ }
241
+
242
+ .cardParent {
243
+ background-color: white;
244
+ border-bottom-left-radius: 5px;
245
+ border-bottom-right-radius: 5px;
246
+ padding: 8px;
247
+ }