@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,22 @@
1
+ import React from 'react';
2
+
3
+ const Send = props => {
4
+ return (
5
+ <svg
6
+ width={props.height ?? '40'}
7
+ height={props.height ?? '40'}
8
+ viewBox="0 0 40 40"
9
+ fill="none"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ >
12
+ <path
13
+ fill-rule="evenodd"
14
+ clip-rule="evenodd"
15
+ d="M37.8791 2.1901C37.8679 2.17833 37.8566 2.16669 37.8451 2.15519C37.5521 1.86215 37.1771 1.70104 36.7939 1.67188C36.6897 1.66388 36.5844 1.66566 36.4795 1.67752C36.3442 1.69272 36.2103 1.72447 36.0813 1.77277L2.78272 13.4273C2.13772 13.653 1.69588 14.2496 1.66802 14.9324C1.64016 15.6152 2.03194 16.2459 2.6564 16.5234L17.0706 22.9297L23.4769 37.3439C23.7545 37.9684 24.3851 38.3602 25.0679 38.3323C25.7507 38.3045 26.3473 37.8626 26.5731 37.2176L38.2277 3.91874C38.2749 3.79236 38.3064 3.6614 38.3219 3.52893C38.379 3.0445 38.221 2.55253 37.8791 2.1901ZM30.3238 7.31949L7.85176 15.1847L17.9642 19.6791L30.3238 7.31949ZM20.3212 22.0361L32.6808 9.67651L24.8156 32.1486L20.3212 22.0361Z"
16
+ fill={props.color ?? '#fff'}
17
+ />
18
+ </svg>
19
+ );
20
+ };
21
+
22
+ export default Send;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+
3
+ const Whatsapp: React.FC<{ height?: number; width?: number }> = ({
4
+ width,
5
+ height,
6
+ }) => {
7
+ return (
8
+ <svg
9
+ width={width}
10
+ height={height}
11
+ viewBox="0 0 24 24"
12
+ fill="none"
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ >
15
+ <rect width="24" height="24" fill="#25D366" rx="4" ry="4" />
16
+ <path
17
+ d="M12.0117 2C6.50572 2 2.02348 6.47837 2.02148 11.9844C2.02048 13.7444 2.48147 15.4626 3.35547 16.9766L2 22L7.23242 20.7637C8.69142 21.5597 10.3339 21.9775 12.0059 21.9785H12.0098C17.5148 21.9785 21.995 17.4991 21.998 11.9941C22 9.32514 20.9622 6.81573 19.0762 4.92773C17.1902 3.04073 14.6837 2.001 12.0117 2ZM12.0098 4C14.1458 4.001 16.1531 4.8338 17.6621 6.3418C19.1711 7.8518 20 9.85819 19.998 11.9922C19.996 16.3962 16.4138 19.9785 12.0078 19.9785C10.6748 19.9775 9.35441 19.6428 8.19141 19.0078L7.51758 18.6406L6.77344 18.8164L4.80469 19.2812L5.28516 17.4961L5.50195 16.6953L5.08789 15.9766C4.38989 14.7686 4.02048 13.3874 4.02148 11.9844C4.02348 7.58238 7.60677 4 12.0098 4ZM8.47656 7.375C8.30956 7.375 8.03955 7.4375 7.81055 7.6875C7.58155 7.9365 6.93555 8.53958 6.93555 9.76758C6.93555 10.9956 7.83008 12.1826 7.95508 12.3496C8.07908 12.5156 9.68175 15.1152 12.2188 16.1152C14.3268 16.9462 14.7549 16.7822 15.2129 16.7402C15.6709 16.6992 16.6904 16.1377 16.8984 15.5547C17.1064 14.9717 17.1069 14.4702 17.0449 14.3672C16.9829 14.2632 16.8164 14.2012 16.5664 14.0762C16.3174 13.9512 15.0903 13.3486 14.8613 13.2656C14.6323 13.1826 14.4648 13.1406 14.2988 13.3906C14.1328 13.6406 13.6558 14.2012 13.5098 14.3672C13.3638 14.5342 13.2188 14.5566 12.9688 14.4316C12.7188 14.3056 11.9149 14.0414 10.9609 13.1914C10.2189 12.5304 9.71827 11.7148 9.57227 11.4648C9.42727 11.2158 9.55859 11.0791 9.68359 10.9551C9.79559 10.8431 9.93164 10.6636 10.0566 10.5176C10.1806 10.3716 10.2236 10.2676 10.3066 10.1016C10.3896 9.93556 10.3472 9.78906 10.2852 9.66406C10.2232 9.53906 9.73763 8.3065 9.51562 7.8125C9.32862 7.3975 9.13113 7.38786 8.95312 7.38086C8.80813 7.37486 8.64256 7.375 8.47656 7.375Z"
18
+ fill="white"
19
+ />
20
+ </svg>
21
+ );
22
+ };
23
+
24
+ export default Whatsapp;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import Style from './style.module.css';
3
+
4
+ interface IShimmer {
5
+ shimmerStyle?: React.CSSProperties;
6
+ }
7
+
8
+ const Shimmer = (props: IShimmer) => {
9
+ return <div className={Style.shimmer} style={{ ...props.shimmerStyle }} />;
10
+ };
11
+
12
+ export default Shimmer;
@@ -0,0 +1,37 @@
1
+ .shimmerWrapper {
2
+ height: 104px;
3
+ width: 100px;
4
+ }
5
+
6
+ .shimmer {
7
+ height: 104px;
8
+ width: 100px;
9
+ background: #f6f7f8;
10
+ background-image: linear-gradient(
11
+ to right,
12
+ #f6f7f8 0%,
13
+ #edeef1 20%,
14
+ #f6f7f8 40%,
15
+ #f6f7f8 100%
16
+ );
17
+ background-repeat: no-repeat;
18
+ background-size: 800px 104px;
19
+ display: inline-block;
20
+ position: relative;
21
+
22
+ -webkit-animation-duration: 1s;
23
+ -webkit-animation-fill-mode: forwards;
24
+ -webkit-animation-iteration-count: infinite;
25
+ -webkit-animation-name: placeholderShimmer;
26
+ -webkit-animation-timing-function: linear;
27
+ }
28
+
29
+ @-webkit-keyframes placeholderShimmer {
30
+ 0% {
31
+ background-position: -468px 0;
32
+ }
33
+
34
+ 100% {
35
+ background-position: 468px 0;
36
+ }
37
+ }
@@ -0,0 +1,135 @@
1
+ import React, { useContext, useCallback, useState, useMemo } from 'react';
2
+ import { STWContext } from '../../widgets/STW/context';
3
+ import CountriesDropDown from '../countryCodePicker/countriesDropdown';
4
+ import SelectedCountry from '../selectedCountry/selectedCountry';
5
+ import useIsMobile from '../../hooks/useIsMobile';
6
+ import { InputProps } from 'components/WhatsappInput/whatsappInputBox';
7
+ import { LanguageUtils } from '../../utilities/languageUtilities';
8
+ import { InputBox } from '../inputComponents/InputBox';
9
+
10
+ const SMSInputBox: React.FC<InputProps> = ({
11
+ selectedCountryData,
12
+ fontColour,
13
+ setUserInputs,
14
+ onChangeHandle,
15
+ value,
16
+ title = 'SMS Number',
17
+ error,
18
+ skipCountryPicker,
19
+ id,
20
+ widgetLanguage,
21
+ }) => {
22
+ const languageUtilities = useMemo(() => new LanguageUtils(), []);
23
+ const [showDropdown, setShowDropdown] = useState<boolean>(false);
24
+ const { preview, isMobile } = useContext(STWContext);
25
+ const isMobileDevice = useIsMobile();
26
+
27
+ const toggleDropDown = (flag: boolean) => {
28
+ setShowDropdown(flag);
29
+ };
30
+
31
+ const onListItemClickHandle = (code: string, dial: string, code3: string) => {
32
+ setUserInputs(prevState => {
33
+ return {
34
+ ...prevState,
35
+ isSms: {
36
+ ...prevState.isSms,
37
+ countryCodeData: { code, dial, code3 },
38
+ },
39
+ customFields: {
40
+ ...prevState.customFields,
41
+ },
42
+ };
43
+ });
44
+ toggleDropDown(false);
45
+ };
46
+
47
+ const handleChange = useCallback(
48
+ (newValue: string) => {
49
+ onChangeHandle(newValue, 'isSms');
50
+ },
51
+ [onChangeHandle],
52
+ );
53
+
54
+ const labelText =
55
+ title ?? languageUtilities.getOptionalPhoneNumberTitle(widgetLanguage);
56
+
57
+ const containerStyle = useMemo(() => {
58
+ const fontSize = preview ? (isMobile ? '12px' : '10px') : '14px';
59
+
60
+ return {
61
+ fontFamily: 'inherit',
62
+ color: fontColour,
63
+ display: 'flex',
64
+ gap: skipCountryPicker ? 0 : 8,
65
+ flexDirection: skipCountryPicker ? ('column' as const) : ('row' as const),
66
+ fontSize,
67
+ marginTop: preview ? 4 : 12,
68
+ };
69
+ }, [preview, isMobile, fontColour, skipCountryPicker]);
70
+
71
+ const inputBoxStyle = useMemo(
72
+ () =>
73
+ ({
74
+ '--bik-inputBox-text-color': fontColour,
75
+ '--bik-inputBox-label-color': fontColour,
76
+ '--bik-inputBox-border-color': error ? '#b92321' : '#e0e0e0',
77
+ '--bik-inputBox-error-border-color': '#b92321',
78
+ }) as React.CSSProperties & Record<string, string>,
79
+ [fontColour, error],
80
+ );
81
+
82
+ const inputHeight = useMemo(() => {
83
+ if (preview) {
84
+ return isMobile ? 22 : 18;
85
+ }
86
+ return isMobileDevice ? 48 : 56;
87
+ }, [preview, isMobile, isMobileDevice]);
88
+
89
+ return (
90
+ <div style={containerStyle}>
91
+ {!skipCountryPicker && (
92
+ <div
93
+ style={{
94
+ fontFamily: 'inherit',
95
+ display: 'flex',
96
+ alignItems: 'flex-start',
97
+ position: 'relative',
98
+ }}
99
+ >
100
+ <SelectedCountry
101
+ fontColour={fontColour}
102
+ toggleDropDown={toggleDropDown}
103
+ showDropdown={showDropdown}
104
+ selectedCountryData={selectedCountryData}
105
+ />
106
+
107
+ {showDropdown && (
108
+ <CountriesDropDown
109
+ onListItemClickHandle={onListItemClickHandle}
110
+ closeDropdown={() => {
111
+ setShowDropdown(false);
112
+ }}
113
+ />
114
+ )}
115
+ </div>
116
+ )}
117
+ <div style={{ flex: 1, ...inputBoxStyle }}>
118
+ <InputBox
119
+ id={id}
120
+ value={value || ''}
121
+ onChange={handleChange}
122
+ inputType="number"
123
+ labelText={labelText}
124
+ errorMessage={error}
125
+ isRequired={false}
126
+ inputHeight={inputHeight}
127
+ fontColour={fontColour}
128
+ isPreview={preview}
129
+ />
130
+ </div>
131
+ </div>
132
+ );
133
+ };
134
+
135
+ export default SMSInputBox;
@@ -0,0 +1,52 @@
1
+ .userDetails__button {
2
+ padding: 3px;
3
+ border: none;
4
+ border-radius: 2px;
5
+ font-weight: 600;
6
+ font-size: 7px;
7
+ line-height: 9px;
8
+ text-align: center;
9
+ display: flex;
10
+ justify-content: center;
11
+ margin-top: 4px;
12
+ }
13
+
14
+ .userDetails__container {
15
+ display: flex;
16
+ flex-direction: column;
17
+ width: 100%;
18
+ margin-top: 2px;
19
+ }
20
+
21
+ .userDetails__container > div {
22
+ font-family: inherit;
23
+ }
24
+
25
+ .consent__container {
26
+ display: flex;
27
+ gap: 2px;
28
+ margin-top: 3px;
29
+ padding: 0 1px;
30
+ align-items: flex-start;
31
+ }
32
+
33
+ .preview__checkbox {
34
+ height: 4px;
35
+ width: 4px;
36
+ border-radius: 1px;
37
+ border: 1px solid #212121;
38
+ }
39
+
40
+ .consent__message {
41
+ font-family: inherit;
42
+ font-weight: 400;
43
+ font-size: 4px;
44
+ line-height: 6px;
45
+ color: #212121;
46
+
47
+ a {
48
+ text-decoration: underline;
49
+ cursor: pointer;
50
+ text-underline-offset: 2px;
51
+ }
52
+ }
@@ -0,0 +1,52 @@
1
+ .userDetails__button {
2
+ padding: 3px;
3
+ border: none;
4
+ border-radius: 2px;
5
+ font-weight: 600;
6
+ font-size: 7px;
7
+ line-height: 9px;
8
+ text-align: center;
9
+ display: flex;
10
+ justify-content: center;
11
+ margin-top: 10px;
12
+ }
13
+
14
+ .userDetails__container {
15
+ display: flex;
16
+ flex-direction: column;
17
+ width: 100%;
18
+ margin-top: 2px;
19
+ }
20
+
21
+ .userDetails__container > div {
22
+ font-family: inherit;
23
+ }
24
+
25
+ .consent__container {
26
+ display: flex;
27
+ gap: 2px;
28
+ margin-top: 3px;
29
+ padding: 0 1px;
30
+ align-items: flex-start;
31
+ }
32
+
33
+ .preview__checkbox {
34
+ height: 4px;
35
+ width: 4px;
36
+ border-radius: 1px;
37
+ border: 1px solid #212121;
38
+ }
39
+
40
+ .consent__message {
41
+ font-family: inherit;
42
+ font-weight: 400;
43
+ font-size: 5px;
44
+ line-height: 7px;
45
+ color: #212121;
46
+
47
+ a {
48
+ text-decoration: underline;
49
+ cursor: pointer;
50
+ text-underline-offset: 2px;
51
+ }
52
+ }
@@ -0,0 +1,81 @@
1
+ .userDetails__button {
2
+ cursor: pointer;
3
+ padding: 10px;
4
+ border: none;
5
+ border-radius: 6px;
6
+ font-weight: 600;
7
+ font-size: 14px;
8
+ line-height: 16px;
9
+ text-align: center;
10
+ display: flex;
11
+ justify-content: center;
12
+ margin-top: 16px;
13
+ }
14
+
15
+ .userDetails__container {
16
+ display: flex;
17
+ flex-direction: column;
18
+ width: 100%;
19
+ }
20
+
21
+ .userDetails__container > div {
22
+ font-family: inherit;
23
+ }
24
+
25
+ .userDetails__error {
26
+ font-style: normal;
27
+ font-weight: 400;
28
+ font-size: 8px;
29
+ line-height: 16px;
30
+ color: #b92321;
31
+ margin-top: 4px;
32
+ display: flex;
33
+ gap: 6px;
34
+ align-items: center;
35
+ padding-left: 4px;
36
+ }
37
+
38
+ .consent__container {
39
+ display: flex;
40
+ gap: 6px;
41
+ margin-top: 8px;
42
+ padding: 0 2px;
43
+ align-items: flex-start;
44
+ }
45
+
46
+ .consent__message {
47
+ font-family: inherit;
48
+ font-weight: 400;
49
+ font-size: 10px;
50
+ line-height: 12px;
51
+ color: #212121;
52
+
53
+ a {
54
+ text-decoration: underline;
55
+ cursor: pointer;
56
+ text-underline-offset: 3px;
57
+ }
58
+ }
59
+
60
+ .userDetails__loader {
61
+ border: 2px solid rgba(255, 255, 255, 0.3);
62
+ border-top: 2px solid #fff;
63
+ border-left: 2px solid #fff;
64
+ border-radius: 50%;
65
+ width: 18px;
66
+ height: 18px;
67
+ display: block !important;
68
+ animation: spin 1.3s linear infinite;
69
+ }
70
+
71
+ @media only screen and (max-width: 768px) {
72
+ .userDetails__button {
73
+ font-size: 12px;
74
+ line-height: 14px;
75
+ }
76
+
77
+ .userDetails__loader {
78
+ width: 16px;
79
+ height: 16px;
80
+ }
81
+ }