@reapit/elements 2.1.2 → 2.3.0-beta.1

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 (858) hide show
  1. package/dist/cjs/components/Alert/Alert.stories.d.ts +12 -0
  2. package/dist/{components/Button → cjs/components/Alert}/__tests__/index.d.ts +1 -1
  3. package/dist/{components → cjs/components}/Alert/index.d.ts +13 -13
  4. package/dist/{components → cjs/components}/BreadcrumbV2/__styles__/styles.d.ts +4 -4
  5. package/dist/{components → cjs/components}/BreadcrumbV2/__tests__/breadcrumb-item.test.d.ts +1 -1
  6. package/dist/{components → cjs/components}/BreadcrumbV2/__tests__/breadcrumb-separator.test.d.ts +1 -1
  7. package/dist/{components → cjs/components}/BreadcrumbV2/__tests__/breadcrumb.test.d.ts +1 -1
  8. package/dist/{components → cjs/components}/BreadcrumbV2/breadcrumb-item.d.ts +24 -24
  9. package/dist/{components → cjs/components}/BreadcrumbV2/breadcrumb-separator.d.ts +8 -8
  10. package/dist/{components → cjs/components}/BreadcrumbV2/breadcrumb.d.ts +29 -29
  11. package/dist/{components → cjs/components}/BreadcrumbV2/breadcrumb.stories.d.ts +13 -13
  12. package/dist/{components → cjs/components}/BreadcrumbV2/index.d.ts +3 -3
  13. package/dist/{components/Alert → cjs/components/Button}/__tests__/index.d.ts +1 -1
  14. package/dist/cjs/components/Button/button-group.stories.d.ts +9 -0
  15. package/dist/{components → cjs/components}/Button/button.stories.d.ts +16 -16
  16. package/dist/{components → cjs/components}/Button/index.d.ts +18 -18
  17. package/dist/{components → cjs/components}/CameraImageInput/__tests__/index.d.ts +1 -1
  18. package/dist/{components → cjs/components}/CameraImageInput/camera-image-input.stories.d.ts +9 -8
  19. package/dist/{components → cjs/components}/CameraImageInput/index.d.ts +3 -2
  20. package/dist/{components → cjs/components}/CardInputGroup/__tests__/card-expires-input.test.d.ts +1 -1
  21. package/dist/{components → cjs/components}/CardInputGroup/__tests__/card-helpers.test.d.ts +1 -1
  22. package/dist/{components → cjs/components}/CardInputGroup/__tests__/card-input-group.test.d.ts +1 -1
  23. package/dist/{components → cjs/components}/CardInputGroup/__tests__/card-input.test.d.ts +1 -1
  24. package/dist/{components → cjs/components}/CardInputGroup/card-country-options.d.ts +2 -2
  25. package/dist/{components → cjs/components}/CardInputGroup/card-expires-input.d.ts +4 -3
  26. package/dist/{components → cjs/components}/CardInputGroup/card-helpers.d.ts +15 -15
  27. package/dist/{components → cjs/components}/CardInputGroup/card-input-group.d.ts +6 -6
  28. package/dist/{components → cjs/components}/CardInputGroup/card-input-group.stories.d.ts +11 -11
  29. package/dist/{components → cjs/components}/CardInputGroup/card-input.d.ts +9 -9
  30. package/dist/{components → cjs/components}/CardInputGroup/index.d.ts +5 -5
  31. package/dist/{components → cjs/components}/Checkbox/__tests__/index.d.ts +1 -1
  32. package/dist/{components → cjs/components}/Checkbox/checkbox.stories.d.ts +11 -10
  33. package/dist/{components → cjs/components}/Checkbox/index.d.ts +17 -16
  34. package/dist/cjs/components/DatePicker/__tests__/index.d.ts +1 -0
  35. package/dist/{components → cjs/components}/DatePicker/date-picker.stories.d.ts +12 -11
  36. package/dist/{components → cjs/components}/DatePicker/index.d.ts +23 -23
  37. package/dist/{components → cjs/components}/DropdownSelect/__stubs__/options.d.ts +2 -2
  38. package/dist/{components → cjs/components}/DropdownSelect/__tests__/custom-tag.d.ts +1 -1
  39. package/dist/cjs/components/DropdownSelect/__tests__/index.d.ts +1 -0
  40. package/dist/{components → cjs/components}/DropdownSelect/custom-tag.d.ts +9 -9
  41. package/dist/{components → cjs/components}/DropdownSelect/dropdown-select.stories.d.ts +11 -11
  42. package/dist/{components → cjs/components}/DropdownSelect/index.d.ts +21 -21
  43. package/dist/{components → cjs/components}/DynamicLinks/__stubs__/scenarios.d.ts +7 -7
  44. package/dist/{components → cjs/components}/DynamicLinks/__tests__/dynamic-link-gen.d.ts +1 -1
  45. package/dist/cjs/components/DynamicLinks/__tests__/index.d.ts +1 -0
  46. package/dist/{components → cjs/components}/DynamicLinks/__tests__/utils.d.ts +1 -1
  47. package/dist/{components → cjs/components}/DynamicLinks/dynamic-link-gen.d.ts +47 -47
  48. package/dist/{components → cjs/components}/DynamicLinks/dynamic-links.stories.d.ts +11 -11
  49. package/dist/{components → cjs/components}/DynamicLinks/index.d.ts +15 -15
  50. package/dist/{components → cjs/components}/DynamicLinks/utils.d.ts +34 -34
  51. package/dist/cjs/components/Editor/__tests__/index.d.ts +1 -0
  52. package/dist/{components → cjs/components}/Editor/editor.stories.d.ts +9 -8
  53. package/dist/{components → cjs/components}/Editor/index.d.ts +16 -15
  54. package/dist/cjs/components/FileInput/__tests__/index.d.ts +1 -0
  55. package/dist/{components → cjs/components}/FileInput/file-input.stories.d.ts +12 -11
  56. package/dist/{components → cjs/components}/FileInput/index.d.ts +28 -28
  57. package/dist/cjs/components/Form/__tests__/index.d.ts +1 -0
  58. package/dist/{components → cjs/components}/Form/form.stories.d.ts +16 -16
  59. package/dist/{components → cjs/components}/Form/index.d.ts +5 -5
  60. package/dist/{components → cjs/components}/HelpGuide/__styles__/styles.d.ts +3 -3
  61. package/dist/{components → cjs/components}/HelpGuide/__tests__/fade.test.d.ts +1 -1
  62. package/dist/{components → cjs/components}/HelpGuide/__tests__/horizontal-timeline.d.ts +1 -1
  63. package/dist/cjs/components/HelpGuide/__tests__/index.d.ts +1 -0
  64. package/dist/{components → cjs/components}/HelpGuide/__tests__/utils.d.ts +1 -1
  65. package/dist/{components → cjs/components}/HelpGuide/__tests__/vertical-timeline.d.ts +1 -1
  66. package/dist/{components → cjs/components}/HelpGuide/context.d.ts +10 -10
  67. package/dist/{components → cjs/components}/HelpGuide/fade.d.ts +10 -10
  68. package/dist/{components → cjs/components}/HelpGuide/help-guide.stories.d.ts +11 -10
  69. package/dist/{components → cjs/components}/HelpGuide/horizontal-timeline.d.ts +18 -18
  70. package/dist/{components → cjs/components}/HelpGuide/index.d.ts +35 -35
  71. package/dist/{components → cjs/components}/HelpGuide/utils.d.ts +1 -1
  72. package/dist/{components → cjs/components}/HelpGuide/vertical-timeline.d.ts +19 -19
  73. package/dist/cjs/components/Helper/__tests__/index.d.ts +1 -0
  74. package/dist/{components → cjs/components}/Helper/helper.stories.d.ts +11 -11
  75. package/dist/{components → cjs/components}/Helper/index.d.ts +9 -9
  76. package/dist/{components → cjs/components}/HtmlRender/__stubs__/html.d.ts +2 -2
  77. package/dist/cjs/components/HtmlRender/__tests__/index.d.ts +1 -0
  78. package/dist/{components → cjs/components}/HtmlRender/html-render.stories.d.ts +9 -9
  79. package/dist/{components → cjs/components}/HtmlRender/index.d.ts +7 -7
  80. package/dist/{components → cjs/components}/HtmlRender/utils.d.ts +20 -19
  81. package/dist/{components → cjs/components}/IconList/__tests__/index.d.ts +5 -4
  82. package/dist/{components → cjs/components}/IconList/icon-list.stories.d.ts +9 -9
  83. package/dist/{components → cjs/components}/IconList/index.d.ts +12 -12
  84. package/dist/{components → cjs/components}/Icons/__tests__/index.test.d.ts +1 -1
  85. package/dist/{components → cjs/components}/Icons/index.d.ts +33 -33
  86. package/dist/{components → cjs/components}/ImageCropperV2/__styles__/styles.d.ts +9 -9
  87. package/dist/{components → cjs/components}/ImageCropperV2/__tests__/handlers.test.d.ts +1 -1
  88. package/dist/{components → cjs/components}/ImageCropperV2/__tests__/image-cropper.test.d.ts +1 -1
  89. package/dist/{components → cjs/components}/ImageCropperV2/__tests__/integration-helpers.test.d.ts +1 -1
  90. package/dist/{components → cjs/components}/ImageCropperV2/__tests__/utils.test.d.ts +1 -1
  91. package/dist/{components → cjs/components}/ImageCropperV2/handlers.d.ts +32 -32
  92. package/dist/{components → cjs/components}/ImageCropperV2/image-cropper.d.ts +10 -10
  93. package/dist/{components → cjs/components}/ImageCropperV2/index.d.ts +3 -3
  94. package/dist/{components → cjs/components}/ImageCropperV2/integration-helpers.d.ts +11 -11
  95. package/dist/{components → cjs/components}/ImageCropperV2/types.d.ts +41 -41
  96. package/dist/{components → cjs/components}/ImageCropperV2/utils.d.ts +13 -13
  97. package/dist/cjs/components/ImageInput/__tests__/index.d.ts +1 -0
  98. package/dist/{components → cjs/components}/ImageInput/image-input.stories.d.ts +9 -8
  99. package/dist/{components → cjs/components}/ImageInput/index.d.ts +9 -8
  100. package/dist/cjs/components/Info/__tests__/index.d.ts +1 -0
  101. package/dist/{components → cjs/components}/Info/index.d.ts +7 -7
  102. package/dist/cjs/components/Info/info.stories.d.ts +10 -0
  103. package/dist/cjs/components/Input/__tests__/index.d.ts +1 -0
  104. package/dist/{components → cjs/components}/Input/index.d.ts +17 -17
  105. package/dist/{components → cjs/components}/Input/input.stories.d.ts +14 -13
  106. package/dist/cjs/components/Layout/__tests__/index.d.ts +1 -0
  107. package/dist/{components → cjs/components}/Layout/index.d.ts +53 -53
  108. package/dist/{components → cjs/components}/Layout/layout.stories.d.ts +19 -19
  109. package/dist/cjs/components/Loader/__tests__/index.d.ts +1 -0
  110. package/dist/{components → cjs/components}/Loader/index.d.ts +6 -6
  111. package/dist/{components → cjs/components}/Loader/loader.stories.d.ts +11 -11
  112. package/dist/cjs/components/Map/__tests__/index.d.ts +1 -0
  113. package/dist/{components → cjs/components}/Map/index.d.ts +150 -150
  114. package/dist/{components → cjs/components}/Map/map.stories.d.ts +8 -8
  115. package/dist/{components → cjs/components}/Menu/Logo.d.ts +4 -4
  116. package/dist/{components → cjs/components}/Menu/Menu.d.ts +26 -26
  117. package/dist/{components → cjs/components}/Menu/Menu.stories.d.ts +10 -10
  118. package/dist/{components → cjs/components}/Menu/__mocks__/menu-props.d.ts +2 -2
  119. package/dist/{components → cjs/components}/Menu/__tests__/Menu.d.ts +1 -1
  120. package/dist/{components → cjs/components}/Menu/index.d.ts +2 -2
  121. package/dist/cjs/components/Modal/__tests__/index.d.ts +1 -0
  122. package/dist/{components → cjs/components}/Modal/index.d.ts +27 -27
  123. package/dist/{components → cjs/components}/Modal/modal.stories.d.ts +10 -10
  124. package/dist/{components → cjs/components}/ModalV2/__styles__/index.d.ts +5 -5
  125. package/dist/cjs/components/ModalV2/__tests__/index.d.ts +1 -0
  126. package/dist/{components → cjs/components}/ModalV2/index.d.ts +15 -15
  127. package/dist/cjs/components/Notification/__tests__/index.d.ts +1 -0
  128. package/dist/{components → cjs/components}/Notification/__tests__/useNotification.d.ts +1 -1
  129. package/dist/{components → cjs/components}/Notification/index.d.ts +43 -43
  130. package/dist/{components → cjs/components}/Notification/notification.stories.d.ts +13 -13
  131. package/dist/{components → cjs/components}/Notification/useNotification.d.ts +7 -7
  132. package/dist/cjs/components/Pagination/__tests__/index.d.ts +1 -0
  133. package/dist/{components → cjs/components}/Pagination/index.d.ts +10 -9
  134. package/dist/{components → cjs/components}/Pagination/pagination.stories.d.ts +10 -9
  135. package/dist/cjs/components/ProgressBar/__tests__/index.d.ts +1 -0
  136. package/dist/{components → cjs/components}/ProgressBar/index.d.ts +7 -7
  137. package/dist/cjs/components/ProgressBar/index.stories.d.ts +11 -0
  138. package/dist/cjs/components/RadioSelect/__tests__/index.d.ts +1 -0
  139. package/dist/{components → cjs/components}/RadioSelect/index.d.ts +23 -23
  140. package/dist/{components → cjs/components}/RadioSelect/index.stories.d.ts +11 -11
  141. package/dist/cjs/components/SelectBox/__tests__/index.d.ts +1 -0
  142. package/dist/{components → cjs/components}/SelectBox/index.d.ts +17 -16
  143. package/dist/{components → cjs/components}/SelectBox/select-box.stories.d.ts +11 -10
  144. package/dist/{components → cjs/components}/Spreadsheet/__stubs__/index.d.ts +50 -49
  145. package/dist/{components → cjs/components}/Spreadsheet/__tests__/context-menu.d.ts +1 -1
  146. package/dist/{components → cjs/components}/Spreadsheet/__tests__/generate-data-with-read-only-and-is-validated.d.ts +1 -1
  147. package/dist/{components → cjs/components}/Spreadsheet/__tests__/handlers.d.ts +1 -1
  148. package/dist/cjs/components/Spreadsheet/__tests__/index.d.ts +1 -0
  149. package/dist/{components → cjs/components}/Spreadsheet/__tests__/modal-upload.d.ts +1 -1
  150. package/dist/{components → cjs/components}/Spreadsheet/__tests__/utils.d.ts +1 -1
  151. package/dist/{components → cjs/components}/Spreadsheet/context-menu.d.ts +11 -11
  152. package/dist/{components → cjs/components}/Spreadsheet/handlers.d.ts +39 -39
  153. package/dist/{components → cjs/components}/Spreadsheet/index.d.ts +21 -21
  154. package/dist/{components → cjs/components}/Spreadsheet/modal-upload.d.ts +3 -3
  155. package/dist/{components → cjs/components}/Spreadsheet/spreadsheet.stories.d.ts +15 -15
  156. package/dist/{components → cjs/components}/Spreadsheet/types.d.ts +115 -115
  157. package/dist/{components → cjs/components}/Spreadsheet/utils.d.ts +65 -65
  158. package/dist/cjs/components/Table/__tests__/index.d.ts +1 -0
  159. package/dist/{components → cjs/components}/Table/index.d.ts +30 -30
  160. package/dist/{components → cjs/components}/Table/table.stories.d.ts +11 -11
  161. package/dist/cjs/components/Tabs/__tests__/index.d.ts +1 -0
  162. package/dist/{components → cjs/components}/Tabs/index.d.ts +13 -13
  163. package/dist/{components → cjs/components}/Tabs/tabs.stories.d.ts +9 -9
  164. package/dist/cjs/components/TextArea/__tests__/index.d.ts +1 -0
  165. package/dist/{components → cjs/components}/TextArea/index.d.ts +13 -12
  166. package/dist/{components → cjs/components}/TextArea/text-area.stories.d.ts +10 -9
  167. package/dist/cjs/components/TextAreaEditor/__tests__/index.d.ts +1 -0
  168. package/dist/{components → cjs/components}/TextAreaEditor/index.d.ts +22 -21
  169. package/dist/{components → cjs/components}/TextAreaEditor/text-area-editor.stories.d.ts +9 -8
  170. package/dist/cjs/components/Tile/__styles__/index.d.ts +16 -0
  171. package/dist/cjs/components/Tile/__tests__/index.d.ts +1 -0
  172. package/dist/{components → cjs/components}/Tile/index.d.ts +14 -14
  173. package/dist/{components → cjs/components}/Tile/tile.stories.d.ts +11 -11
  174. package/dist/cjs/components/Toast/__tests__/index.d.ts +1 -0
  175. package/dist/{components → cjs/components}/Toast/index.d.ts +18 -18
  176. package/dist/{components → cjs/components}/Toast/toast.stories.d.ts +10 -10
  177. package/dist/cjs/components/ToastMessage/__tests__/index.d.ts +1 -0
  178. package/dist/{components → cjs/components}/ToastMessage/index.d.ts +12 -12
  179. package/dist/{components → cjs/components}/ToastMessage/toastMessage.stories.d.ts +12 -12
  180. package/dist/cjs/components/Typography/__tests__/index.d.ts +1 -0
  181. package/dist/{components → cjs/components}/Typography/index.d.ts +19 -19
  182. package/dist/{components → cjs/components}/Typography/typography.stories.d.ts +25 -25
  183. package/dist/cjs/components/UploadProgress/__tests__/index.d.ts +1 -0
  184. package/dist/{components → cjs/components}/UploadProgress/index.d.ts +8 -8
  185. package/dist/{components → cjs/components}/UploadProgress/upload-progress.stories.d.ts +10 -10
  186. package/dist/cjs/components/Wizard/__tests__/index.d.ts +1 -0
  187. package/dist/{components → cjs/components}/Wizard/context.d.ts +32 -32
  188. package/dist/{components → cjs/components}/Wizard/index.d.ts +37 -37
  189. package/dist/{components → cjs/components}/Wizard/wizard.stories.d.ts +15 -14
  190. package/dist/cjs/helpers/fade-in.d.ts +5 -0
  191. package/dist/{helpers → cjs/helpers}/mock-google-maps.d.ts +223 -223
  192. package/dist/{helpers → cjs/helpers}/mock-router.d.ts +2 -2
  193. package/dist/{hooks → cjs/hooks}/UsePortal/__tests__/portal-provider.d.ts +2 -1
  194. package/dist/{hooks → cjs/hooks}/UsePortal/__tests__/use-portal.d.ts +1 -1
  195. package/dist/{hooks → cjs/hooks}/UsePortal/index.d.ts +2 -2
  196. package/dist/{hooks → cjs/hooks}/UsePortal/portal-container.d.ts +8 -8
  197. package/dist/{hooks → cjs/hooks}/UsePortal/portal-context.d.ts +6 -6
  198. package/dist/{hooks → cjs/hooks}/UsePortal/portal-provider.d.ts +5 -5
  199. package/dist/{hooks → cjs/hooks}/UsePortal/use-portal.d.ts +2 -2
  200. package/dist/{hooks → cjs/hooks}/UsePortal/use-portal.stories.d.ts +8 -7
  201. package/dist/{index.d.ts → cjs/index.d.ts} +61 -61
  202. package/dist/cjs/index.js +60 -0
  203. package/dist/cjs/index.js.map +1 -0
  204. package/dist/{types → cjs/types}/core.d.ts +18 -18
  205. package/dist/{utils → cjs/utils}/combine-address/__tests__/combine-address.d.ts +1 -1
  206. package/dist/{utils → cjs/utils}/combine-address/combine-address.d.ts +16 -16
  207. package/dist/{utils → cjs/utils}/combine-address/combine-address.stories.d.ts +8 -7
  208. package/dist/{utils → cjs/utils}/completed-section/__tests__/completed-sections.d.ts +1 -1
  209. package/dist/{utils → cjs/utils}/completed-section/completed-section.stories.d.ts +13 -12
  210. package/dist/{utils → cjs/utils}/completed-section/completed-sections.d.ts +7 -7
  211. package/dist/{utils → cjs/utils}/datetime/__tests__/datetime.d.ts +1 -1
  212. package/dist/{utils → cjs/utils}/datetime/datetime.d.ts +15 -15
  213. package/dist/{utils → cjs/utils}/datetime/datetime.stories.d.ts +8 -7
  214. package/dist/{utils → cjs/utils}/device-detection/__tests__/device-detection.d.ts +1 -1
  215. package/dist/{utils → cjs/utils}/device-detection/device-detection.d.ts +5 -5
  216. package/dist/{utils → cjs/utils}/device-detection/device-detection.stories.d.ts +12 -11
  217. package/dist/{utils → cjs/utils}/fetcher/__tests__/fetcher.d.ts +1 -1
  218. package/dist/{utils → cjs/utils}/fetcher/fetcher.d.ts +19 -19
  219. package/dist/{utils → cjs/utils}/fetcher/fetcher.stories.d.ts +8 -7
  220. package/dist/cjs/utils/form/__tests__/index.d.ts +1 -0
  221. package/dist/{utils → cjs/utils}/form/index.d.ts +2 -2
  222. package/dist/cjs/utils/is-base64/__tests__/index.d.ts +1 -0
  223. package/dist/{utils → cjs/utils}/is-base64/index.d.ts +1 -1
  224. package/dist/{utils → cjs/utils}/is-base64/is-base64.stories.d.ts +8 -7
  225. package/dist/{utils → cjs/utils}/local-storage/local-storage-check.d.ts +5 -5
  226. package/dist/{utils → cjs/utils}/query-params/__tests__/query-params.d.ts +1 -1
  227. package/dist/{utils → cjs/utils}/query-params/query-params.d.ts +1 -1
  228. package/dist/{utils → cjs/utils}/query-params/query-params.stories.d.ts +8 -7
  229. package/dist/{utils → cjs/utils}/validators/__tests__/error-messages.d.ts +1 -1
  230. package/dist/cjs/utils/validators/__tests__/index.d.ts +1 -0
  231. package/dist/{utils → cjs/utils}/validators/__tests__/validate-base.d.ts +1 -1
  232. package/dist/{utils → cjs/utils}/validators/__tests__/validate-character-length.d.ts +1 -1
  233. package/dist/{utils → cjs/utils}/validators/__tests__/validate-email.d.ts +1 -1
  234. package/dist/{utils → cjs/utils}/validators/__tests__/validate-number.d.ts +1 -1
  235. package/dist/{utils → cjs/utils}/validators/__tests__/validate-object.d.ts +1 -1
  236. package/dist/{utils → cjs/utils}/validators/__tests__/validate-password.d.ts +1 -1
  237. package/dist/{utils → cjs/utils}/validators/__tests__/validate-require.d.ts +1 -1
  238. package/dist/cjs/utils/validators/__tests__/validate-special-chars.test.d.ts +1 -0
  239. package/dist/{utils → cjs/utils}/validators/__tests__/validate-text-and-number-only.d.ts +1 -1
  240. package/dist/{utils → cjs/utils}/validators/__tests__/validate-uri.d.ts +1 -1
  241. package/dist/{utils → cjs/utils}/validators/error-messages.d.ts +14 -13
  242. package/dist/{utils → cjs/utils}/validators/index.d.ts +13 -13
  243. package/dist/{utils → cjs/utils}/validators/regex.d.ts +2 -2
  244. package/dist/{utils → cjs/utils}/validators/validate-base.d.ts +15 -15
  245. package/dist/{utils → cjs/utils}/validators/validate-character-length.d.ts +10 -10
  246. package/dist/{utils → cjs/utils}/validators/validate-email.d.ts +4 -4
  247. package/dist/{utils → cjs/utils}/validators/validate-number.d.ts +1 -1
  248. package/dist/{utils → cjs/utils}/validators/validate-object.d.ts +1 -1
  249. package/dist/{utils → cjs/utils}/validators/validate-password.d.ts +4 -4
  250. package/dist/{utils → cjs/utils}/validators/validate-require.d.ts +6 -6
  251. package/dist/cjs/utils/validators/validate-special-chars.d.ts +1 -0
  252. package/dist/{utils → cjs/utils}/validators/validate-text-and-number.d.ts +1 -1
  253. package/dist/{utils → cjs/utils}/validators/validate-uri.d.ts +4 -4
  254. package/dist/{utils → cjs/utils}/validators/validators.stories.d.ts +8 -7
  255. package/dist/esm/components/Alert/Alert.stories.d.ts +12 -0
  256. package/dist/esm/components/Alert/__tests__/index.d.ts +1 -0
  257. package/dist/esm/components/Alert/index.d.ts +13 -0
  258. package/dist/esm/components/BreadcrumbV2/__styles__/styles.d.ts +4 -0
  259. package/dist/esm/components/BreadcrumbV2/__tests__/breadcrumb-item.test.d.ts +1 -0
  260. package/dist/esm/components/BreadcrumbV2/__tests__/breadcrumb-separator.test.d.ts +1 -0
  261. package/dist/esm/components/BreadcrumbV2/__tests__/breadcrumb.test.d.ts +1 -0
  262. package/dist/esm/components/BreadcrumbV2/breadcrumb-item.d.ts +24 -0
  263. package/dist/esm/components/BreadcrumbV2/breadcrumb-separator.d.ts +8 -0
  264. package/dist/esm/components/BreadcrumbV2/breadcrumb.d.ts +29 -0
  265. package/dist/esm/components/BreadcrumbV2/breadcrumb.stories.d.ts +13 -0
  266. package/dist/esm/components/BreadcrumbV2/index.d.ts +3 -0
  267. package/dist/esm/components/Button/__tests__/index.d.ts +1 -0
  268. package/dist/esm/components/Button/button-group.stories.d.ts +9 -0
  269. package/dist/esm/components/Button/button.stories.d.ts +16 -0
  270. package/dist/esm/components/Button/index.d.ts +18 -0
  271. package/dist/esm/components/CameraImageInput/__tests__/index.d.ts +1 -0
  272. package/dist/esm/components/CameraImageInput/camera-image-input.stories.d.ts +9 -0
  273. package/dist/esm/components/CameraImageInput/index.d.ts +3 -0
  274. package/dist/esm/components/CardInputGroup/__tests__/card-expires-input.test.d.ts +1 -0
  275. package/dist/esm/components/CardInputGroup/__tests__/card-helpers.test.d.ts +1 -0
  276. package/dist/esm/components/CardInputGroup/__tests__/card-input-group.test.d.ts +1 -0
  277. package/dist/esm/components/CardInputGroup/__tests__/card-input.test.d.ts +1 -0
  278. package/dist/esm/components/CardInputGroup/card-country-options.d.ts +2 -0
  279. package/dist/esm/components/CardInputGroup/card-expires-input.d.ts +4 -0
  280. package/dist/esm/components/CardInputGroup/card-helpers.d.ts +15 -0
  281. package/dist/esm/components/CardInputGroup/card-input-group.d.ts +6 -0
  282. package/dist/esm/components/CardInputGroup/card-input-group.stories.d.ts +11 -0
  283. package/dist/esm/components/CardInputGroup/card-input.d.ts +9 -0
  284. package/dist/esm/components/CardInputGroup/index.d.ts +5 -0
  285. package/dist/esm/components/Checkbox/__tests__/index.d.ts +1 -0
  286. package/dist/esm/components/Checkbox/checkbox.stories.d.ts +11 -0
  287. package/dist/esm/components/Checkbox/index.d.ts +17 -0
  288. package/dist/esm/components/DatePicker/__tests__/index.d.ts +1 -0
  289. package/dist/esm/components/DatePicker/date-picker.stories.d.ts +12 -0
  290. package/dist/esm/components/DatePicker/index.d.ts +23 -0
  291. package/dist/esm/components/DropdownSelect/__stubs__/options.d.ts +2 -0
  292. package/dist/esm/components/DropdownSelect/__tests__/custom-tag.d.ts +1 -0
  293. package/dist/esm/components/DropdownSelect/__tests__/index.d.ts +1 -0
  294. package/dist/esm/components/DropdownSelect/custom-tag.d.ts +9 -0
  295. package/dist/esm/components/DropdownSelect/dropdown-select.stories.d.ts +11 -0
  296. package/dist/esm/components/DropdownSelect/index.d.ts +21 -0
  297. package/dist/esm/components/DynamicLinks/__stubs__/scenarios.d.ts +7 -0
  298. package/dist/esm/components/DynamicLinks/__tests__/dynamic-link-gen.d.ts +1 -0
  299. package/dist/esm/components/DynamicLinks/__tests__/index.d.ts +1 -0
  300. package/dist/esm/components/DynamicLinks/__tests__/utils.d.ts +1 -0
  301. package/dist/esm/components/DynamicLinks/dynamic-link-gen.d.ts +47 -0
  302. package/dist/esm/components/DynamicLinks/dynamic-links.stories.d.ts +11 -0
  303. package/dist/esm/components/DynamicLinks/index.d.ts +15 -0
  304. package/dist/esm/components/DynamicLinks/utils.d.ts +34 -0
  305. package/dist/esm/components/Editor/__tests__/index.d.ts +1 -0
  306. package/dist/esm/components/Editor/editor.stories.d.ts +9 -0
  307. package/dist/esm/components/Editor/index.d.ts +16 -0
  308. package/dist/esm/components/FileInput/__tests__/index.d.ts +1 -0
  309. package/dist/esm/components/FileInput/file-input.stories.d.ts +12 -0
  310. package/dist/esm/components/FileInput/index.d.ts +28 -0
  311. package/dist/esm/components/Form/__tests__/index.d.ts +1 -0
  312. package/dist/esm/components/Form/form.stories.d.ts +16 -0
  313. package/dist/esm/components/Form/index.d.ts +5 -0
  314. package/dist/esm/components/HelpGuide/__styles__/styles.d.ts +3 -0
  315. package/dist/esm/components/HelpGuide/__tests__/fade.test.d.ts +1 -0
  316. package/dist/esm/components/HelpGuide/__tests__/horizontal-timeline.d.ts +1 -0
  317. package/dist/esm/components/HelpGuide/__tests__/index.d.ts +1 -0
  318. package/dist/esm/components/HelpGuide/__tests__/utils.d.ts +1 -0
  319. package/dist/esm/components/HelpGuide/__tests__/vertical-timeline.d.ts +1 -0
  320. package/dist/esm/components/HelpGuide/context.d.ts +10 -0
  321. package/dist/esm/components/HelpGuide/fade.d.ts +10 -0
  322. package/dist/esm/components/HelpGuide/help-guide.stories.d.ts +11 -0
  323. package/dist/esm/components/HelpGuide/horizontal-timeline.d.ts +18 -0
  324. package/dist/esm/components/HelpGuide/index.d.ts +35 -0
  325. package/dist/esm/components/HelpGuide/utils.d.ts +1 -0
  326. package/dist/esm/components/HelpGuide/vertical-timeline.d.ts +19 -0
  327. package/dist/esm/components/Helper/__tests__/index.d.ts +1 -0
  328. package/dist/esm/components/Helper/helper.stories.d.ts +11 -0
  329. package/dist/esm/components/Helper/index.d.ts +9 -0
  330. package/dist/esm/components/HtmlRender/__stubs__/html.d.ts +2 -0
  331. package/dist/esm/components/HtmlRender/__tests__/index.d.ts +1 -0
  332. package/dist/esm/components/HtmlRender/html-render.stories.d.ts +9 -0
  333. package/dist/esm/components/HtmlRender/index.d.ts +7 -0
  334. package/dist/esm/components/HtmlRender/utils.d.ts +20 -0
  335. package/dist/esm/components/IconList/__tests__/index.d.ts +5 -0
  336. package/dist/esm/components/IconList/icon-list.stories.d.ts +9 -0
  337. package/dist/esm/components/IconList/index.d.ts +12 -0
  338. package/dist/esm/components/Icons/__tests__/index.test.d.ts +1 -0
  339. package/dist/esm/components/Icons/index.d.ts +33 -0
  340. package/dist/esm/components/ImageCropperV2/__styles__/styles.d.ts +9 -0
  341. package/dist/esm/components/ImageCropperV2/__tests__/handlers.test.d.ts +1 -0
  342. package/dist/esm/components/ImageCropperV2/__tests__/image-cropper.test.d.ts +1 -0
  343. package/dist/esm/components/ImageCropperV2/__tests__/integration-helpers.test.d.ts +1 -0
  344. package/dist/esm/components/ImageCropperV2/__tests__/utils.test.d.ts +1 -0
  345. package/dist/esm/components/ImageCropperV2/handlers.d.ts +32 -0
  346. package/dist/esm/components/ImageCropperV2/image-cropper.d.ts +10 -0
  347. package/dist/esm/components/ImageCropperV2/index.d.ts +3 -0
  348. package/dist/esm/components/ImageCropperV2/integration-helpers.d.ts +11 -0
  349. package/dist/esm/components/ImageCropperV2/types.d.ts +41 -0
  350. package/dist/esm/components/ImageCropperV2/utils.d.ts +13 -0
  351. package/dist/esm/components/ImageInput/__tests__/index.d.ts +1 -0
  352. package/dist/esm/components/ImageInput/image-input.stories.d.ts +9 -0
  353. package/dist/esm/components/ImageInput/index.d.ts +9 -0
  354. package/dist/esm/components/Info/__tests__/index.d.ts +1 -0
  355. package/dist/esm/components/Info/index.d.ts +7 -0
  356. package/dist/esm/components/Info/info.stories.d.ts +10 -0
  357. package/dist/esm/components/Input/__tests__/index.d.ts +1 -0
  358. package/dist/esm/components/Input/index.d.ts +17 -0
  359. package/dist/esm/components/Input/input.stories.d.ts +14 -0
  360. package/dist/esm/components/Layout/__tests__/index.d.ts +1 -0
  361. package/dist/esm/components/Layout/index.d.ts +53 -0
  362. package/dist/esm/components/Layout/layout.stories.d.ts +19 -0
  363. package/dist/esm/components/Loader/__tests__/index.d.ts +1 -0
  364. package/dist/esm/components/Loader/index.d.ts +6 -0
  365. package/dist/esm/components/Loader/loader.stories.d.ts +11 -0
  366. package/dist/esm/components/Map/__tests__/index.d.ts +1 -0
  367. package/dist/esm/components/Map/index.d.ts +150 -0
  368. package/dist/esm/components/Map/map.stories.d.ts +8 -0
  369. package/dist/esm/components/Menu/Logo.d.ts +4 -0
  370. package/dist/esm/components/Menu/Menu.d.ts +26 -0
  371. package/dist/esm/components/Menu/Menu.stories.d.ts +10 -0
  372. package/dist/esm/components/Menu/__mocks__/menu-props.d.ts +2 -0
  373. package/dist/esm/components/Menu/__tests__/Menu.d.ts +1 -0
  374. package/dist/esm/components/Menu/index.d.ts +2 -0
  375. package/dist/esm/components/Modal/__tests__/index.d.ts +1 -0
  376. package/dist/esm/components/Modal/index.d.ts +27 -0
  377. package/dist/esm/components/Modal/modal.stories.d.ts +10 -0
  378. package/dist/esm/components/ModalV2/__styles__/index.d.ts +5 -0
  379. package/dist/esm/components/ModalV2/__tests__/index.d.ts +1 -0
  380. package/dist/esm/components/ModalV2/index.d.ts +15 -0
  381. package/dist/esm/components/Notification/__tests__/index.d.ts +1 -0
  382. package/dist/esm/components/Notification/__tests__/useNotification.d.ts +1 -0
  383. package/dist/esm/components/Notification/index.d.ts +43 -0
  384. package/dist/esm/components/Notification/notification.stories.d.ts +13 -0
  385. package/dist/esm/components/Notification/useNotification.d.ts +7 -0
  386. package/dist/esm/components/Pagination/__tests__/index.d.ts +1 -0
  387. package/dist/esm/components/Pagination/index.d.ts +10 -0
  388. package/dist/esm/components/Pagination/pagination.stories.d.ts +10 -0
  389. package/dist/esm/components/ProgressBar/__tests__/index.d.ts +1 -0
  390. package/dist/esm/components/ProgressBar/index.d.ts +7 -0
  391. package/dist/esm/components/ProgressBar/index.stories.d.ts +11 -0
  392. package/dist/esm/components/RadioSelect/__tests__/index.d.ts +1 -0
  393. package/dist/esm/components/RadioSelect/index.d.ts +23 -0
  394. package/dist/esm/components/RadioSelect/index.stories.d.ts +11 -0
  395. package/dist/esm/components/SelectBox/__tests__/index.d.ts +1 -0
  396. package/dist/esm/components/SelectBox/index.d.ts +17 -0
  397. package/dist/esm/components/SelectBox/select-box.stories.d.ts +11 -0
  398. package/dist/esm/components/Spreadsheet/__stubs__/index.d.ts +50 -0
  399. package/dist/esm/components/Spreadsheet/__tests__/context-menu.d.ts +1 -0
  400. package/dist/esm/components/Spreadsheet/__tests__/generate-data-with-read-only-and-is-validated.d.ts +1 -0
  401. package/dist/esm/components/Spreadsheet/__tests__/handlers.d.ts +1 -0
  402. package/dist/esm/components/Spreadsheet/__tests__/index.d.ts +1 -0
  403. package/dist/esm/components/Spreadsheet/__tests__/modal-upload.d.ts +1 -0
  404. package/dist/esm/components/Spreadsheet/__tests__/utils.d.ts +1 -0
  405. package/dist/esm/components/Spreadsheet/context-menu.d.ts +11 -0
  406. package/dist/esm/components/Spreadsheet/handlers.d.ts +39 -0
  407. package/dist/esm/components/Spreadsheet/index.d.ts +21 -0
  408. package/dist/esm/components/Spreadsheet/modal-upload.d.ts +3 -0
  409. package/dist/esm/components/Spreadsheet/spreadsheet.stories.d.ts +15 -0
  410. package/dist/esm/components/Spreadsheet/types.d.ts +115 -0
  411. package/dist/esm/components/Spreadsheet/utils.d.ts +65 -0
  412. package/dist/esm/components/Table/__tests__/index.d.ts +1 -0
  413. package/dist/esm/components/Table/index.d.ts +30 -0
  414. package/dist/esm/components/Table/table.stories.d.ts +11 -0
  415. package/dist/esm/components/Tabs/__tests__/index.d.ts +1 -0
  416. package/dist/esm/components/Tabs/index.d.ts +13 -0
  417. package/dist/esm/components/Tabs/tabs.stories.d.ts +9 -0
  418. package/dist/esm/components/TextArea/__tests__/index.d.ts +1 -0
  419. package/dist/esm/components/TextArea/index.d.ts +13 -0
  420. package/dist/esm/components/TextArea/text-area.stories.d.ts +10 -0
  421. package/dist/esm/components/TextAreaEditor/__tests__/index.d.ts +1 -0
  422. package/dist/esm/components/TextAreaEditor/index.d.ts +22 -0
  423. package/dist/esm/components/TextAreaEditor/text-area-editor.stories.d.ts +9 -0
  424. package/dist/esm/components/Tile/__styles__/index.d.ts +16 -0
  425. package/dist/esm/components/Tile/__tests__/index.d.ts +1 -0
  426. package/dist/esm/components/Tile/index.d.ts +14 -0
  427. package/dist/esm/components/Tile/tile.stories.d.ts +11 -0
  428. package/dist/esm/components/Toast/__tests__/index.d.ts +1 -0
  429. package/dist/esm/components/Toast/index.d.ts +18 -0
  430. package/dist/esm/components/Toast/toast.stories.d.ts +10 -0
  431. package/dist/esm/components/ToastMessage/__tests__/index.d.ts +1 -0
  432. package/dist/esm/components/ToastMessage/index.d.ts +12 -0
  433. package/dist/esm/components/ToastMessage/toastMessage.stories.d.ts +12 -0
  434. package/dist/esm/components/Typography/__tests__/index.d.ts +1 -0
  435. package/dist/esm/components/Typography/index.d.ts +19 -0
  436. package/dist/esm/components/Typography/typography.stories.d.ts +25 -0
  437. package/dist/esm/components/UploadProgress/__tests__/index.d.ts +1 -0
  438. package/dist/esm/components/UploadProgress/index.d.ts +8 -0
  439. package/dist/esm/components/UploadProgress/upload-progress.stories.d.ts +10 -0
  440. package/dist/esm/components/Wizard/__tests__/index.d.ts +1 -0
  441. package/dist/esm/components/Wizard/context.d.ts +32 -0
  442. package/dist/esm/components/Wizard/index.d.ts +37 -0
  443. package/dist/esm/components/Wizard/wizard.stories.d.ts +15 -0
  444. package/dist/esm/helpers/fade-in.d.ts +5 -0
  445. package/dist/esm/helpers/mock-google-maps.d.ts +223 -0
  446. package/dist/esm/helpers/mock-router.d.ts +2 -0
  447. package/dist/esm/hooks/UsePortal/__tests__/portal-provider.d.ts +2 -0
  448. package/dist/esm/hooks/UsePortal/__tests__/use-portal.d.ts +1 -0
  449. package/dist/esm/hooks/UsePortal/index.d.ts +2 -0
  450. package/dist/esm/hooks/UsePortal/portal-container.d.ts +8 -0
  451. package/dist/esm/hooks/UsePortal/portal-context.d.ts +6 -0
  452. package/dist/esm/hooks/UsePortal/portal-provider.d.ts +5 -0
  453. package/dist/esm/hooks/UsePortal/use-portal.d.ts +2 -0
  454. package/dist/esm/hooks/UsePortal/use-portal.stories.d.ts +8 -0
  455. package/dist/esm/index.d.ts +61 -0
  456. package/dist/esm/index.js +60 -0
  457. package/dist/esm/index.js.map +1 -0
  458. package/dist/esm/types/core.d.ts +18 -0
  459. package/dist/esm/utils/combine-address/__tests__/combine-address.d.ts +1 -0
  460. package/dist/esm/utils/combine-address/combine-address.d.ts +16 -0
  461. package/dist/esm/utils/combine-address/combine-address.stories.d.ts +8 -0
  462. package/dist/esm/utils/completed-section/__tests__/completed-sections.d.ts +1 -0
  463. package/dist/esm/utils/completed-section/completed-section.stories.d.ts +13 -0
  464. package/dist/esm/utils/completed-section/completed-sections.d.ts +7 -0
  465. package/dist/esm/utils/datetime/__tests__/datetime.d.ts +1 -0
  466. package/dist/esm/utils/datetime/datetime.d.ts +15 -0
  467. package/dist/esm/utils/datetime/datetime.stories.d.ts +8 -0
  468. package/dist/esm/utils/device-detection/__tests__/device-detection.d.ts +1 -0
  469. package/dist/esm/utils/device-detection/device-detection.d.ts +5 -0
  470. package/dist/esm/utils/device-detection/device-detection.stories.d.ts +12 -0
  471. package/dist/esm/utils/fetcher/__tests__/fetcher.d.ts +1 -0
  472. package/dist/esm/utils/fetcher/fetcher.d.ts +19 -0
  473. package/dist/esm/utils/fetcher/fetcher.stories.d.ts +8 -0
  474. package/dist/esm/utils/form/__tests__/index.d.ts +1 -0
  475. package/dist/esm/utils/form/index.d.ts +2 -0
  476. package/dist/esm/utils/is-base64/__tests__/index.d.ts +1 -0
  477. package/dist/esm/utils/is-base64/index.d.ts +1 -0
  478. package/dist/esm/utils/is-base64/is-base64.stories.d.ts +8 -0
  479. package/dist/esm/utils/local-storage/local-storage-check.d.ts +5 -0
  480. package/dist/esm/utils/query-params/__tests__/query-params.d.ts +1 -0
  481. package/dist/esm/utils/query-params/query-params.d.ts +1 -0
  482. package/dist/esm/utils/query-params/query-params.stories.d.ts +8 -0
  483. package/dist/esm/utils/validators/__tests__/error-messages.d.ts +1 -0
  484. package/dist/esm/utils/validators/__tests__/index.d.ts +1 -0
  485. package/dist/esm/utils/validators/__tests__/validate-base.d.ts +1 -0
  486. package/dist/esm/utils/validators/__tests__/validate-character-length.d.ts +1 -0
  487. package/dist/esm/utils/validators/__tests__/validate-email.d.ts +1 -0
  488. package/dist/esm/utils/validators/__tests__/validate-number.d.ts +1 -0
  489. package/dist/esm/utils/validators/__tests__/validate-object.d.ts +1 -0
  490. package/dist/esm/utils/validators/__tests__/validate-password.d.ts +1 -0
  491. package/dist/esm/utils/validators/__tests__/validate-require.d.ts +1 -0
  492. package/dist/esm/utils/validators/__tests__/validate-special-chars.test.d.ts +1 -0
  493. package/dist/esm/utils/validators/__tests__/validate-text-and-number-only.d.ts +1 -0
  494. package/dist/esm/utils/validators/__tests__/validate-uri.d.ts +1 -0
  495. package/dist/esm/utils/validators/error-messages.d.ts +14 -0
  496. package/dist/esm/utils/validators/index.d.ts +13 -0
  497. package/dist/esm/utils/validators/regex.d.ts +2 -0
  498. package/dist/esm/utils/validators/validate-base.d.ts +15 -0
  499. package/dist/esm/utils/validators/validate-character-length.d.ts +10 -0
  500. package/dist/esm/utils/validators/validate-email.d.ts +4 -0
  501. package/dist/esm/utils/validators/validate-number.d.ts +1 -0
  502. package/dist/esm/utils/validators/validate-object.d.ts +1 -0
  503. package/dist/esm/utils/validators/validate-password.d.ts +4 -0
  504. package/dist/esm/utils/validators/validate-require.d.ts +6 -0
  505. package/dist/esm/utils/validators/validate-special-chars.d.ts +1 -0
  506. package/dist/esm/utils/validators/validate-text-and-number.d.ts +1 -0
  507. package/dist/esm/utils/validators/validate-uri.d.ts +4 -0
  508. package/dist/esm/utils/validators/validators.stories.d.ts +8 -0
  509. package/dist/index.css +315 -561
  510. package/package.json +73 -49
  511. package/src/tests/badges/badge-branches.svg +1 -1
  512. package/src/tests/badges/badge-functions.svg +1 -1
  513. package/src/tests/badges/badge-lines.svg +1 -1
  514. package/src/tests/badges/badge-statements.svg +1 -1
  515. package/v3/components/button/__styles__/index.d.ts +19 -13
  516. package/v3/components/button/__tests__/button.test.d.ts +1 -1
  517. package/v3/components/button/button.d.ts +25 -20
  518. package/v3/components/button/index.d.ts +2 -2
  519. package/v3/components/card/__styles__/index.d.ts +74 -74
  520. package/v3/components/card/__tests__/card-components.test.d.ts +1 -1
  521. package/v3/components/card/__tests__/card.test.d.ts +1 -1
  522. package/v3/components/card/card-components.d.ts +38 -38
  523. package/v3/components/card/card.d.ts +27 -27
  524. package/v3/components/card/index.d.ts +3 -3
  525. package/v3/components/form-layout/__styles__/index.d.ts +13 -0
  526. package/v3/components/form-layout/__tests__/form-layout.test.d.ts +1 -0
  527. package/v3/components/form-layout/form-layout.d.ts +6 -0
  528. package/v3/components/form-layout/index.d.ts +2 -0
  529. package/v3/components/grid/__styles__/index.d.ts +10 -7
  530. package/v3/components/grid/__styles__/units.d.ts +58 -56
  531. package/v3/components/grid/__tests__/grid-responsive.test.d.ts +1 -1
  532. package/v3/components/grid/__tests__/grid.test.d.ts +1 -1
  533. package/v3/components/grid/grid-responsive.d.ts +36 -28
  534. package/v3/components/grid/grid.d.ts +8 -7
  535. package/v3/components/grid/index.d.ts +4 -4
  536. package/v3/components/icon/__styles__/index.d.ts +10 -10
  537. package/v3/components/icon/__tests__/index.d.ts +1 -1
  538. package/v3/components/icon/icon-component.d.ts +14 -14
  539. package/v3/components/icon/icons/animated-icons/docsAnimated1.d.ts +3 -3
  540. package/v3/components/icon/icons/animated-icons/docsAnimated2.d.ts +3 -3
  541. package/v3/components/icon/icons/animated-icons/webhooksAnimated1.d.ts +3 -3
  542. package/v3/components/icon/icons/animated-icons/webhooksAnimated2.d.ts +3 -3
  543. package/v3/components/icon/icons/animated-icons/webhooksDocsAnimated1.d.ts +3 -3
  544. package/v3/components/icon/icons/animated-icons/webhooksDocsAnimated2.d.ts +3 -3
  545. package/v3/components/icon/icons/animated-icons/welcomeAnimated1.d.ts +3 -3
  546. package/v3/components/icon/icons/animated-icons/welcomeAnimated2.d.ts +3 -3
  547. package/v3/components/icon/icons/index.d.ts +114 -110
  548. package/v3/components/icon/icons/infographic-icons/agencyCloudInfographic.d.ts +3 -3
  549. package/v3/components/icon/icons/infographic-icons/apiDocsInfographic.d.ts +3 -3
  550. package/v3/components/icon/icons/infographic-icons/apiInfographic.d.ts +3 -3
  551. package/v3/components/icon/icons/infographic-icons/appInfographic.d.ts +3 -3
  552. package/v3/components/icon/icons/infographic-icons/appInfographicAlt.d.ts +3 -3
  553. package/v3/components/icon/icons/infographic-icons/applicantInfographic.d.ts +3 -3
  554. package/v3/components/icon/icons/infographic-icons/barnInfographic.d.ts +3 -3
  555. package/v3/components/icon/icons/infographic-icons/bungalowInfographic.d.ts +3 -3
  556. package/v3/components/icon/icons/infographic-icons/cottageInfographic.d.ts +3 -3
  557. package/v3/components/icon/icons/infographic-icons/crmInfographic.d.ts +3 -3
  558. package/v3/components/icon/icons/infographic-icons/customerInfographic.d.ts +3 -3
  559. package/v3/components/icon/icons/infographic-icons/designInfographic.d.ts +3 -3
  560. package/v3/components/icon/icons/infographic-icons/developmentInfographic.d.ts +3 -3
  561. package/v3/components/icon/icons/infographic-icons/docsInfographic.d.ts +3 -3
  562. package/v3/components/icon/icons/infographic-icons/elementsInfographic.d.ts +3 -3
  563. package/v3/components/icon/icons/infographic-icons/farmInfographic.d.ts +3 -3
  564. package/v3/components/icon/icons/infographic-icons/flatInfographic.d.ts +3 -3
  565. package/v3/components/icon/icons/infographic-icons/graphQlInfographic.d.ts +3 -3
  566. package/v3/components/icon/icons/infographic-icons/houseInfographic.d.ts +3 -3
  567. package/v3/components/icon/icons/infographic-icons/landInfographic.d.ts +3 -3
  568. package/v3/components/icon/icons/infographic-icons/landlordInfographic.d.ts +3 -3
  569. package/v3/components/icon/icons/infographic-icons/maisonetteInfographic.d.ts +3 -3
  570. package/v3/components/icon/icons/infographic-icons/myAppsInfographic.d.ts +3 -0
  571. package/v3/components/icon/icons/infographic-icons/selectInfographic.d.ts +3 -0
  572. package/v3/components/icon/icons/infographic-icons/vendorInfographic.d.ts +3 -3
  573. package/v3/components/icon/icons/infographic-icons/webhooksInfographic.d.ts +3 -0
  574. package/v3/components/icon/icons/menu-icons/accountMenu.d.ts +3 -3
  575. package/v3/components/icon/icons/menu-icons/analyticsMenu.d.ts +3 -3
  576. package/v3/components/icon/icons/menu-icons/apiMenu.d.ts +3 -3
  577. package/v3/components/icon/icons/menu-icons/appsMenu.d.ts +3 -3
  578. package/v3/components/icon/icons/menu-icons/dataMenu.d.ts +3 -3
  579. package/v3/components/icon/icons/menu-icons/defaultMenu.d.ts +3 -3
  580. package/v3/components/icon/icons/menu-icons/desktopMenu.d.ts +3 -3
  581. package/v3/components/icon/icons/menu-icons/developersMenu.d.ts +3 -3
  582. package/v3/components/icon/icons/menu-icons/docsMenu.d.ts +3 -3
  583. package/v3/components/icon/icons/menu-icons/hamburgerMenu.d.ts +3 -3
  584. package/v3/components/icon/icons/menu-icons/hamburgerOpenMenu.d.ts +3 -3
  585. package/v3/components/icon/icons/menu-icons/helpMenu.d.ts +3 -3
  586. package/v3/components/icon/icons/menu-icons/installedMenu.d.ts +3 -3
  587. package/v3/components/icon/icons/menu-icons/logoutMenu.d.ts +3 -3
  588. package/v3/components/icon/icons/menu-icons/manageMenu.d.ts +3 -3
  589. package/v3/components/icon/icons/menu-icons/mapMenu.d.ts +3 -3
  590. package/v3/components/icon/icons/menu-icons/marketplaceMenu.d.ts +3 -3
  591. package/v3/components/icon/icons/menu-icons/myAccountMenu.d.ts +3 -3
  592. package/v3/components/icon/icons/menu-icons/officesMenu.d.ts +3 -3
  593. package/v3/components/icon/icons/menu-icons/paymentsMenu.d.ts +3 -3
  594. package/v3/components/icon/icons/menu-icons/profileMenu.d.ts +3 -3
  595. package/v3/components/icon/icons/menu-icons/reapitLogoMenu.d.ts +3 -3
  596. package/v3/components/icon/icons/menu-icons/reapitLogoSelectedMenu.d.ts +3 -3
  597. package/v3/components/icon/icons/menu-icons/reapitLogoTextMenu.d.ts +3 -3
  598. package/v3/components/icon/icons/menu-icons/resultsMenu.d.ts +3 -3
  599. package/v3/components/icon/icons/menu-icons/searchMenu.d.ts +3 -3
  600. package/v3/components/icon/icons/menu-icons/uiMenu.d.ts +3 -0
  601. package/v3/components/icon/icons/menu-icons/usersMenu.d.ts +3 -3
  602. package/v3/components/icon/icons/menu-icons/webhooksMenu.d.ts +3 -3
  603. package/v3/components/icon/icons/system-icons/addSystem.d.ts +3 -3
  604. package/v3/components/icon/icons/system-icons/arrowDownSystem.d.ts +3 -3
  605. package/v3/components/icon/icons/system-icons/arrowLeftSystem.d.ts +3 -3
  606. package/v3/components/icon/icons/system-icons/arrowRightSystem.d.ts +3 -3
  607. package/v3/components/icon/icons/system-icons/arrowUpSystem.d.ts +3 -3
  608. package/v3/components/icon/icons/system-icons/asteriskSystem.d.ts +3 -3
  609. package/v3/components/icon/icons/system-icons/backSolidSystem.d.ts +3 -3
  610. package/v3/components/icon/icons/system-icons/backSystem.d.ts +3 -3
  611. package/v3/components/icon/icons/system-icons/calendarSystem.d.ts +3 -3
  612. package/v3/components/icon/icons/system-icons/cancelSolidSystem.d.ts +3 -3
  613. package/v3/components/icon/icons/system-icons/carSolidSystem.d.ts +3 -3
  614. package/v3/components/icon/icons/system-icons/checkSystem.d.ts +3 -3
  615. package/v3/components/icon/icons/system-icons/circleSolidSystem.d.ts +3 -3
  616. package/v3/components/icon/icons/system-icons/closeSystem.d.ts +3 -3
  617. package/v3/components/icon/icons/system-icons/cloudSolidSystem.d.ts +3 -3
  618. package/v3/components/icon/icons/system-icons/companySystem.d.ts +3 -3
  619. package/v3/components/icon/icons/system-icons/downSolidSystem.d.ts +3 -3
  620. package/v3/components/icon/icons/system-icons/downloadSystem.d.ts +3 -3
  621. package/v3/components/icon/icons/system-icons/editSolidSystem.d.ts +3 -3
  622. package/v3/components/icon/icons/system-icons/editSystem.d.ts +3 -3
  623. package/v3/components/icon/icons/system-icons/emailSystem.d.ts +3 -3
  624. package/v3/components/icon/icons/system-icons/errorSolidSystem.d.ts +3 -3
  625. package/v3/components/icon/icons/system-icons/filterSystem.d.ts +3 -3
  626. package/v3/components/icon/icons/system-icons/geoLocationSolidSystem.d.ts +3 -3
  627. package/v3/components/icon/icons/system-icons/homeSystem.d.ts +3 -3
  628. package/v3/components/icon/icons/system-icons/infoSolidSystem.d.ts +3 -3
  629. package/v3/components/icon/icons/system-icons/linkSolidSystem.d.ts +3 -3
  630. package/v3/components/icon/icons/system-icons/linkSystem.d.ts +3 -3
  631. package/v3/components/icon/icons/system-icons/moreSystem.d.ts +3 -3
  632. package/v3/components/icon/icons/system-icons/nextSolidSystem.d.ts +3 -3
  633. package/v3/components/icon/icons/system-icons/nextSystem.d.ts +3 -3
  634. package/v3/components/icon/icons/system-icons/paymentSystem.d.ts +3 -3
  635. package/v3/components/icon/icons/system-icons/phoneSystem.d.ts +3 -3
  636. package/v3/components/icon/icons/system-icons/pinSolidSystem.d.ts +3 -3
  637. package/v3/components/icon/icons/system-icons/previewSystem.d.ts +3 -3
  638. package/v3/components/icon/icons/system-icons/saveSystem.d.ts +3 -3
  639. package/v3/components/icon/icons/system-icons/searchSystem.d.ts +3 -3
  640. package/v3/components/icon/icons/system-icons/settingsSystem.d.ts +3 -3
  641. package/v3/components/icon/icons/system-icons/shareSystem.d.ts +3 -3
  642. package/v3/components/icon/icons/system-icons/sortSystem.d.ts +3 -3
  643. package/v3/components/icon/icons/system-icons/tickSolidSystem.d.ts +3 -3
  644. package/v3/components/icon/icons/system-icons/tickSystem.d.ts +3 -3
  645. package/v3/components/icon/icons/system-icons/trashSystem.d.ts +3 -3
  646. package/v3/components/icon/icons/system-icons/upSolidSystem.d.ts +3 -3
  647. package/v3/components/icon/icons/system-icons/usernameSystem.d.ts +3 -3
  648. package/v3/components/icon/icons/system-icons/viewSolidSystem.d.ts +3 -3
  649. package/v3/components/icon/icons/system-icons/walkingSolidSystem.d.ts +3 -3
  650. package/v3/components/icon/icons/system-icons/warningSolidSystem.d.ts +3 -3
  651. package/v3/components/icon/index.d.ts +3 -3
  652. package/v3/components/input/__styles__/index.d.ts +4 -4
  653. package/v3/components/input/__tests__/input.test.d.ts +1 -1
  654. package/v3/components/input/index.d.ts +2 -2
  655. package/v3/components/input/input.d.ts +5 -4
  656. package/v3/components/input-add-on/__styles__/index.d.ts +4 -4
  657. package/v3/components/input-add-on/__tests__/input-add-on.test.d.ts +1 -1
  658. package/v3/components/input-add-on/index.d.ts +2 -2
  659. package/v3/components/input-add-on/input-add-on.d.ts +7 -7
  660. package/v3/components/input-group/__styles__/index.d.ts +4 -4
  661. package/v3/components/input-group/__tests__/input-group.test.d.ts +1 -1
  662. package/v3/components/input-group/index.d.ts +2 -2
  663. package/v3/components/input-group/input-group.d.ts +25 -24
  664. package/v3/components/label/__styles__/index.d.ts +4 -4
  665. package/v3/components/label/__tests__/label.test.d.ts +1 -1
  666. package/v3/components/label/index.d.ts +2 -2
  667. package/v3/components/label/label.d.ts +4 -4
  668. package/v3/components/layout/__styles__/index.d.ts +16 -16
  669. package/v3/components/layout/__tests__/layout.test.d.ts +1 -1
  670. package/v3/components/layout/index.d.ts +2 -2
  671. package/v3/components/layout/layout.d.ts +32 -32
  672. package/v3/components/loader/__styles__/index.d.ts +13 -13
  673. package/v3/components/loader/__tests__/loader.test.d.ts +1 -1
  674. package/v3/components/loader/index.d.ts +2 -2
  675. package/v3/components/loader/loader.d.ts +6 -6
  676. package/v3/components/modal/__styles__/index.d.ts +13 -13
  677. package/v3/components/modal/__tests__/modal.test.d.ts +1 -1
  678. package/v3/components/modal/index.d.ts +2 -2
  679. package/v3/components/modal/modal.d.ts +14 -14
  680. package/v3/components/multi-select/__styles__/index.d.ts +23 -10
  681. package/v3/components/multi-select/__tests__/multi-select.test.d.ts +1 -1
  682. package/v3/components/multi-select/index.d.ts +2 -2
  683. package/v3/components/multi-select/multi-select.d.ts +32 -7
  684. package/v3/components/nav/__styles__/index.d.ts +21 -21
  685. package/v3/components/nav/__tests__/nav-responsive.test.d.ts +1 -1
  686. package/v3/components/nav/__tests__/nav.test.d.ts +1 -1
  687. package/v3/components/nav/index.d.ts +3 -3
  688. package/v3/components/nav/nav-responsive.d.ts +21 -19
  689. package/v3/components/nav/nav.d.ts +10 -10
  690. package/v3/components/nav/use-nav.stories.d.ts +3 -2
  691. package/v3/components/pagination/__styles__/index.d.ts +11 -11
  692. package/v3/components/pagination/__tests__/pagination.test.d.ts +1 -1
  693. package/v3/components/pagination/index.d.ts +2 -2
  694. package/v3/components/pagination/pagination.d.ts +17 -17
  695. package/v3/components/persistant-notification/__styles__/index.d.ts +9 -8
  696. package/v3/components/persistant-notification/__tests__/persistent-notification.test.d.ts +1 -1
  697. package/v3/components/persistant-notification/index.d.ts +2 -2
  698. package/v3/components/persistant-notification/persistent-notification.d.ts +14 -13
  699. package/v3/components/progress-bar/__styles__/index.d.ts +20 -20
  700. package/v3/components/progress-bar/__tests__/progress-bar.test.d.ts +1 -1
  701. package/v3/components/progress-bar/index.d.ts +2 -2
  702. package/v3/components/progress-bar/progress-bar.d.ts +18 -18
  703. package/v3/components/searchable-dropdown/__styles__/index.d.ts +15 -0
  704. package/v3/components/searchable-dropdown/__tests__/searchable-dropdown.test.d.ts +1 -0
  705. package/v3/components/searchable-dropdown/index.d.ts +5 -0
  706. package/v3/components/searchable-dropdown/searchable-dropdown.d.ts +33 -0
  707. package/v3/components/secondary-nav/__styles__/index.d.ts +7 -7
  708. package/v3/components/secondary-nav/__tests__/secondary-nav.test.d.ts +1 -1
  709. package/v3/components/secondary-nav/index.d.ts +2 -2
  710. package/v3/components/secondary-nav/secondary-nav.d.ts +9 -9
  711. package/v3/components/select/__styles__/index.d.ts +4 -4
  712. package/v3/components/select/__tests__/select.test.d.ts +1 -1
  713. package/v3/components/select/index.d.ts +2 -2
  714. package/v3/components/select/select.d.ts +5 -4
  715. package/v3/components/snack/__styles__/index.d.ts +6 -6
  716. package/v3/components/snack/__styles__/snack-holder.d.ts +4 -4
  717. package/v3/components/snack/__tests__/snack.test.d.ts +1 -1
  718. package/v3/components/snack/index.d.ts +3 -3
  719. package/v3/components/snack/snack.d.ts +17 -17
  720. package/v3/components/snack/use-snack-hook.stories.d.ts +2 -1
  721. package/v3/components/status-indicator/__styles__/index.d.ts +5 -4
  722. package/v3/components/status-indicator/__tests__/status-indicator.test.d.ts +1 -1
  723. package/v3/components/status-indicator/index.d.ts +2 -2
  724. package/v3/components/status-indicator/status-indicator.d.ts +7 -6
  725. package/v3/components/steps/__styles__/index.d.ts +19 -7
  726. package/v3/components/steps/__tests__/steps.test.d.ts +1 -1
  727. package/v3/components/steps/index.d.ts +2 -2
  728. package/v3/components/steps/steps.d.ts +19 -8
  729. package/v3/components/table/__styles__/index.d.ts +53 -46
  730. package/v3/components/table/__tests__/molecules.test.d.ts +1 -0
  731. package/v3/components/table/__tests__/table.test.d.ts +1 -1
  732. package/v3/components/table/index.d.ts +3 -3
  733. package/v3/components/table/molecules.d.ts +34 -29
  734. package/v3/components/table/table.d.ts +40 -28
  735. package/v3/components/tabs/__styles__/index.d.ts +18 -0
  736. package/v3/components/tabs/__tests__/tabs.test.d.ts +1 -0
  737. package/v3/components/tabs/index.d.ts +2 -0
  738. package/v3/components/tabs/tabs.d.ts +13 -0
  739. package/v3/components/textarea/__styles__/index.d.ts +4 -4
  740. package/v3/components/textarea/__tests__/textarea.test.d.ts +1 -1
  741. package/v3/components/textarea/index.d.ts +2 -2
  742. package/v3/components/textarea/textarea.d.ts +5 -4
  743. package/v3/components/toggle/__styles__/index.d.ts +24 -19
  744. package/v3/components/toggle/__tests__/toggle.test.d.ts +1 -1
  745. package/v3/components/toggle/index.d.ts +2 -2
  746. package/v3/components/toggle/toggle.d.ts +21 -16
  747. package/v3/components/typography/__styles__/index.d.ts +19 -16
  748. package/v3/components/typography/__tests__/typography.test.d.ts +1 -1
  749. package/v3/components/typography/index.d.ts +2 -2
  750. package/v3/components/typography/typography.d.ts +13 -10
  751. package/v3/helpers/__tests__/intent.test.d.ts +1 -1
  752. package/v3/helpers/intent.d.ts +2 -2
  753. package/v3/hooks/use-media-query/__tests__/index.test.d.ts +1 -1
  754. package/v3/hooks/use-media-query/index.d.ts +17 -17
  755. package/v3/hooks/use-media-query/media.stories.d.ts +3 -2
  756. package/v3/hooks/use-modal/__tests__/index.test.d.ts +1 -0
  757. package/v3/hooks/use-modal/index.d.ts +9 -8
  758. package/v3/hooks/use-nav-state/__tests__/index.test.d.ts +1 -1
  759. package/v3/hooks/use-nav-state/index.d.ts +19 -19
  760. package/v3/hooks/use-portal/__tests__/index.test.d.ts +1 -0
  761. package/v3/hooks/use-portal/index.d.ts +6 -13
  762. package/v3/hooks/use-snack/__tests__/index.test.d.ts +1 -0
  763. package/v3/hooks/use-snack/index.d.ts +15 -16
  764. package/v3/index.css +542 -3714
  765. package/v3/index.d.ts +43 -39
  766. package/v3/index.js +15 -6
  767. package/v3/index.js.map +1 -0
  768. package/v3/storybook/demo-block.d.ts +16 -7
  769. package/v3/storybook/demo-theme.d.ts +4 -4
  770. package/v3/storybook/random-id.d.ts +1 -0
  771. package/v3/storybook/render-html-markup.d.ts +8 -7
  772. package/v3/storybook/welcome.d.ts +5 -5
  773. package/v3/styles/borders.d.ts +24 -7
  774. package/v3/styles/flexbox.d.ts +29 -29
  775. package/v3/styles/globals.d.ts +11 -11
  776. package/v3/styles/helpers.d.ts +1 -1
  777. package/v3/styles/intent.d.ts +7 -6
  778. package/v3/styles/media.d.ts +6 -6
  779. package/v3/styles/sizing.d.ts +31 -78
  780. package/v3/styles/spacing.d.ts +189 -121
  781. package/v3/styles/states.d.ts +4 -4
  782. package/v3/styles/theming-colour-block.d.ts +6 -0
  783. package/v3/styles/typography.d.ts +7 -5
  784. package/v3/types/core.d.ts +3 -3
  785. package/dist/components/Alert/Alert.stories.d.ts +0 -13
  786. package/dist/components/Button/button-group.stories.d.ts +0 -10
  787. package/dist/components/DatePicker/__tests__/index.d.ts +0 -1
  788. package/dist/components/DropdownSelect/__tests__/index.d.ts +0 -1
  789. package/dist/components/DynamicLinks/__tests__/index.d.ts +0 -1
  790. package/dist/components/Editor/__tests__/index.d.ts +0 -1
  791. package/dist/components/FileInput/__tests__/index.d.ts +0 -1
  792. package/dist/components/Form/__tests__/index.d.ts +0 -1
  793. package/dist/components/HelpGuide/__tests__/index.d.ts +0 -1
  794. package/dist/components/Helper/__tests__/index.d.ts +0 -1
  795. package/dist/components/HtmlRender/__tests__/index.d.ts +0 -1
  796. package/dist/components/ImageInput/__tests__/index.d.ts +0 -1
  797. package/dist/components/Info/__tests__/index.d.ts +0 -1
  798. package/dist/components/Info/info.stories.d.ts +0 -11
  799. package/dist/components/Input/__tests__/index.d.ts +0 -1
  800. package/dist/components/Layout/__tests__/index.d.ts +0 -1
  801. package/dist/components/Loader/__tests__/index.d.ts +0 -1
  802. package/dist/components/Map/__tests__/index.d.ts +0 -1
  803. package/dist/components/Modal/__tests__/index.d.ts +0 -1
  804. package/dist/components/ModalV2/__tests__/index.d.ts +0 -1
  805. package/dist/components/Notification/__tests__/index.d.ts +0 -1
  806. package/dist/components/Pagination/__tests__/index.d.ts +0 -1
  807. package/dist/components/ProgressBar/__tests__/index.d.ts +0 -1
  808. package/dist/components/ProgressBar/index.stories.d.ts +0 -12
  809. package/dist/components/RadioSelect/__tests__/index.d.ts +0 -1
  810. package/dist/components/SelectBox/__tests__/index.d.ts +0 -1
  811. package/dist/components/Spreadsheet/__tests__/index.d.ts +0 -1
  812. package/dist/components/Table/__tests__/index.d.ts +0 -1
  813. package/dist/components/Tabs/__tests__/index.d.ts +0 -1
  814. package/dist/components/TextArea/__tests__/index.d.ts +0 -1
  815. package/dist/components/TextAreaEditor/__tests__/index.d.ts +0 -1
  816. package/dist/components/Tile/__styles__/index.d.ts +0 -16
  817. package/dist/components/Tile/__tests__/index.d.ts +0 -1
  818. package/dist/components/Toast/__tests__/index.d.ts +0 -1
  819. package/dist/components/ToastMessage/__tests__/index.d.ts +0 -1
  820. package/dist/components/Typography/__tests__/index.d.ts +0 -1
  821. package/dist/components/UploadProgress/__tests__/index.d.ts +0 -1
  822. package/dist/components/Wizard/__tests__/index.d.ts +0 -1
  823. package/dist/elements-legacy.cjs.development.js +0 -8778
  824. package/dist/elements-legacy.cjs.development.js.map +0 -1
  825. package/dist/elements-legacy.cjs.production.min.js +0 -2
  826. package/dist/elements-legacy.cjs.production.min.js.map +0 -1
  827. package/dist/elements-legacy.esm.js +0 -8519
  828. package/dist/elements-legacy.esm.js.map +0 -1
  829. package/dist/elements-legacy.umd.development.js +0 -8730
  830. package/dist/elements-legacy.umd.development.js.map +0 -1
  831. package/dist/elements-legacy.umd.production.min.js +0 -2
  832. package/dist/elements-legacy.umd.production.min.js.map +0 -1
  833. package/dist/helpers/fade-in.d.ts +0 -5
  834. package/dist/helpers/v3/intent.d.ts +0 -2
  835. package/dist/helpers/v3/render-html-markup.d.ts +0 -7
  836. package/dist/index.js +0 -8
  837. package/dist/scripts/jest-setup.d.ts +0 -1
  838. package/dist/scripts/style-mock.d.ts +0 -1
  839. package/dist/scripts/svg-transform.d.ts +0 -4
  840. package/dist/tests/coverage/lcov-report/block-navigation.d.ts +0 -1
  841. package/dist/tests/coverage/lcov-report/prettify.d.ts +0 -0
  842. package/dist/tests/coverage/lcov-report/sorter.d.ts +0 -1
  843. package/dist/utils/form/__tests__/index.d.ts +0 -1
  844. package/dist/utils/is-base64/__tests__/index.d.ts +0 -1
  845. package/dist/utils/validators/__tests__/index.d.ts +0 -1
  846. package/v3/elements.cjs.development.js +0 -6390
  847. package/v3/elements.cjs.development.js.map +0 -1
  848. package/v3/elements.cjs.production.min.js +0 -2
  849. package/v3/elements.cjs.production.min.js.map +0 -1
  850. package/v3/elements.esm.js +0 -5809
  851. package/v3/elements.esm.js.map +0 -1
  852. package/v3/elements.umd.development.js +0 -6370
  853. package/v3/elements.umd.development.js.map +0 -1
  854. package/v3/elements.umd.production.min.js +0 -2
  855. package/v3/elements.umd.production.min.js.map +0 -1
  856. package/v3/tests/coverage/lcov-report/block-navigation.d.ts +0 -1
  857. package/v3/tests/coverage/lcov-report/prettify.d.ts +0 -0
  858. package/v3/tests/coverage/lcov-report/sorter.d.ts +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"elements-legacy.cjs.production.min.js","sources":["../src/hooks/UsePortal/portal-container.tsx","../src/hooks/UsePortal/portal-context.ts","../src/hooks/UsePortal/use-portal.ts","../src/components/DynamicLinks/dynamic-link-gen.ts","../src/components/Layout/index.tsx","../src/components/Pagination/index.tsx","../src/components/Button/index.tsx","../src/utils/local-storage/local-storage-check.ts","../src/components/DynamicLinks/utils.ts","../src/components/Menu/Menu.tsx","../src/components/Tile/__styles__/index.ts","../src/utils/combine-address/combine-address.ts","../src/components/Icons/index.tsx","../src/components/Notification/index.tsx","../src/components/Notification/useNotification.tsx","../src/components/Map/index.tsx","../src/utils/form/index.ts","../src/utils/validators/validate-base.ts","../src/utils/validators/validate-character-length.ts","../src/utils/validators/validate-email.ts","../src/utils/validators/validate-require.ts","../src/utils/validators/error-messages.ts","../src/utils/validators/validate-uri.ts","../src/utils/validators/validate-password.ts","../src/utils/validators/validate-object.ts","../src/components/DatePicker/index.tsx","../src/components/Loader/index.tsx","../src/components/Table/index.tsx","../src/utils/is-base64/index.ts","../src/components/FileInput/index.tsx","../src/components/SelectBox/index.tsx","../src/components/Wizard/context.tsx","../src/components/Wizard/index.tsx","../src/components/Alert/index.tsx","../src/components/RadioSelect/index.tsx","../src/components/Input/index.tsx","../src/components/Checkbox/index.tsx","../src/components/ImageInput/index.tsx","../src/components/Tabs/index.tsx","../src/components/Modal/index.tsx","../src/components/Typography/index.tsx","../src/components/Info/index.tsx","../src/components/Editor/index.tsx","../src/components/TextAreaEditor/index.tsx","../src/components/HtmlRender/utils.tsx","../src/components/ProgressBar/index.tsx","../src/components/Spreadsheet/types.tsx","../src/components/Spreadsheet/utils.tsx","../src/components/Spreadsheet/handlers.tsx","../src/components/Spreadsheet/context-menu.tsx","../src/components/Spreadsheet/modal-upload.tsx","../src/components/HelpGuide/context.tsx","../src/components/Spreadsheet/index.tsx","../src/components/HelpGuide/utils.ts","../src/components/HelpGuide/vertical-timeline.tsx","../src/utils/device-detection/device-detection.ts","../src/components/HelpGuide/horizontal-timeline.tsx","../src/components/HelpGuide/fade.tsx","../src/components/HelpGuide/index.tsx","../src/components/UploadProgress/index.tsx","../src/components/DropdownSelect/custom-tag.tsx","../src/components/BreadcrumbV2/breadcrumb-item.tsx","../src/components/BreadcrumbV2/breadcrumb.tsx","../src/components/ImageCropperV2/utils.ts","../src/components/ImageCropperV2/handlers.ts","../src/components/ImageCropperV2/integration-helpers.ts","../src/components/ImageCropperV2/image-cropper.tsx","../src/components/CardInputGroup/card-helpers.ts","../src/components/CardInputGroup/card-country-options.ts","../src/components/CardInputGroup/card-expires-input.tsx","../src/components/CardInputGroup/card-input.tsx","../src/helpers/fade-in.ts","../src/utils/fetcher/fetcher.ts","../src/utils/datetime/datetime.ts","../src/components/ModalV2/index.tsx","../src/components/DynamicLinks/index.tsx","../src/components/BreadcrumbV2/breadcrumb-separator.tsx","../src/components/CameraImageInput/index.tsx","../src/components/CardInputGroup/card-input-group.tsx","../src/components/DropdownSelect/index.tsx","../src/components/Form/index.tsx","../src/components/HtmlRender/index.tsx","../src/components/Helper/index.tsx","../src/components/IconList/index.tsx","../src/hooks/UsePortal/portal-provider.tsx","../src/components/Menu/Logo.tsx","../src/components/TextArea/index.tsx","../src/components/Tile/index.tsx","../src/components/Toast/index.tsx","../src/components/ToastMessage/index.tsx","../src/utils/completed-section/completed-sections.ts","../src/utils/validators/validate-number.ts","../src/utils/validators/validate-text-and-number.ts","../src/utils/validators/regex.ts","../src/utils/query-params/query-params.ts"],"sourcesContent":["import * as React from 'react'\nimport * as ReactDOM from 'react-dom'\n\ninterface PortalContainerProps {\n portals: { [key: string]: React.ComponentType<any> }\n}\n\nconst PortalContainer: React.SFC<PortalContainerProps> = ({ portals }: PortalContainerProps) => {\n const [mountNode, setMountNode] = React.useState<Element | undefined>(undefined)\n React.useEffect(() => {\n setMountNode(document.body)\n }, [])\n\n if (!mountNode) {\n return null\n }\n\n return ReactDOM.createPortal(\n <>\n {Object.keys(portals).map((key) => {\n const Component = portals[key]\n return <Component key={key} />\n })}\n </>,\n document.body,\n )\n}\n\nexport default React.memo(PortalContainer)\n","import * as React from 'react'\n\nexport interface PortalContextValues {\n showPortal(key: string, modal: React.ComponentType<any>): void\n hidePortal(key: string): void\n}\n\nconst noop = () => {\n return void 0\n}\n\nexport const PortalContext = React.createContext<PortalContextValues>({\n showPortal: noop,\n hidePortal: noop,\n})\n","import * as React from 'react'\nimport { PortalContext } from './portal-context'\n\nconst generatePortalKey = (() => {\n let count = 0\n return () => `${++count}`\n})()\n\nexport function usePortal(component: React.ComponentType<any>, deps: any[] = []) {\n const context = React.useContext(PortalContext)\n const key = React.useMemo(generatePortalKey, [])\n const [isShown, setShown] = React.useState(false)\n const portal = React.useMemo(() => component, deps)\n const showPortal = React.useCallback(() => setShown(true), [])\n const hidePortal = React.useCallback(() => setShown(false), [])\n\n React.useEffect(() => {\n if (isShown) {\n context.showPortal(key, portal)\n } else {\n context.hidePortal(key)\n }\n }, [portal, isShown])\n\n React.useEffect(() => {\n return () => {\n context.hidePortal(key)\n }\n }, [])\n return [showPortal, hidePortal]\n}\n","export enum DynamicAppConstants {\n DESKTOP_URL = 'agencycloud://',\n}\n\nexport enum EntityType {\n CONTACT = 'contacts',\n PROPERTY = 'properties',\n TENNANCY = 'tennancies',\n APPLICANT = 'applicants',\n LANDLORD = 'landlords',\n VENDOR = 'vendor',\n PERSON = 'people',\n COMPANY = 'companies',\n APPS = 'apps',\n}\n\nexport enum EntityParams {\n JOURNAL = 'Journal',\n LANDLORD = 'Landlord',\n}\n\nexport enum AppParams {\n CODE = 'code',\n CONTACT_CODE = 'cntCode',\n TENNANT_ID = 'tenId',\n}\n\nexport type SalesMode = 'Sales' | 'Lettings'\n\nexport interface DynamicLinkQueryParams {\n // These two are special queries as they relate to the app to return to and the requested\n // return param from the entity eg appParam=code when I have asked for a contact\n appId: string\n appParam: AppParams\n // Only used for launching an app by id\n id: string\n // Should I close the current app after navigation\n closeApp: boolean\n // These are for searching on entities eg property, tennancy, person, company etc\n address: string\n name: string\n communication: string\n mode: SalesMode\n}\n\nexport interface DynamicLinkParams {\n appMode: 'DESKTOP' | 'WEB' // Am I in desktop or web mode\n entityType: EntityType // What base desktop entity am I querying\n // An object that will be deconstructed into a query string and appened if needed\n queryParams?: Partial<DynamicLinkQueryParams>\n webRoute?: string // Where to route to in web mode if needed\n entityCode?: string // The id of the relevant entity I which to trigger eg contact or property\n entityParams?: EntityParams // Addtional url params specific to the entity\n}\n\n// Launches contact and wit parameter, it will close down the marketplace at the same time\nexport const genLaunchEntityLink = ({ entityCode }: DynamicLinkParams, entity?: EntityType): string | null => {\n return entityCode && entity ? `${entity}/${entityCode}` : null\n}\n\n// Launches contact and wit parameter, it will close down the marketplace at the same time\nexport const genDynamicLink = ({ entityType, entityCode, queryParams, entityParams }: DynamicLinkParams): string => {\n const code = entityCode ? `/${entityCode}` : ''\n const params = entityParams ? `/${entityParams}` : ''\n const query = queryParamsToQueryString(queryParams)\n\n return `${DynamicAppConstants.DESKTOP_URL}${entityType}${code}${params}${query}`\n}\n\nexport const queryParamsToQueryString = (queryParams: Partial<DynamicLinkQueryParams> = {}) =>\n Object.keys(queryParams)\n .reduce((acc, current, index) => {\n const queryString = `${!index ? '?' : ''}${current}=${queryParams[current]}`\n acc.push(queryString)\n return acc\n }, [] as string[])\n .join('&')\n\nexport const getDynamicLink = (dynamicLinkParams: DynamicLinkParams): string | null => {\n const { appMode, webRoute } = dynamicLinkParams\n\n if (appMode === 'DESKTOP') {\n return genDynamicLink(dynamicLinkParams)\n }\n return webRoute || null\n}\n\nexport const navigateDynamicApp = (\n dynamicLinkParams: DynamicLinkParams,\n navigateParentWindow?: Window,\n postMessageOrigin?: string,\n): void => {\n const dynamicLink = getDynamicLink(dynamicLinkParams)\n const postMessageOriginString = (postMessageOrigin || process.env.MARKETPLACE_URL) as string\n\n if (navigateParentWindow && dynamicLink) {\n if (process.env.NODE_ENV === 'test') {\n navigateParentWindow.postMessage({ dynamicLink }, postMessageOriginString)\n } else {\n window.postMessage({ dynamicLink }, postMessageOriginString)\n }\n } else if (dynamicLink) {\n window.location.href = dynamicLink\n }\n}\n","import * as React from 'react'\nimport { cx } from 'linaria'\n\nexport interface LayoutProps {\n id?: string\n className?: string\n dataTest?: string\n}\n\nexport interface FlexContainerProps extends LayoutProps {\n flexColumn?: boolean\n centerContent?: boolean\n hasPadding?: boolean\n isScrollable?: boolean\n hasBackground?: boolean\n isFullHeight?: boolean\n isPageContainer?: boolean\n}\n\nexport interface GridProps extends LayoutProps {\n isMultiLine?: boolean\n isVerticalCentered?: boolean\n isMobile?: boolean\n onClick?: () => void\n}\n\nexport interface GridItemProps extends LayoutProps {\n isMultiLine?: boolean\n onClick?: () => void\n}\n\nexport interface SectionProps extends LayoutProps {\n isFlex?: boolean\n isCentered?: boolean\n isAlignedEnd?: boolean\n isAlignedStart?: boolean\n isFlexColumn?: boolean\n hasPadding?: boolean\n hasMargin?: boolean\n hasBackground?: boolean\n isFullHeight?: boolean\n hasBorder?: boolean\n hasBoxShadow?: boolean\n style?: React.CSSProperties\n}\n\nexport const FlexContainerResponsive: React.FC<FlexContainerProps> = ({\n children,\n flexColumn = false,\n centerContent = false,\n hasPadding = false,\n isScrollable = false,\n hasBackground = false,\n isPageContainer = false,\n className,\n}) => (\n <div\n className={cx(\n 'container',\n flexColumn && 'is-column',\n centerContent && 'is-centered',\n hasBackground && 'has-background',\n hasPadding && 'has-padding',\n isScrollable && 'is-scrollable',\n isPageContainer && 'is-page-container',\n className,\n )}\n >\n {children}\n </div>\n)\n\nexport const FlexContainerBasic: React.FC<FlexContainerProps> = ({\n children,\n flexColumn = false,\n centerContent = false,\n hasPadding = false,\n isScrollable = false,\n hasBackground = false,\n isFullHeight = false,\n className,\n id,\n}) => (\n <div\n id={id}\n className={cx(\n 'container-flex',\n isFullHeight && 'is-full-height',\n flexColumn && 'is-column',\n centerContent && 'is-centered',\n hasBackground && 'has-background',\n hasPadding && 'has-padding',\n isScrollable && 'is-scrollable',\n className,\n )}\n >\n {children}\n </div>\n)\n\nexport const AppNavContainer: React.FC<LayoutProps> = ({ children, className, dataTest = '' }) => (\n <div className={cx('app-nav-container', className)} data-test={dataTest}>\n {children}\n </div>\n)\n\nexport const GridFourCol: React.FC<LayoutProps> = ({ children, className, dataTest = '' }) => (\n <div className={cx('columns is-multiline', className)} data-test={dataTest}>\n {children}\n </div>\n)\n\nexport const GridFourColItem: React.FC<LayoutProps> = ({ children, className, dataTest = '' }) => (\n <div\n className={cx(\n 'column is-multiline is-full-mobile is-half-tablet is-one-third-widescreen is-one-quarter-fullhd',\n className,\n )}\n data-test={dataTest}\n >\n {children}\n </div>\n)\n\nexport const GridThreeColItem: React.FC<LayoutProps> = ({ children, className, dataTest = '' }) => (\n <div className={cx('column is-multiline is-half-tablet is-one-third-widescreen', className)} data-test={dataTest}>\n {children}\n </div>\n)\n\nexport const Grid: React.FC<GridProps> = ({\n children,\n isMultiLine = false,\n isVerticalCentered = false,\n isMobile = false,\n className,\n dataTest = '',\n onClick,\n}) => (\n <div\n className={cx(\n 'columns',\n isMultiLine && 'is-multiline',\n isVerticalCentered && 'is-vcentered',\n isMobile && 'is-mobile',\n className,\n )}\n data-test={dataTest}\n onClick={onClick}\n >\n {children}\n </div>\n)\n\nexport const GridItem: React.FC<GridItemProps> = ({\n children,\n isMultiLine = false,\n className,\n dataTest = '',\n onClick,\n}) => (\n <div className={cx('column', isMultiLine && 'is-multiline', className)} data-test={dataTest} onClick={onClick}>\n {children}\n </div>\n)\n\nexport const Level: React.FC<LayoutProps> = ({ children, className, dataTest = '' }) => (\n <div className={cx('level', className)} data-test={dataTest}>\n {children}\n </div>\n)\n\nexport const LevelLeft: React.FC<LayoutProps> = ({ children, className, dataTest = '' }) => (\n <div className={cx('level-left', className)} data-test={dataTest}>\n {children}\n </div>\n)\n\nexport const LevelRight: React.FC<LayoutProps> = ({ children, className, dataTest = '' }) => (\n <div className={cx('level-right', className)} data-test={dataTest}>\n {children}\n </div>\n)\n\nexport const LevelItem: React.FC<LayoutProps> = ({ children, className, dataTest = '' }) => (\n <div className={cx('level-item', className)} data-test={dataTest}>\n {children}\n </div>\n)\n\nexport const Section: React.FC<SectionProps> = ({\n isFlex,\n isCentered,\n isAlignedEnd,\n isAlignedStart,\n isFlexColumn,\n children,\n dataTest = '',\n hasPadding = true,\n hasMargin = true,\n hasBackground = true,\n isFullHeight,\n hasBorder,\n hasBoxShadow,\n className,\n style,\n}) => (\n <section\n className={cx(\n 'section',\n isFlex && 'is-flex',\n isCentered && 'is-centered',\n isAlignedEnd && 'is-aligned-end',\n isAlignedStart && 'is-aligned-start',\n isFlexColumn && 'is-flex-column',\n hasPadding && 'has-padding',\n hasMargin && 'has-margin',\n hasBackground && 'has-background',\n isFullHeight && 'is-full-height',\n hasBorder && 'has-border',\n hasBoxShadow && 'has-box-shadow',\n className,\n )}\n style={style}\n data-test={dataTest}\n >\n {children}\n </section>\n)\n\nexport const Content: React.FC<LayoutProps> = ({ children, className, dataTest = '' }) => (\n <div className={cx('content', className)} data-test={dataTest}>\n {children}\n </div>\n)\n","import * as React from 'react'\nimport { Section } from '../Layout'\n\nexport interface PaginationProps {\n pageNumber?: number\n pageSize?: number\n totalCount?: number\n onChange?: (page: number) => void\n className?: string\n}\n\nexport const generatePagination = (currentPage: number, pageCount: number) => {\n const delta = 2\n\n const range: (number | string)[] = []\n for (let i = Math.max(2, currentPage - delta); i <= Math.min(pageCount - 1, currentPage + delta); i++) {\n range.push(i)\n }\n\n if (currentPage - delta > 2) {\n range.unshift('...')\n }\n if (currentPage + delta < pageCount - 1) {\n range.push('...')\n }\n\n range.unshift(1)\n range.push(pageCount)\n\n return range\n}\n\nexport const Pagination = ({\n onChange,\n pageNumber = 1,\n pageSize = 1,\n totalCount = 1,\n className = '',\n}: PaginationProps) => {\n const maxPage = Math.ceil(totalCount / pageSize)\n if (!maxPage || maxPage < 2) {\n return null\n }\n\n const paginator = generatePagination(pageNumber, maxPage)\n\n return (\n <Section className={className} isFlex isCentered>\n <nav className=\"pagination is-centered\" role=\"navigation\" aria-label=\"pagination\">\n {\n <a\n onClick={(e) => {\n e.preventDefault()\n if (pageNumber >= 2 && onChange) {\n onChange(pageNumber - 1)\n }\n }}\n className={`pagination-previous ${pageNumber < 2 ? 'pagination-disabled' : ''}`}\n >\n Previous\n </a>\n }\n {\n <a\n onClick={(e) => {\n e.preventDefault()\n if (pageNumber + 1 <= maxPage && onChange) {\n onChange(pageNumber + 1)\n }\n }}\n className={`pagination-next ${pageNumber + 1 > maxPage ? 'pagination-disabled' : ''}`}\n >\n Next page\n </a>\n }\n <ul className=\"pagination-list\">\n {paginator.map((pg, i) => {\n if (pg === '...') {\n return (\n <li key={i}>\n <span className=\"pagination-ellipsis has-text-grey\">&hellip;</span>\n </li>\n )\n }\n\n return (\n <li key={i}>\n <a\n className={'pagination-link' + (pg === pageNumber ? ' is-current' : '')}\n onClick={(e) => {\n e.preventDefault()\n if (pg !== pageNumber && onChange) {\n onChange(pg as number)\n }\n }}\n aria-label={`Goto page ${pg}`}\n >\n {pg}\n </a>\n </li>\n )\n })}\n </ul>\n </nav>\n </Section>\n )\n}\n","import { cx } from 'linaria'\nimport * as React from 'react'\n\nexport interface ButtonProps {\n type?: 'submit' | 'reset' | 'button'\n variant?: 'primary' | 'secondary' | 'danger' | 'info' | 'success'\n onClick?: () => void\n disabled?: boolean\n loading?: boolean\n fullWidth?: boolean\n className?: string\n dataTest?: string\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n type = 'button',\n variant = 'primary',\n className = '',\n disabled = false,\n loading = false,\n children,\n fullWidth = false,\n onClick,\n dataTest = '',\n}) => {\n const theme =\n variant === 'primary'\n ? 'is-primary'\n : variant === 'secondary'\n ? 'is-secondary'\n : variant === 'info'\n ? 'is-info'\n : variant === 'success'\n ? 'is-success'\n : 'is-danger'\n\n return (\n <button\n type={type}\n className={`button ${fullWidth ? 'is-fullwidth' : ''} ${loading ? 'is-loading' : ''} ${theme} ${className}`}\n disabled={disabled}\n onClick={onClick}\n data-test={dataTest}\n >\n {children}\n </button>\n )\n}\n\nexport interface ButtonGroupProps {\n className?: string\n hasSpacing?: boolean\n isCentered?: boolean\n}\n/* JB v2 suggestions\n * the classes `is-centered`, and `has-addons` should be incorporated into the `buttons`\n * class, because they are always added by default anyway\n */\nexport const ButtonGroup: React.FC<ButtonGroupProps> = ({\n className = '',\n hasSpacing = false,\n isCentered = false,\n children,\n}) => {\n return (\n <div\n className={cx(\n 'is-centered buttons',\n !hasSpacing && 'has-addons',\n isCentered && 'mx-auto',\n className && className,\n )}\n >\n {children}\n </div>\n )\n}\n","/* istanbul ignore next */\n/**\n * Detect if localStorage is available\n * https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API\n */\nexport const storageAvailable = (type) => {\n let storage\n try {\n storage = window[type]\n const x = '__storage_test__'\n storage.setItem(x, x)\n storage.removeItem(x)\n return true\n } catch (e) {\n return (\n e instanceof DOMException &&\n // everything except Firefox\n (e.code === 22 ||\n // Firefox\n e.code === 1014 ||\n // test name field too, because code might not be present\n // everything except Firefox\n e.name === 'QuotaExceededError' ||\n // Firefox\n e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&\n // acknowledge QuotaExceededError only if there's something already stored\n storage &&\n storage.length !== 0\n )\n }\n}\n","import { storageAvailable } from '../../utils/local-storage/local-storage-check'\nexport const GLOBAL_KEY = '__REAPIT_MARKETPLACE_GLOBALS__'\nexport const LOCALSTORAGE_KEY = '__REAPIT_MARKETPLACE_GLOBALS__'\n\n/**\n * If key is undefined, then return entire object,\n * else return value by key\n */\nexport const getMarketplaceGlobalsByKey = (key?: string) => {\n if (!window || !window[GLOBAL_KEY]) {\n return\n }\n if (key === undefined) {\n return window[GLOBAL_KEY]\n }\n return window[GLOBAL_KEY][key]\n}\n\n/**\n * Used to set data into window.__REAPIT_MARKETPLACE_GLOBALS__ via localStorage and return that object,\n * Append to current existingObject and Overwrite if key is existed\n */\nexport const setMarketplaceGlobalsByKey = (\n keyValueObject: { [key: string]: string } = {},\n): { [key: string]: string } | undefined => {\n if (storageAvailable('localStorage')) {\n const existingObject = JSON.parse(window.localStorage.getItem(LOCALSTORAGE_KEY) as string)\n const globalsObject =\n typeof existingObject === 'object' && existingObject !== null\n ? { ...existingObject, ...keyValueObject }\n : { ...keyValueObject }\n window.localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(globalsObject))\n window[GLOBAL_KEY] = globalsObject\n window.location.reload()\n return globalsObject\n }\n console.log(\"Your browser doesn't support localStorage\")\n return\n}\n\n/**\n * Used to clear localStorage and window globalsObject\n */\nexport const clearMarkeplaceGlobals = () => {\n if (storageAvailable('localStorage')) {\n window.localStorage.removeItem(LOCALSTORAGE_KEY)\n }\n window[GLOBAL_KEY] = undefined\n window.location.reload()\n return true\n}\n\n/**\n * To check if localStorage has globalObject data\n * If has, restore it, otherwise, skip\n */\nexport const restoreGlobalObjectFromLS = (): { [key: string]: string } | boolean | null => {\n if (storageAvailable('localStorage')) {\n const localStorageObject = JSON.parse(window.localStorage.getItem(LOCALSTORAGE_KEY) as string)\n if (typeof localStorageObject === 'object' && localStorageObject !== null) {\n const globalsObject = { ...localStorageObject }\n window[GLOBAL_KEY] = globalsObject\n console.log(`window.${GLOBAL_KEY} is set to`, JSON.parse(JSON.stringify(globalsObject)))\n return globalsObject\n }\n // Clear storage if it's non-object\n window.localStorage.removeItem(LOCALSTORAGE_KEY)\n window[GLOBAL_KEY] = undefined\n return false\n }\n console.log(\"Your browser doesn't support localStorage\")\n return null\n}\n\n/**\n * Used to inject window.desktopMode and window.webMode functions used to switch between mode\n * Call this before initializing state related to LoginMode\n * E.g. If you're using Redux, call this before initializing store,\n * If you're using React without Redux, call this in index.js\n */\nexport const injectSwitchModeToWindow = () => {\n Object.defineProperty(window, 'desktopMode', {\n value: setMarketplaceGlobalsByKey,\n })\n Object.defineProperty(window, 'webMode', {\n value: clearMarkeplaceGlobals,\n })\n // Only restore if window[GLOBAL_KEY] is writable\n // In REAL DESKTOP mode, window.__REAPIT_MARKETPLACE_GLOBALS__ writable is false\n // and this function will not be executed\n if (Object.getOwnPropertyDescriptor(window, GLOBAL_KEY)?.writable === false) {\n return\n }\n restoreGlobalObjectFromLS()\n}\n","import * as React from 'react'\nimport { RouteProps } from 'react-router'\nimport { Link } from 'react-router-dom'\nimport { Location } from 'history'\nimport { getMarketplaceGlobalsByKey } from '../DynamicLinks'\n\nexport interface MenuConfig extends RouteProps {\n defaultActiveKey: string\n currentActiveKey?: string\n mode?: 'DESKTOP' | 'WEB'\n menu: MenuItem[]\n}\n\nexport interface MenuItem {\n type: 'PRIMARY' | 'SECONDARY' | 'LOGO'\n title?: string | React.ReactNode\n key: string\n icon: React.ReactNode\n url?: string\n callback?: () => void\n disabled?: boolean\n}\n\nexport const getActiveItemKey = (menu: MenuItem[] = [], location?: Location<any>): string | null => {\n if (location && location.pathname) {\n const activeItem = menu.find((item) => {\n const isExactRoot = location.pathname === '/' && item.url === '/'\n const isNotRootAndHasCommonPrefix = item.url && item.url !== '/' && location.pathname.startsWith(item.url)\n return isExactRoot || isNotRootAndHasCommonPrefix\n })\n\n if (activeItem && activeItem.url) {\n return activeItem.key\n }\n }\n return null\n}\n\nexport const LinkItem: React.FC<{\n item: MenuItem\n children: React.ReactNode\n activeItemRef?: React.RefObject<HTMLAnchorElement & Link>\n}> = ({ item, children, activeItemRef }) => {\n return item.url ? (\n <Link\n ref={activeItemRef}\n className={`nav-item-link ${\n item.type === 'LOGO' ? 'is-logo' : item.type === 'SECONDARY' ? 'is-secondary' : 'is-primary'\n }`}\n to={item.url}\n >\n {children}\n </Link>\n ) : item.callback ? (\n <a\n ref={activeItemRef}\n className={`nav-item-link ${\n item.type === 'LOGO' ? 'is-logo' : item.type === 'SECONDARY' ? 'is-secondary' : 'is-primary'\n }`}\n onClick={item.callback}\n >\n {children}\n </a>\n ) : (\n <span\n className={`nav-item-link ${\n item.type === 'LOGO' ? 'is-logo' : item.type === 'SECONDARY' ? 'is-secondary' : 'is-primary'\n }`}\n >\n {children}\n </span>\n )\n}\n\nconst MenuComponent: React.FC<MenuConfig> = ({\n menu,\n location,\n mode: modeProp,\n defaultActiveKey,\n currentActiveKey,\n}) => {\n const ownMode = getMarketplaceGlobalsByKey() ? 'DESKTOP' : 'WEB'\n // if pass mode, take that value\n // otherwise auto-detect\n const mode = modeProp ?? ownMode\n const activeItem = getActiveItemKey(menu, location)\n const [activeKey, setIsActive] = React.useState(activeItem || defaultActiveKey)\n const activeItemRef = React.createRef<HTMLAnchorElement & Link>()\n\n React.useEffect(() => {\n setIsActive(currentActiveKey || activeItem || defaultActiveKey)\n }, [activeItem, currentActiveKey])\n\n // Auto scroll to the position of active item\n React.useEffect(() => {\n const element = activeItemRef.current\n if (element) {\n element.scrollIntoView()\n }\n }, [activeKey])\n\n return (\n <nav className={`nav-bar ${mode === 'DESKTOP' ? 'is-desktop' : ''}`}>\n <ul>\n {menu.map((item: MenuItem) => {\n return item.disabled ? null : (\n <LinkItem activeItemRef={activeKey === item.key ? activeItemRef : undefined} key={item.key} item={item}>\n <li\n className={`nav-item ${activeKey === item.key ? 'is-active' : ''}`}\n onClick={() => item.type !== 'LOGO' && setIsActive(item.key)}\n >\n <div className=\"nav-item-icon\">{item.icon}</div>\n {item.title && <div className=\"nav-item-title\">{item.title}</div>}\n </li>\n </LinkItem>\n )\n })}\n </ul>\n </nav>\n )\n}\n\nexport const Menu = React.memo(MenuComponent)\n","import { styled } from 'linaria/react'\n\nexport const CardHeading = styled.h5`\n font-size: 20px;\n line-height: 24px;\n min-height: 3.5rem;\n`\n\nexport const CardSubHeading = styled.h6`\n color: #646464;\n`\n\nexport const CardSubHeadingAdditional = styled.h6`\n color: #646464;\n font-weight: bold;\n height: 1rem;\n margin-bottom: 2rem;\n`\n\nexport const CardBodyWrap = styled.div`\n p,\n div,\n section {\n color: #646464;\n }\n`\n\nexport const CardImageWrap = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n background-color: #f2f2f2;\n padding: 1rem;\n margin-right: 1rem;\n\n img {\n min-height: 72px;\n }\n`\n","export interface AddressModel {\n buildingName?: string\n buildingNumber?: string\n line1?: string\n line2?: string\n line3?: string\n line4?: string\n postcode?: string\n country?: string\n geolocation?: GeolocationModel\n}\n\nexport interface GeolocationModel {\n latitude?: number\n longitude?: number\n}\n\nexport const combineAddress = (address: AddressModel | undefined): string => {\n let addressCombined = ''\n if (!address) {\n return addressCombined\n }\n if (address.buildingNumber) {\n addressCombined = addressCombined.concat(`${address.buildingNumber}`)\n }\n if (address.buildingName) {\n addressCombined = addressCombined.concat(` ${address.buildingName}`)\n }\n if (address.line1) {\n addressCombined = addressCombined.concat(` ${address.line1}`)\n }\n if (address.line2) {\n addressCombined = addressCombined.concat(` ${address.line2}`)\n }\n if (address.line3) {\n addressCombined = addressCombined.concat(` ${address.line3}`)\n }\n if (address.line4) {\n addressCombined = addressCombined.concat(` ${address.line4}`)\n }\n if (address.postcode) {\n addressCombined = addressCombined.concat(` ${address.postcode}`)\n }\n if (address.country) {\n addressCombined = addressCombined.concat(` ${address.country}`)\n }\n return addressCombined\n}\n","import React from 'react'\n\nexport interface IconProps {\n className?: string\n}\n\nexport const ReapitHouseIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"50\" height=\"50\" viewBox=\"0 0 50 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path d=\"M3.55017 20.2106L23.9757 0.470581L44.4012 20.2106V47.4706H3.55017V20.2106Z\" fill=\"#31448F\" />\n <path d=\"M3.55017 20.2106L23.9757 0.470581L44.4012 20.2106V35.7206L3.55017 20.2106Z\" fill=\"#7BC9EB\" />\n <path d=\"M44.4012 47.4706H32.4448L15.5066 8.65546L23.9757 0.470581L44.4012 20.2106V47.4706Z\" fill=\"#0061A8\" />\n <path\n d=\"M44.4012 20.2106V35.7206L23.9757 28.063L15.5066 8.65546L23.9757 0.470581L44.4012 20.2106Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const AnalyticsIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M9.70831 25.3318C9.54255 25.3318 9.38358 25.3976 9.26637 25.5148C9.14916 25.6321 9.08331 25.791 9.08331 25.9568V31.3735H12.8333V25.9568C12.8333 25.791 12.7675 25.6321 12.6503 25.5148C12.533 25.3976 12.3741 25.3318 12.2083 25.3318H9.70831Z\"\n fill=\"white\"\n />\n <path\n d=\"M15.9583 23.6653C15.7926 23.6653 15.6336 23.7311 15.5164 23.8483C15.3992 23.9656 15.3333 24.1245 15.3333 24.2903V31.3736H19.0833V24.2903C19.0833 24.1245 19.0175 23.9656 18.9003 23.8483C18.783 23.7311 18.6241 23.6653 18.4583 23.6653H15.9583Z\"\n fill=\"white\"\n />\n <path\n d=\"M22.2083 20.3318C22.0426 20.3318 21.8836 20.3976 21.7664 20.5148C21.6492 20.6321 21.5833 20.791 21.5833 20.9568V31.3735H25.3333V20.9568C25.3333 20.791 25.2675 20.6321 25.1503 20.5148C25.033 20.3976 24.8741 20.3318 24.7083 20.3318H22.2083Z\"\n fill=\"white\"\n />\n <path\n d=\"M28.4583 15.3318C28.2926 15.3318 28.1336 15.3976 28.0164 15.5148C27.8992 15.6321 27.8333 15.791 27.8333 15.9568V31.3735H31.5833V15.9568C31.5833 15.791 31.5175 15.6321 31.4003 15.5148C31.283 15.3976 31.1241 15.3318 30.9583 15.3318H28.4583Z\"\n fill=\"white\"\n />\n <path\n d=\"M32.625 31.9985H7.625C7.45924 31.9985 7.30027 32.0644 7.18306 32.1816C7.06585 32.2988 7 32.4578 7 32.6235C7 32.7893 7.06585 32.9483 7.18306 33.0655C7.30027 33.1827 7.45924 33.2485 7.625 33.2485H32.625C32.7908 33.2485 32.9497 33.1827 33.0669 33.0655C33.1842 32.9483 33.25 32.7893 33.25 32.6235C33.25 32.4578 33.1842 32.2988 33.0669 32.1816C32.9497 32.0644 32.7908 31.9985 32.625 31.9985Z\"\n fill=\"white\"\n />\n <path\n d=\"M9.08331 22.6234C9.08331 22.7892 9.14916 22.9482 9.26637 23.0654C9.38358 23.1826 9.54255 23.2484 9.70831 23.2484C13.0216 23.2484 17.9464 21.2908 22.5608 18.1396C24.8095 16.6038 26.8067 14.8951 28.3369 13.1982C29.4009 12.0179 30.2223 10.8692 30.794 9.7639L31.1815 11.5088C31.3834 12.3119 32.5606 12.0436 32.4017 11.2377L31.5684 7.4877C31.5482 7.40082 31.5099 7.3192 31.4558 7.24826C31.4018 7.17731 31.3333 7.11865 31.2548 7.07615C31.1764 7.03365 31.0899 7.00828 31.0009 7.00171C30.912 6.99514 30.8226 7.00754 30.7388 7.03806L27.4055 8.28806C27.3286 8.31689 27.2582 8.36056 27.1983 8.4166C27.1383 8.47264 27.0899 8.53994 27.056 8.61466C26.9874 8.76557 26.9816 8.93754 27.0398 9.09275C27.098 9.24796 27.2155 9.37368 27.3664 9.44227C27.5173 9.51086 27.6893 9.51669 27.8445 9.45848L29.9282 8.67723C28.7465 11.3283 25.8333 14.3911 21.8558 17.1073C17.5052 20.0785 12.7369 21.9984 9.70831 21.9984C9.54255 21.9984 9.38358 22.0643 9.26637 22.1815C9.14916 22.2987 9.08331 22.4577 9.08331 22.6234Z\"\n fill=\"white\"\n />\n <path\n d=\"M7.73593 14.515L8.58161 14.6192L8.8639 15.2977L8.34078 15.9656C8.29363 16.0258 8.27019 16.1012 8.2749 16.1775C8.2796 16.2538 8.31212 16.3258 8.3663 16.3797L9.86796 17.8748C9.92182 17.9285 9.99339 17.9607 10.0693 17.9653C10.1451 17.97 10.2201 17.9469 10.2802 17.9003L10.9523 17.3784L11.6359 17.6601L11.7404 18.5009C11.7498 18.5765 11.7865 18.6461 11.8436 18.6965C11.9007 18.747 11.9743 18.7748 12.0505 18.7748H14.1741C14.2503 18.7748 14.3239 18.747 14.381 18.6966C14.4381 18.6461 14.4748 18.5766 14.4842 18.5009L14.5885 17.6601L15.2721 17.3782L15.9443 17.9001C16.0043 17.9467 16.0793 17.9698 16.1551 17.9652C16.231 17.9605 16.3025 17.9283 16.3564 17.8747L17.8581 16.3796C17.9123 16.3256 17.9448 16.2537 17.9495 16.1774C17.9542 16.1011 17.9308 16.0257 17.8836 15.9655L17.3605 15.2976L17.6428 14.619L18.4885 14.5148C18.5642 14.5055 18.6339 14.4689 18.6844 14.4117C18.7349 14.3546 18.7628 14.281 18.7628 14.2047V12.0901C18.7628 12.0138 18.7349 11.9402 18.6844 11.8831C18.6339 11.8259 18.5642 11.7893 18.4885 11.78L17.6428 11.6758L17.3605 10.9973L17.8839 10.3297C17.931 10.2695 17.9544 10.1941 17.9497 10.1178C17.945 10.0415 17.9125 9.96953 17.8583 9.91558L16.3566 8.42052C16.3027 8.3669 16.2312 8.33475 16.1553 8.33008C16.0795 8.32541 16.0045 8.34855 15.9445 8.39516L15.2723 8.91703L14.5885 8.63506L14.4844 7.79422C14.475 7.7186 14.4383 7.64902 14.3812 7.59857C14.324 7.54811 14.2505 7.52027 14.1743 7.52026H12.0505C11.9743 7.52027 11.9007 7.54811 11.8436 7.59857C11.7865 7.64902 11.7498 7.7186 11.7404 7.79422L11.6359 8.63506L10.9523 8.91698L10.2802 8.39511C10.2201 8.34848 10.1451 8.32533 10.0693 8.33C9.9934 8.33467 9.92183 8.36684 9.86796 8.42047L8.3663 9.91558C8.3121 9.96953 8.27958 10.0415 8.27487 10.1178C8.27017 10.1941 8.29362 10.2695 8.34078 10.3297L8.8639 10.9976L8.58161 11.6761L7.73593 11.7803C7.66024 11.7896 7.59056 11.8263 7.54003 11.8834C7.4895 11.9405 7.46161 12.0142 7.46161 12.0904V14.205C7.46165 14.2812 7.48956 14.3548 7.54008 14.4119C7.59061 14.469 7.66026 14.5057 7.73593 14.515ZM11.9718 12.0143C12.1218 11.8649 12.2997 11.7466 12.4954 11.666C12.6911 11.5855 12.9008 11.5442 13.1124 11.5447C13.955 11.5182 14.7508 12.2853 14.7247 13.1479C14.7252 13.3587 14.6837 13.5674 14.6027 13.7621C14.5217 13.9567 14.4028 14.1332 14.253 14.2815C13.9496 14.5823 13.5397 14.751 13.1125 14.751C12.6853 14.751 12.2753 14.5823 11.972 14.2815C11.8225 14.1329 11.7038 13.9563 11.6229 13.7618C11.5419 13.5672 11.5002 13.3586 11.5002 13.1479C11.5002 12.9371 11.5419 12.7285 11.6229 12.534C11.7038 12.3394 11.8223 12.1628 11.9718 12.0143Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const ApiIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M28.5436 11.8906C28.1144 7.46804 24.3759 4 19.8425 4C15.3093 4 11.5711 7.4681 11.1414 11.8906C8.23879 12.3034 6 14.8051 6 17.8198C6 21.1222 8.68674 23.8089 11.9891 23.8089H18.931V17.1381L17.725 18.344C17.3691 18.6999 16.792 18.6999 16.436 18.344C16.0801 17.9881 16.0801 17.411 16.436 17.0551L19.198 14.293C19.5539 13.9371 20.1311 13.9371 20.487 14.293L23.2491 17.0551C23.6051 17.411 23.6051 17.9881 23.2491 18.344C23.0711 18.522 22.8379 18.611 22.6046 18.611C22.3713 18.611 22.138 18.522 21.9601 18.344L20.7539 17.1378V23.809H27.6959C30.9983 23.809 33.6849 21.1222 33.6849 17.8199C33.6849 14.8051 31.4462 12.3034 28.5436 11.8906Z\"\n fill=\"white\"\n />\n <path\n d=\"M22.2288 25.6318H17.4564C17.4674 26.9386 18.5334 27.9983 19.8426 27.9983C21.1518 27.9983 22.2178 26.9386 22.2288 25.6318Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M19.8425 29.7301C17.5588 29.7301 15.6952 27.9015 15.6358 25.6318H9.112C9.15125 25.986 9.20503 26.3382 9.27588 26.6859C9.36241 27.1105 9.73574 27.4154 10.169 27.4154H11.8173C11.865 27.5382 11.9155 27.6599 11.9688 27.7804L10.8029 28.9462C10.4965 29.2526 10.4481 29.7324 10.6874 30.0937C11.1267 30.7576 11.6361 31.3809 12.2015 31.9462C12.7674 32.5121 13.3907 33.0216 14.0542 33.4603C14.4154 33.6995 14.8951 33.651 15.2015 33.3447L16.3672 32.1789C16.4877 32.2322 16.6094 32.2827 16.7323 32.3304V33.9787C16.7323 34.4119 17.0373 34.7852 17.4618 34.8718C18.2412 35.0305 19.0422 35.1111 19.8425 35.1111C20.6428 35.1111 21.4438 35.0306 22.2233 34.8718C22.6479 34.7852 22.9529 34.4119 22.9529 33.9787L22.9528 32.3304C23.0757 32.2827 23.1974 32.2322 23.3179 32.179L24.4834 33.3445C24.7897 33.6507 25.2693 33.6991 25.6306 33.4603C26.2938 33.0217 26.9173 32.5122 27.4835 31.9459C28.0494 31.38 28.5588 30.7568 28.9976 30.0934C29.2366 29.7321 29.1883 29.2524 28.8819 28.9461L27.7163 27.7805C27.7696 27.6601 27.8202 27.5383 27.8679 27.4154H29.5158C29.949 27.4154 30.3224 27.1104 30.4089 26.6858C30.4797 26.3382 30.5336 25.986 30.5728 25.6318H24.0493C23.99 27.9016 22.1264 29.7301 19.8425 29.7301Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const AppsIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <rect x=\"13.2\" y=\"7\" width=\"15\" height=\"27\" fill=\"white\" />\n <path\n d=\"M23.3583 8.41675H20.4583C20.0577 8.41675 19.7333 8.74107 19.7333 9.14175C19.7333 9.54242 20.0577 9.86675 20.4583 9.86675H23.3583C23.759 9.86675 24.0833 9.54242 24.0833 9.14175C24.0833 8.74107 23.759 8.41675 23.3583 8.41675Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M26.5 6H14.9C13.3011 6 12 7.30115 12 8.9V32.1C12 33.6989 13.3011 35 14.9 35H26.5C28.0989 35 29.4 33.6989 29.4 32.1V8.9C29.4 7.30115 28.0989 6 26.5 6ZM27.95 32.1C27.95 32.9009 27.3009 33.55 26.5 33.55H14.9C14.0991 33.55 13.45 32.9009 13.45 32.1V8.9C13.45 8.0991 14.0991 7.45 14.9 7.45H26.5C27.3009 7.45 27.95 8.0991 27.95 8.9V32.1Z\"\n fill=\"white\"\n />\n <path\n d=\"M20.7 32.5834C21.5008 32.5834 22.15 31.9342 22.15 31.1334C22.15 30.3325 21.5008 29.6833 20.7 29.6833C19.8992 29.6833 19.25 30.3325 19.25 31.1334C19.25 31.9342 19.8992 32.5834 20.7 32.5834Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M18.0417 9.86675C18.4421 9.86675 18.7667 9.54215 18.7667 9.14175C18.7667 8.74134 18.4421 8.41675 18.0417 8.41675C17.6413 8.41675 17.3167 8.74134 17.3167 9.14175C17.3167 9.54215 17.6413 9.86675 18.0417 9.86675Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M34.6411 17.5394C34.4178 16.1104 33.179 15.0137 31.6883 15.0137C31.1275 15.0137 30.5886 15.1688 30.1212 15.4582C29.4101 14.2632 28.13 13.5195 26.7078 13.5195C24.5109 13.5195 22.7234 15.307 22.7234 17.5039C22.7234 17.5175 22.7234 17.5316 22.7239 17.5452C21.312 17.7831 20.2 19.0141 20.2 20.4922C20.2 22.14 21.5737 23.4805 23.2215 23.4805H34.1785C35.8264 23.4805 37.2 22.14 37.2 20.4922C37.2 19.0015 36.07 17.7627 34.6411 17.5394Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const DesktopIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M7.21594 10.1156L10.0532 8.89966H29.9142L32.3461 10.1156V24.7074L30.3195 26.3287L9.24257 26.734L7.21594 24.7074V10.1156Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M9.22994 27.3796C7.44895 27.3796 6 25.9306 6 24.1497H7.77573H31.7864H33.5621C33.5621 25.9306 32.1132 27.3796 30.3322 27.3796H20.8577V29.5329H26.4563V31.3086H13.1059V29.5329H18.7044V27.3796H9.22994Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M9.22994 8H30.3322C32.1132 8 33.5621 9.44895 33.5621 11.2299V24.1497H31.7864H7.77573H6V11.2299C6 9.44895 7.44895 8 9.22994 8Z\"\n fill=\"white\"\n />\n </svg>\n)\n\nexport const DocsIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M10.9772 10H10.975C10.7291 10 10.4979 10.0976 10.3232 10.2749C10.1466 10.4543 10.0494 10.693 10.0494 10.9472V25.1503C10.0494 25.6711 10.4672 26.0958 10.9809 26.0972C13.1465 26.1024 16.7748 26.562 19.2778 29.2286V14.3647C19.2778 14.1881 19.2335 14.0223 19.1499 13.885C17.0956 10.5169 13.1478 10.0052 10.9772 10Z\"\n fill=\"white\"\n />\n <path\n d=\"M29.9507 25.1503V10.9472C29.9507 10.693 29.8535 10.4543 29.6769 10.2749C29.5022 10.0976 29.2708 10 29.0251 10C29.0243 10 29.0236 10 29.0229 10C26.8524 10.0053 22.9046 10.517 20.8502 13.8851C20.7666 14.0224 20.7224 14.1882 20.7224 14.3648V29.2286C23.2254 26.562 26.8536 26.1024 29.0193 26.0972C29.5329 26.0958 29.9507 25.6711 29.9507 25.1503Z\"\n fill=\"white\"\n />\n <path\n d=\"M32.0698 13.2751H31.3952V25.15C31.3952 26.4798 30.3309 27.5641 29.0227 27.5674C27.1858 27.5719 24.157 27.9375 22.012 30.0044C25.7218 29.0796 29.6327 29.6808 31.8615 30.1979C32.1398 30.2624 32.4274 30.1957 32.6504 30.0148C32.8726 29.8343 33 29.5646 33 29.275V14.2222C33.0001 13.7 32.5827 13.2751 32.0698 13.2751Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M8.60483 25.15V13.2751H7.93023C7.4174 13.2751 7 13.7 7 14.2222V29.2747C7 29.5644 7.12746 29.8341 7.34964 30.0145C7.57244 30.1954 7.85975 30.2623 8.13849 30.1976C10.3673 29.6804 14.2783 29.0794 17.988 30.0041C15.843 27.9374 12.8142 27.5718 10.9773 27.5673C9.66917 27.5641 8.60483 26.4798 8.60483 25.15Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const HelpIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M20.0002 7C12.8228 7 7 12.8155 7 19.9934C7 27.1782 12.8228 33.0004 20.0002 33.0004C27.1815 33.0004 32.9994 27.1781 32.9994 19.9934C32.9995 12.8155 27.1815 7 20.0002 7Z\"\n fill=\"white\"\n />\n <path\n d=\"M20.92 27.5779C20.6204 27.8588 20.2733 28 19.88 28C19.4731 28 19.1182 27.8613 18.8152 27.5835C18.5118 27.3062 18.3598 26.9179 18.3598 26.419C18.3598 25.9764 18.5069 25.6039 18.8002 25.3021C19.0934 25.0002 19.4532 24.8492 19.88 24.8492C20.3 24.8492 20.6534 25.0002 20.9404 25.3021C21.2269 25.6039 21.3706 25.9764 21.3706 26.419C21.37 26.9107 21.22 27.2971 20.92 27.5779ZM24.6552 17.7745C24.425 18.2242 24.1517 18.612 23.8346 18.939C23.5185 19.2659 22.95 19.8154 22.1294 20.588C21.9031 20.806 21.7211 20.9973 21.5847 21.162C21.4482 21.3273 21.3463 21.4782 21.2797 21.6153C21.2127 21.7524 21.1613 21.8896 21.1248 22.0267C21.0884 22.1633 21.0336 22.4043 20.9593 22.7486C20.8331 23.4792 20.4364 23.8445 19.7697 23.8445C19.423 23.8445 19.1317 23.7253 18.8943 23.4863C18.6578 23.2474 18.5398 22.8928 18.5398 22.4221C18.5398 21.8322 18.6268 21.3211 18.8001 20.8888C18.9725 20.4564 19.2031 20.0773 19.4896 19.7504C19.7765 19.4235 20.163 19.0356 20.65 18.5859C21.0768 18.1924 21.3851 17.8957 21.5749 17.6956C21.7652 17.4951 21.925 17.272 22.0546 17.0264C22.1853 16.7803 22.2494 16.5137 22.2494 16.2257C22.2494 15.6634 22.0518 15.1897 21.6546 14.8034C21.2579 14.4171 20.7461 14.2237 20.1193 14.2237C19.3857 14.2237 18.8458 14.4186 18.4991 14.8085C18.1524 15.1983 17.8597 15.7724 17.6193 16.5312C17.3921 17.3253 16.9619 17.7222 16.3293 17.7222C15.9559 17.7222 15.6408 17.5836 15.3839 17.3062C15.1276 17.0289 14.9994 16.7286 14.9994 16.4053C14.9994 15.7381 15.2028 15.0617 15.6092 14.3766C16.0161 13.6915 16.6094 13.1241 17.3897 12.6749C18.1694 12.2251 19.0798 12 20.1193 12C21.086 12 21.9391 12.1883 22.6791 12.5643C23.419 12.9399 23.9909 13.451 24.3944 14.0977C24.7974 14.7439 24.9994 15.4464 24.9994 16.2052C25.0003 16.8013 24.8853 17.3247 24.6552 17.7745Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const MarketplaceIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M33.8424 15.4924L29.4674 9.3675C29.2924 9.14 29.0299 9 28.7499 9H11.2501C10.9701 9 10.7076 9.14 10.5326 9.3675L6.15764 15.4924C6.10514 15.6499 6.05264 15.8074 6.00014 15.9649C5.98264 17.9074 7.55763 19.4999 9.50011 19.4999C10.5501 19.4999 11.4776 19.0449 12.1251 18.3099C12.7726 19.0449 13.7001 19.4999 14.7501 19.4999C15.8 19.4999 16.7275 19.0449 17.375 18.3099C18.0225 19.0449 18.95 19.4999 20 19.4999C21.05 19.4999 21.9775 19.0449 22.625 18.3099C23.2725 19.0449 24.2 19.4999 25.2499 19.4999C26.2999 19.4999 27.2274 19.0449 27.8749 18.3099C28.5224 19.0449 29.4499 19.4999 30.4999 19.4999C32.4424 19.4999 34.0174 17.9074 33.9999 15.9649C33.9474 15.8074 33.8949 15.6499 33.8424 15.4924Z\"\n fill=\"white\"\n />\n <path\n d=\"M30.4999 21.25C29.5706 21.25 28.6659 21.0015 27.8749 20.543C26.2929 21.4582 24.2069 21.4582 22.625 20.543C21.043 21.4582 18.9553 21.4582 17.375 20.543C15.7948 21.4582 13.7053 21.4582 12.1251 20.543C10.8108 21.306 9.18336 21.404 7.75012 20.9087V29.9999C7.75012 30.9658 8.53411 31.7498 9.5001 31.7498H23.5V22.9999H28.7499V31.7498H30.4999C31.4659 31.7498 32.2499 30.9658 32.2499 29.9999V20.9297C31.6934 21.1275 31.1071 21.25 30.4999 21.25ZM18.25 28.2499H11.2501V22.9999H18.25V28.2499Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const AccountIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M33 30.6117V32.4117C33 33.2873 32.2874 33.9999 31.4118 33.9999H7.58824C6.71259 33.9999 6 33.2873 6 32.4117V30.6117C6 29.736 6.71259 29.0234 7.58824 29.0234H31.4118C32.2874 29.0234 33 29.736 33 30.6117Z\"\n fill=\"white\"\n />\n <path\n d=\"M8.5412 17.3765V27.4353H30.4588C30.4588 26.9813 30.4588 17.8724 30.4588 17.3765H25.4824V25.6353H21.9883V17.3765H17.0118V25.6353H13.5177V17.3765H8.5412Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M6.79442 15.7882H32.2062C33.0182 15.7882 33.3058 14.7045 32.5977 14.3032L19.8918 7.10324C19.649 6.96559 19.3516 6.96559 19.1088 7.10324L6.40292 14.3032C5.69647 14.7035 5.98045 15.7882 6.79442 15.7882V15.7882Z\"\n fill=\"white\"\n />\n </svg>\n)\n\nexport const WebhooksIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M19.9998 13.7891C17.5766 13.7891 15.6052 11.8177 15.6052 9.39453C15.6052 6.97139 17.5766 5 19.9998 5C22.4229 5 24.3943 6.97139 24.3943 9.39453C24.3943 11.8177 22.4229 13.7891 19.9998 13.7891Z\"\n fill=\"white\"\n />\n <path\n d=\"M5.58791 30.1075C4.37631 28.009 5.09789 25.3161 7.19643 24.1045C9.29508 22.8929 11.9879 23.6145 13.1995 25.713C14.4139 27.8164 13.6946 30.5015 11.591 31.716C9.47912 32.9353 6.79178 32.1927 5.58791 30.1075Z\"\n fill=\"white\"\n />\n <path\n d=\"M28.4085 31.7161C26.3051 30.5017 25.5855 27.8166 26.8 25.713C28.0115 23.6145 30.7046 22.8929 32.803 24.1045C34.9015 25.316 35.6231 28.009 34.4115 30.1075C33.2054 32.1966 30.5157 32.9326 28.4085 31.7161Z\"\n fill=\"white\"\n />\n <path\n d=\"M8.59148 21.1185L6.8363 21.0219C6.95103 18.9383 7.56873 16.888 8.62265 15.0926C9.6474 13.3468 11.0845 11.8368 12.7785 10.7258L13.7425 12.1957C10.7154 14.181 8.78982 17.5166 8.59148 21.1185Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M31.408 21.1185C31.2097 17.5166 29.284 14.181 26.257 12.1957L27.2209 10.7258C28.915 11.8368 30.3521 13.3468 31.3768 15.0926C32.4307 16.888 33.0484 18.9383 33.1632 21.0219L31.408 21.1185Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M19.9998 35.0001C17.9094 35.0001 15.9099 34.5249 14.0569 33.5877L14.8503 32.019C16.455 32.8307 18.1876 33.2423 19.9998 33.2423C21.8119 33.2423 23.5445 32.8307 25.1492 32.0191L25.9426 33.5877C24.0896 34.5249 22.0901 35.0001 19.9998 35.0001Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const NoIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M31.5376 16.2002L27.7039 12.3665V7.93803C27.7039 7.1373 27.055 6.48836 26.2531 6.48836C25.453 6.48836 24.8042 7.1373 24.8042 7.93803V9.46685L21.9497 6.61229C20.5384 5.20178 18.0847 5.20428 16.6766 6.61484L7.09108 16.2002C6.52522 16.7672 6.52522 17.6846 7.09108 18.2507C7.65719 18.8175 8.57639 18.8175 9.1423 18.2507L18.7269 8.66509C19.0392 8.35449 19.5895 8.35449 19.9001 8.66417L29.4864 18.2507C29.7706 18.5341 30.1412 18.6751 30.5117 18.6751C30.883 18.6751 31.2542 18.534 31.5376 18.2507C32.1037 17.6846 32.1037 16.7672 31.5376 16.2002Z\"\n fill=\"white\"\n />\n <path\n d=\"M19.8179 11.417C19.5394 11.1387 19.0885 11.1387 18.8108 11.417L10.3794 19.846C10.2462 19.979 10.1708 20.1607 10.1708 20.3503V26.4981C10.1708 27.9407 11.3405 29.1104 12.7831 29.1104H16.9575V22.6456H21.6704V29.1104H25.8448C27.2874 29.1104 28.4571 27.9407 28.4571 26.4981V20.3503C28.4571 20.1607 28.3823 19.979 28.2485 19.846L19.8179 11.417Z\"\n fill=\"white\"\n />\n <path\n d=\"M32.9525 31.5684L28.8021 27.4162L31.83 25.6663C32.0074 25.5637 32.1106 25.3689 32.0958 25.1645C32.0811 24.9601 31.9509 24.7821 31.7606 24.7063L18.9691 19.6031C18.7705 19.5238 18.5439 19.5704 18.3927 19.7216C18.2415 19.8727 18.1949 20.0994 18.274 20.2979L23.3748 33.0952C23.4507 33.2856 23.6287 33.4159 23.8331 33.4306C24.0376 33.4457 24.2325 33.3422 24.335 33.1647L26.0837 30.1362L30.2337 34.2879C30.334 34.3883 30.4701 34.4446 30.612 34.4446C30.7539 34.4446 30.89 34.3882 30.9904 34.2879L32.9524 32.3246C33.1613 32.1158 33.1613 31.7772 32.9525 31.5684Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const ProfileIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M20 6C12.2688 6 6 12.2676 6 19.9994C6 27.7312 12.2682 33.9988 20 33.9988C27.7324 33.9988 34 27.7312 34 19.9994C34 12.2676 27.7324 6 20 6Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M20 6C12.2688 6 6 12.2676 6 19.9994C6 27.7312 12.2682 33.9988 20 33.9988C27.7324 33.9988 34 27.7312 34 19.9994C34 12.2676 27.7324 6 20 6ZM20 10.186C22.5582 10.186 24.6312 12.2596 24.6312 14.8166C24.6312 17.3742 22.5582 19.4472 20 19.4472C17.443 19.4472 15.37 17.3742 15.37 14.8166C15.37 12.2596 17.443 10.186 20 10.186ZM19.9969 30.3386C17.4455 30.3386 15.1087 29.4094 13.3062 27.8714C12.8672 27.4969 12.6138 26.9477 12.6138 26.3715C12.6138 23.7783 14.7126 21.7028 17.3065 21.7028H22.6947C25.2892 21.7028 27.38 23.7783 27.38 26.3715C27.38 26.9483 27.1279 27.4963 26.6882 27.8708C24.8864 29.4094 22.549 30.3386 19.9969 30.3386Z\"\n fill=\"white\"\n />\n </svg>\n)\n\nexport const PaymentsIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M13.0759 12.7509L23.4409 9.92174L22.892 8.81225C22.5328 8.09108 21.6569 7.79327 20.9358 8.1524L11.6569 12.7509H13.0759Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M26.6584 10.0037C26.5299 10.0037 26.4014 10.0212 26.273 10.0562L23.838 10.7219L16.4014 12.7511H24.8423H28.5211L28.0657 11.081C27.8905 10.4299 27.3007 10.0037 26.6584 10.0037Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M30.0424 13.7729H29.7095H29.257H28.8044H25.3504H12.6584H10.9942H9.5927H9.33285H8.46278C8.00146 13.7729 7.58978 13.9861 7.32117 14.3219C7.19854 14.4766 7.10511 14.6547 7.05255 14.8503C7.02044 14.973 7 15.1014 7 15.2328V15.408V17.0722V31.4985C7 32.3044 7.65402 32.9584 8.45986 32.9584H30.0394C30.8453 32.9584 31.4993 32.3044 31.4993 31.4985V27.4255H22.8365C21.4672 27.4255 20.3548 26.3131 20.3548 24.9438V23.6065V23.154V22.7014V21.697C20.3548 21.0255 20.6233 20.4153 21.0584 19.9686C21.4438 19.5715 21.9606 19.3029 22.5387 19.2357C22.6351 19.2241 22.7343 19.2182 22.8336 19.2182H30.2847H30.7372H31.1898H31.4993V15.2328C31.5022 14.427 30.8482 13.7729 30.0424 13.7729Z\"\n fill=\"white\"\n />\n <path\n d=\"M32.5241 20.6134C32.3781 20.4791 32.2058 20.3769 32.0131 20.3098C31.8642 20.2602 31.7065 20.231 31.5401 20.231H31.5022H31.473H31.0204H29.3883H22.8364C22.0306 20.231 21.3766 20.8849 21.3766 21.6908V22.4178V22.8703V23.3229V24.9404C21.3766 25.7463 22.0306 26.4003 22.8364 26.4003H31.5022H31.5401C31.7065 26.4003 31.8642 26.3711 32.0131 26.3214C32.2058 26.2572 32.3781 26.1521 32.5241 26.0178C32.816 25.7521 33 25.3667 33 24.9405V21.6908C33 21.2645 32.816 20.8791 32.5241 20.6134ZM25.8846 23.6061C25.8846 24.009 25.5576 24.336 25.1547 24.336H24.67C24.2671 24.336 23.9401 24.009 23.9401 23.6061V23.1214C23.9401 22.8879 24.0481 22.6805 24.2204 22.5491C24.3459 22.4528 24.5007 22.3915 24.67 22.3915H24.7927H25.1547C25.5576 22.3915 25.8846 22.7185 25.8846 23.1214V23.6061Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const SearchIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M25.3899 9.32253C20.9601 4.89277 13.7521 4.89286 9.32227 9.32253C4.89242 13.7524 4.89242 20.9602 9.32227 25.39C13.0804 29.1481 18.6697 29.7173 23.0343 27.099C23.0343 27.099 23.3498 26.911 23.6037 27.165C25.0527 28.6141 29.4002 32.9616 29.4002 32.9616C30.5539 34.1153 32.1672 34.39 33.1905 33.3668L33.3665 33.1907C34.3898 32.1675 34.1152 30.5542 32.9615 29.4005C32.9615 29.4005 28.6231 25.0622 27.1771 23.6161C26.9109 23.3499 27.099 23.0345 27.099 23.0345C29.7171 18.67 29.148 13.0807 25.3899 9.32253ZM23.2923 23.2925C20.0191 26.5657 14.6933 26.5656 11.4201 23.2924C8.14695 20.0192 8.14686 14.6934 11.4201 11.4202C14.6932 8.14704 20.0191 8.14704 23.2923 11.4202C26.5653 14.6935 26.5653 20.0192 23.2923 23.2925Z\"\n fill=\"white\"\n />\n <path\n d=\"M16.6821 22.5678C16.6821 22.7202 16.6522 22.875 16.5891 23.0243C16.3368 23.6206 15.6487 23.8996 15.0523 23.6472C11.3037 22.061 9.54447 17.7208 11.1307 13.9722C11.3831 13.3759 12.0712 13.0969 12.6676 13.3493C13.264 13.6018 13.5428 14.2896 13.2905 14.8862C12.2083 17.4438 13.4086 20.4052 15.9661 21.4874C16.4134 21.6767 16.6821 22.1109 16.6821 22.5678Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const ManageIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M25.6627 7.48678H23.4494C23.4494 5.56109 21.905 4 20 4C18.095 4 16.5506 5.56109 16.5506 7.48678H14.3373V11.9565H25.6627V7.48678H25.6627Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M27.434 7.48682V13.747H12.566V7.48682H9V31.557C9 33.2139 10.3431 34.557 12 34.557H28C29.6569 34.557 31 33.2139 31 31.557V7.48682H27.434ZM20 31.9021C15.9497 31.9021 12.6546 28.5712 12.6546 24.477C12.6546 20.3829 15.9498 17.052 20 17.052C24.0502 17.052 27.3454 20.3829 27.3454 24.477C27.3454 28.5712 24.0503 31.9021 20 31.9021Z\"\n fill=\"white\"\n />\n <path\n d=\"M25.1131 23.2122L24.2133 23.0966C24.1391 22.8658 24.0477 22.6433 23.941 22.4318L24.4967 21.7085C24.7216 21.4158 24.6953 21.0026 24.4383 20.751L23.6844 19.989C23.4332 19.7268 23.0244 19.7007 22.7344 19.9276L22.0198 20.4893C21.8106 20.3814 21.5904 20.289 21.3617 20.214L21.2473 19.3059C21.2042 18.9416 20.8983 18.6672 20.536 18.6672H19.4639C19.1016 18.6672 18.7957 18.9416 18.7526 19.3044L18.6383 20.214C18.4095 20.289 18.1893 20.3809 17.9801 20.4893L17.2651 19.9276C16.976 19.7007 16.5672 19.7268 16.3179 19.9866L15.564 20.7481C15.3046 21.0026 15.2783 21.4158 15.5032 21.709L16.0589 22.4318C15.9517 22.6433 15.8608 22.8658 15.7866 23.0966L14.8882 23.2122C14.5278 23.2558 14.2564 23.5649 14.2564 23.9312V25.0149C14.2564 25.3812 14.5278 25.6903 14.8868 25.7339L15.7866 25.8495C15.8608 26.0803 15.9522 26.3029 16.0589 26.5143L15.5032 27.2376C15.2783 27.5303 15.3046 27.9435 15.5616 28.1951L16.3155 28.9571C16.5672 29.2188 16.9755 29.245 17.2655 29.0181L17.9806 28.4563C18.1898 28.5647 18.4099 28.6571 18.6383 28.7316L18.7526 29.6393C18.7957 30.0046 19.1016 30.2789 19.4639 30.2789H20.536C20.8983 30.2789 21.2042 30.0046 21.2473 29.6417L21.3617 28.7321C21.59 28.6571 21.8101 28.5647 22.0193 28.4568L22.7348 29.0185C23.0244 29.2459 23.4332 29.2193 23.682 28.9595L24.4359 28.1975C24.6953 27.943 24.7216 27.5303 24.4967 27.2371L23.941 26.5143C24.0482 26.3029 24.1396 26.0803 24.2133 25.8495L25.1112 25.7339C25.4716 25.6903 25.743 25.3812 25.743 25.0149V23.9312C25.7435 23.5649 25.4721 23.2558 25.1131 23.2122ZM20 26.8922C18.6804 26.8922 17.6068 25.8069 17.6068 24.4731C17.6068 23.1392 18.6804 22.054 20 22.054C21.3195 22.054 22.3931 23.1392 22.3931 24.4731C22.3931 25.8069 21.3195 26.8922 20 26.8922Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const UsersIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M35 23.3919V24.9553C35 25.187 34.8294 25.4563 34.6177 25.5505C33.7972 25.9156 31.5593 26.6628 26.9863 26.6628C26.7672 26.6628 26.5584 26.6597 26.35 26.6563C26.1492 23.3445 23.6366 20.617 20.3162 20.1677C21.031 19.4516 21.9772 18.9661 23.0323 18.8454C23.1015 18.8375 23.204 18.8671 23.2604 18.9079C24.3098 19.6676 25.5945 20.1211 26.9863 20.1211C28.378 20.1211 29.6628 19.6676 30.7122 18.9079C30.7686 18.8671 30.8711 18.8375 30.9403 18.8454C33.2163 19.1057 35 21.0492 35 23.3919ZM26.9863 9C24.3669 9 22.2435 11.1234 22.2435 13.7428C22.2435 16.3622 24.3669 18.4855 26.9863 18.4855C29.6057 18.4855 31.7291 16.3621 31.7291 13.7428C31.7291 11.1234 29.6057 9 26.9863 9Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M15.0685 20.9178C18.3595 20.9178 21.0274 18.25 21.0274 14.9589C21.0274 11.6679 18.3595 9 15.0685 9C11.7775 9 9.10956 11.6679 9.10956 14.9589C9.10956 18.25 11.7775 20.9178 15.0685 20.9178ZM25.137 27.0822V29.0464C25.137 29.3375 24.9226 29.6759 24.6567 29.7943C23.6258 30.2528 20.8141 31.1917 15.0685 31.1917C9.32284 31.1917 6.51113 30.2529 5.48029 29.7943C5.21436 29.676 5 29.3375 5 29.0465V27.0823C5 24.1388 7.24108 21.6969 10.1007 21.3699C10.1875 21.3599 10.3164 21.3972 10.3873 21.4485C11.7057 22.4029 13.32 22.9727 15.0685 22.9727C16.817 22.9727 18.4312 22.4029 19.7498 21.4485C19.8206 21.3972 19.9495 21.3599 20.0363 21.3699C22.8959 21.697 25.137 24.1388 25.137 27.0822Z\"\n fill=\"white\"\n />\n </svg>\n)\n\nexport const DataIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M28.5686 10.8008C28.2875 9.67542 27.6592 8.65479 26.769 7.89029C25.749 7.01445 24.4479 6.53215 23.105 6.53215C22.0976 6.53215 21.1326 6.79194 20.2809 7.28828C19.3789 6.4634 18.1962 6 16.9535 6C14.288 6 12.1094 8.12485 12.0224 10.7695C11.1009 11.0271 10.2666 11.5514 9.62878 12.2827C8.84534 13.1811 8.41382 14.3317 8.41382 15.5223C8.41382 18.2428 10.6271 20.456 13.3475 20.456H27.1353C29.8558 20.456 32.069 18.2428 32.069 15.5223C32.069 13.3411 30.6223 11.4249 28.5686 10.8008Z\"\n fill=\"white\"\n />\n <path\n d=\"M14.8047 23.3188V26.3285H11.9009C11.5429 25.0676 10.3819 24.1411 9.00781 24.1411C7.3493 24.1411 6 25.4904 6 27.1489C6 28.8074 7.3493 30.1567 9.00781 30.1567C10.382 30.1567 11.543 29.2301 11.9011 27.9691H15.625C16.0778 27.9691 16.4453 27.6021 16.4453 27.1488V23.3188H14.8047Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M20.8203 28.0841V21.8708H19.1797V28.0841C17.9188 28.4422 16.9922 29.6032 16.9922 30.9773C16.9922 32.6358 18.3415 33.9851 20 33.9851C21.6585 33.9851 23.0078 32.6358 23.0078 30.9773C23.0078 29.6032 22.0812 28.4422 20.8203 28.0841Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M30.9922 24.1411C29.6181 24.1411 28.4571 25.0676 28.0991 26.3285H25.1953V23.3188H23.5547V27.1488C23.5547 27.6021 23.9222 27.9691 24.375 27.9691H28.0989C28.457 29.2301 29.618 30.1567 30.9922 30.1567C32.6507 30.1567 34 28.8074 34 27.1489C34 25.4904 32.6507 24.1411 30.9922 24.1411Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const InstalledIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M21.6406 19.1797H18.3594C17.906 19.1797 17.5391 19.5466 17.5391 20V27.3828H15.8985C15.5876 27.3828 15.3041 27.5582 15.1647 27.8362C15.0261 28.1142 15.0557 28.4466 15.2424 28.695L19.3439 33.6715C19.4985 33.8782 19.7421 34 20 34C20.258 34 20.5015 33.8782 20.6561 33.6715L24.7577 28.695C24.9443 28.4466 24.974 28.1142 24.8354 27.8362C24.696 27.5582 24.4124 27.3828 24.1016 27.3828H22.461V20C22.461 19.5466 22.0941 19.1797 21.6406 19.1797Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M28.9409 14.2586C28.6037 12.6068 27.2618 11.3138 25.5259 11.0391C24.8097 8.15595 22.1894 6 19.1797 6C16.1764 6 13.5849 8.1239 12.8503 10.983C12.7734 10.979 12.6957 10.9766 12.6172 10.9766C8.99868 10.9766 6 13.9206 6 17.5391C6 21.1576 8.99868 24.1016 12.6172 24.1016H15.8984V20C15.8984 18.643 17.0024 17.5391 18.3594 17.5391H21.6406C22.9976 17.5391 24.1016 18.643 24.1016 20V24.1016H29.0234C31.7375 24.1016 34 21.8938 34 19.1797C34 16.4384 31.6998 14.1905 28.9409 14.2586Z\"\n fill=\"white\"\n />\n </svg>\n)\n\nexport const DevelopersIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M30.0373 10H9.96266C7.77789 10 6 11.7779 6 13.9632V26.5227C6 28.708 7.77789 30.4859 9.96266 30.4859H30.0373C32.2221 30.4859 34 28.708 34 26.5227V13.9632C34 11.7779 32.2221 10 30.0373 10ZM16.1615 16.3049L11.9927 20.4738L15.6999 24.181C16.0204 24.5015 16.0204 25.021 15.6999 25.3409C15.38 25.6614 14.8605 25.6614 14.54 25.3409L10.2525 21.0534C9.93203 20.733 9.93203 20.214 10.2525 19.8935L15.001 15.145C15.3215 14.8245 15.841 14.8245 16.1615 15.145C16.4814 15.4649 16.4814 15.9845 16.1615 16.3049ZM22.928 14.375L18.5902 26.6573C18.4392 27.0849 17.9705 27.3086 17.5434 27.1577C17.1163 27.0067 16.8921 26.538 17.043 26.1109L21.3809 13.8287C21.5318 13.4016 21.9999 13.1773 22.4276 13.3283C22.8547 13.4792 23.0789 13.9479 22.928 14.375ZM29.7475 20.5924L24.999 25.3409C24.6785 25.6614 24.159 25.6614 23.8385 25.3409C23.5186 25.021 23.5186 24.5015 23.8385 24.181L28.0073 20.0122L24.3001 16.3049C23.9796 15.9845 23.9796 15.4649 24.3001 15.145C24.62 14.8245 25.1395 14.8245 25.46 15.145L29.7475 19.4325C30.068 19.753 30.068 20.272 29.7475 20.5924Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M30.0373 10H22.3809C19.5 18 18 22.5 15 30.4859H30.0373C32.2221 30.4859 34 28.708 34 26.5227V13.9632C34 11.7779 32.2221 10 30.0373 10ZM22.928 14.375L18.5901 26.6573C18.4392 27.0849 17.9705 27.3086 17.5434 27.1577C17.1163 27.0067 16.8921 26.538 17.043 26.1109L21.3808 13.8287C21.5318 13.4016 21.9999 13.1773 22.4276 13.3283C22.8547 13.4792 23.0789 13.9479 22.928 14.375ZM29.7475 20.5924L24.999 25.3409C24.6785 25.6614 24.159 25.6614 23.8385 25.3409C23.5186 25.021 23.5186 24.5015 23.8385 24.181L28.0073 20.0122L24.3001 16.3049C23.9796 15.9845 23.9796 15.4649 24.3001 15.145C24.62 14.8245 25.1395 14.8245 25.46 15.145L29.7475 19.4325C30.068 19.753 30.068 20.272 29.7475 20.5924Z\"\n fill=\"white\"\n />\n </svg>\n)\n\nexport const OfficesIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path d=\"M26.1458 27.5183H28.0989V31.4897H26.1458V27.5183Z\" fill=\"white\" />\n <path\n d=\"M19.3099 11.9063V31.4896H24.1927V25.5651H30.0521V31.4896H35V11.9063L27.1224 8L19.3099 11.9063ZM28.0989 16.3724H30.0521V18.3255H28.0989V16.3724ZM28.0989 20.2786H30.0521V22.2318H28.0989V20.2786ZM26.1458 22.2318H24.1927V20.2786H26.1458V22.2318ZM26.1458 18.3255H24.1927V16.3724H26.1458V18.3255Z\"\n fill=\"white\"\n />\n <path d=\"M10.2344 27.5183H12.1875V31.4897H10.2344V27.5183Z\" fill=\"#23A4DE\" />\n <path\n d=\"M8.28125 25.5652H14.1406V31.4897H17.3568V21.3464L11.2109 17.4402L5 21.3464V31.4897H8.28125V25.5652Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const ResultsIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M33.8498 10.3508C33.6927 10.0881 33.4337 9.90389 33.1348 9.84378L17.2744 6.02015C16.7517 5.91883 16.236 6.20758 16.0551 6.70702L10.0096 22.0653L12.0279 22.8008L17.7571 8.19753L31.5378 11.7141C30.6772 14.3822 28.6292 19.9511 26.666 25.1363C24.9545 29.6604 23.9695 31.2096 22.0976 31.526C22.0954 31.5237 22.0933 31.5216 22.0933 31.5183C18.2675 32.0546 18.3361 27.1772 18.3361 27.1772L6.1175 22.2416C5.24921 27.7452 9.47808 29.0689 9.47808 29.0689L18.4238 33.1304C18.426 33.1316 19.8225 33.7967 21.3403 33.7284C25.4343 33.632 26.873 30.6592 28.6757 25.8967C31.28 19.0136 33.9234 11.3013 33.9494 11.2195C34.0426 10.9277 34.0058 10.6129 33.8498 10.3508Z\"\n fill=\"white\"\n />\n <path\n d=\"M26.6203 16.5446C26.7134 16.5701 26.8099 16.5836 26.9052 16.5836C27.3763 16.5836 27.8075 16.2694 27.9396 15.7927C28.0966 15.2202 27.7575 14.6287 27.1858 14.4727L22.5308 13.0359C21.9654 12.8794 21.3673 13.2158 21.2112 13.7878C21.0552 14.3603 21.3911 14.9519 21.9651 15.1084L26.6203 16.5446Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M19.347 18.0902C19.1604 18.6542 19.4633 19.2614 20.0256 19.4496L24.6562 21.1044C24.7686 21.1418 24.8791 21.1586 24.9906 21.1592C25.4422 21.1616 25.8653 20.8767 26.0161 20.4256C26.2032 19.8632 25.9009 19.255 25.3363 19.0669L20.7075 17.4133C20.1418 17.2261 19.5358 17.5289 19.347 18.0902Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M18.9396 21.8968C18.3762 21.7083 17.768 22.0159 17.5838 22.5815C17.3985 23.1427 17.7073 23.7516 18.2706 23.9357L22.9109 25.5836C23.0227 25.6215 23.134 25.6377 23.2469 25.6377C23.6975 25.6377 24.1179 25.3507 24.2664 24.8999C24.4515 24.3355 24.1439 23.7278 23.5806 23.5436L18.9396 21.8968Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M18.7678 11.783C19.4254 11.783 19.959 12.3019 19.959 12.9411C19.959 13.5808 19.4254 14.0991 18.7678 14.0991C18.1097 14.0991 17.5761 13.5807 17.5761 12.9411C17.5762 12.3019 18.1097 11.783 18.7678 11.783Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M17.0827 16.0881C17.7408 16.0881 18.2739 16.6065 18.2739 17.2457C18.2739 17.8843 17.7408 18.4027 17.0827 18.4027C16.4246 18.4027 15.891 17.8843 15.891 17.2457C15.891 16.6066 16.4246 16.0881 17.0827 16.0881Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M15.2854 20.53C15.9435 20.53 16.4771 21.049 16.4771 21.6893C16.4771 22.3284 15.9435 22.8462 15.2854 22.8462C14.6273 22.8462 14.0937 22.3285 14.0937 21.6893C14.0937 21.049 14.6273 20.53 15.2854 20.53Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const FinishIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path d=\"M0 0H338L79 900H0V0Z\" fill=\"#7BC9EB\" />\n <path d=\"M0 682V437.5L236.5 900H0V682Z\" fill=\"#0061A8\" />\n <path d=\"M0 0H338L296.5 147.5L0 51.5V0Z\" fill=\"#262F69\" />\n <path\n d=\"M140.584 432.55C140.584 406.155 119.187 384.758 92.792 384.758C66.397 384.758 45 406.155 45 432.55C45 451.236 55.7299 467.406 71.359 475.264V497.256C71.359 509.093 80.9548 518.689 92.792 518.689C104.629 518.689 114.225 509.093 114.225 497.256V475.264C129.854 467.406 140.584 451.236 140.584 432.55Z\"\n fill=\"#262F69\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M240.155 353.593C287.013 353.593 325 391.58 325 438.438C325 485.297 287.013 523.283 240.155 523.283C203.632 523.283 172.498 500.205 160.541 467.837H134.527C133.094 467.837 131.791 467.254 130.847 466.319C129.94 465.403 129.363 464.147 129.331 462.763C129.261 459.843 127.044 457.441 124.123 457.441H108.435C107.003 457.441 105.699 458.024 104.755 458.959C103.821 459.903 103.237 461.207 103.237 462.639C103.237 465.512 100.904 467.837 98.0395 467.837H90.5173V409.032H160.544C172.503 376.667 203.635 353.593 240.155 353.593ZM272.382 414.381C259.089 414.381 248.325 425.154 248.325 438.438C248.325 451.722 259.089 462.495 272.382 462.495C285.667 462.495 296.43 451.722 296.43 438.438C296.43 425.154 285.667 414.381 272.382 414.381Z\"\n fill=\"#FFB71B\"\n />\n <path d=\"M169 691.343L191.514 643L218 749L169 691.343Z\" fill=\"#0061A8\" />\n <path d=\"M236.948 826.948L284.817 774.52L186.817 750.127L236.948 826.948Z\" fill=\"#23A4DE\" />\n <path d=\"M246 575H217L226.762 609L246 575Z\" fill=\"#262F69\" />\n <path\n d=\"M352.357 364.46C351.7 364.353 351.062 364.202 350.462 364.011C346.062 362.617 343.527 359.086 342.633 354.499C342.548 354.065 341.919 354.076 341.85 354.513C340.997 359.876 337.916 363.711 332.506 364.813C332.076 364.901 332.087 365.523 332.52 365.595C337.915 366.496 341.183 370.214 342.218 375.501C342.283 375.834 342.636 375.83 342.616 375.822C342.808 375.819 342.971 375.677 343.001 375.486C343.433 372.743 344.715 369.004 348.37 366.77C349.538 366.057 350.884 365.543 352.371 365.243C352.56 365.205 352.694 365.037 352.69 364.845C352.687 364.653 352.546 364.491 352.357 364.46Z\"\n fill=\"#FFB71B\"\n />\n <path\n d=\"M335.957 544.365C335.054 544.218 334.179 544.01 333.354 543.749C327.312 541.834 323.83 536.985 322.602 530.686C322.486 530.089 321.622 530.104 321.527 530.704C320.356 538.069 316.125 543.337 308.695 544.85C308.104 544.971 308.119 545.825 308.714 545.924C316.124 547.162 320.611 552.267 322.033 559.528C322.122 559.986 322.607 559.979 322.579 559.969C322.844 559.964 323.067 559.77 323.108 559.508C323.702 555.741 325.462 550.605 330.482 547.538C332.085 546.558 333.934 545.853 335.977 545.44C336.235 545.388 336.42 545.158 336.415 544.894C336.41 544.63 336.217 544.408 335.957 544.365Z\"\n fill=\"#FFB71B\"\n />\n <path\n d=\"M324.61 309.463C323.072 309.212 321.581 308.859 320.177 308.414C309.887 305.152 303.958 296.895 301.867 286.168C301.669 285.151 300.198 285.177 300.036 286.2C298.042 298.742 290.837 307.712 278.184 310.29C277.178 310.495 277.203 311.95 278.217 312.119C290.834 314.226 298.477 322.92 300.897 335.285C301.049 336.064 301.875 336.054 301.827 336.037C302.278 336.028 302.659 335.697 302.729 335.251C303.739 328.835 306.738 320.09 315.285 314.866C318.016 313.198 321.165 311.997 324.644 311.293C325.084 311.205 325.398 310.814 325.389 310.364C325.381 309.915 325.053 309.536 324.61 309.463Z\"\n fill=\"#FFB71B\"\n />\n </svg>\n)\n\nexport const LoginIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path d=\"M0 0H338L79 900H0V0Z\" fill=\"#7BC9EB\" />\n <path d=\"M0 682V437.5L236.5 900H0V682Z\" fill=\"#0061A8\" />\n <path d=\"M0 0H338L296.5 147.5L0 51.5V0Z\" fill=\"#262F69\" />\n <path\n d=\"M140.584 432.55C140.584 406.155 119.187 384.758 92.792 384.758C66.397 384.758 45 406.155 45 432.55C45 451.236 55.7299 467.406 71.359 475.264V497.256C71.359 509.093 80.9548 518.689 92.792 518.689C104.629 518.689 114.225 509.093 114.225 497.256V475.264C129.854 467.406 140.584 451.236 140.584 432.55Z\"\n fill=\"#262F69\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M240.155 353.593C287.013 353.593 325 391.58 325 438.438C325 485.297 287.013 523.283 240.155 523.283C203.632 523.283 172.498 500.205 160.541 467.837H134.527C133.094 467.837 131.791 467.254 130.847 466.319C129.94 465.403 129.363 464.147 129.331 462.763C129.261 459.843 127.044 457.441 124.123 457.441H108.435C107.003 457.441 105.699 458.024 104.755 458.959C103.821 459.903 103.237 461.207 103.237 462.639C103.237 465.512 100.904 467.837 98.0395 467.837H90.5173V409.032H160.544C172.503 376.667 203.635 353.593 240.155 353.593ZM272.382 414.381C259.089 414.381 248.325 425.154 248.325 438.438C248.325 451.722 259.089 462.495 272.382 462.495C285.667 462.495 296.43 451.722 296.43 438.438C296.43 425.154 285.667 414.381 272.382 414.381Z\"\n fill=\"#FFB71B\"\n />\n <path d=\"M169 691.343L191.514 643L218 749L169 691.343Z\" fill=\"#0061A8\" />\n <path d=\"M236.948 826.948L284.817 774.52L186.817 750.127L236.948 826.948Z\" fill=\"#23A4DE\" />\n <path d=\"M246 575H217L226.762 609L246 575Z\" fill=\"#262F69\" />\n </svg>\n)\n\nexport const WelcomeIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path d=\"M0 0H338L79 900H0V0Z\" fill=\"#7BC9EB\" />\n <path d=\"M0 682V437.5L236.5 900H0V682Z\" fill=\"#0061A8\" />\n <path d=\"M0 0H338L296.5 147.5L0 51.5V0Z\" fill=\"#262F69\" />\n <path\n d=\"M140.584 432.55C140.584 406.155 119.187 384.758 92.792 384.758C66.397 384.758 45 406.155 45 432.55C45 451.236 55.7299 467.406 71.359 475.264V497.256C71.359 509.093 80.9548 518.689 92.792 518.689C104.629 518.689 114.225 509.093 114.225 497.256V475.264C129.854 467.406 140.584 451.236 140.584 432.55Z\"\n fill=\"#262F69\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M268.637 353.593C315.495 353.593 353.483 391.58 353.483 438.438C353.483 485.297 315.495 523.283 268.637 523.283C232.115 523.283 200.981 500.205 189.024 467.837H163.009C161.577 467.837 160.273 467.254 159.33 466.319C158.422 465.403 157.846 464.147 157.813 462.763C157.744 459.843 155.527 457.441 152.605 457.441H136.918C135.485 457.441 134.182 458.024 133.238 458.959C132.303 459.903 131.72 461.207 131.72 462.639C131.72 465.512 129.387 467.837 126.522 467.837H91V409.032H189.026C200.986 376.667 232.117 353.593 268.637 353.593ZM300.865 414.381C287.571 414.381 276.808 425.154 276.808 438.438C276.808 451.722 287.571 462.495 300.865 462.495C314.149 462.495 324.913 451.722 324.913 438.438C324.913 425.154 314.149 414.381 300.865 414.381Z\"\n fill=\"#FFB71B\"\n />\n <path d=\"M169 691.343L191.514 643L218 749L169 691.343Z\" fill=\"#0061A8\" />\n <path d=\"M236.948 826.948L284.817 774.52L186.817 750.127L236.948 826.948Z\" fill=\"#23A4DE\" />\n <path d=\"M246 575H217L226.762 609L246 575Z\" fill=\"#262F69\" />\n </svg>\n)\n\nexport const MapIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <g clipPath=\"url(#clip0)\">\n <path\n d=\"M20.875 18.1953C18.4324 18.1953 16.4453 20.1825 16.4453 22.625C16.4453 25.0675 18.4324 27.0547 20.875 27.0547C23.3176 27.0547 25.3047 25.0675 25.3047 22.625C25.3047 20.1825 23.3176 18.1953 20.875 18.1953ZM20.875 25.1953C19.4577 25.1953 18.3047 24.0423 18.3047 22.625C18.3047 21.2077 19.4577 20.0547 20.875 20.0547C22.2923 20.0547 23.4453 21.2077 23.4453 22.625C23.4453 24.0423 22.2923 25.1953 20.875 25.1953Z\"\n fill=\"#23A4DE\"\n />\n <path d=\"M18 11L10.66 18.2501L14.8093 22.3993C14.9257 19.2313 18 15 23.5 17L18 11Z\" fill=\"white\" />\n <path\n d=\"M33.8101 9.1001L24.8602 18.0499C25.4447 18.5597 25.931 19.1793 26.2865 19.8763L34 27.5899V10.375C34 9.93162 33.9332 9.50364 33.8101 9.1001Z\"\n fill=\"#23A4DE\"\n />\n <path d=\"M19.125 29.0352L14.16 34.0001H24.0899L19.125 29.0352Z\" fill=\"#23A4DE\" />\n <path\n d=\"M20.875 21.6953C20.3624 21.6953 19.9453 22.1124 19.9453 22.625C19.9453 23.1376 20.3624 23.5547 20.875 23.5547C21.3876 23.5547 21.8047 23.1376 21.8047 22.625C21.8047 22.1124 21.3876 21.6953 20.875 21.6953Z\"\n fill=\"#23A4DE\"\n />\n <path\n d=\"M15.4636 25.3737L9.5 19.4102L6 22.9102V29.6251C6 32.0374 7.96263 34.0001 10.375 34.0001H11.8399L17.9162 27.9238C16.868 27.3361 16.0108 26.4467 15.4636 25.3737Z\"\n fill=\"white\"\n />\n <path\n d=\"M29.625 6H22.91L17.66 11.25L23.4999 17.0899L32.9981 7.59179C32.1949 6.62021 30.981 6 29.625 6Z\"\n fill=\"white\"\n />\n <path\n d=\"M26.9406 22.8506C26.8242 26.0186 24.2687 28.5741 21.1007 28.6906L26.41 33.9998H29.625C31.9447 33.9998 33.8476 32.1848 33.9904 29.9003L26.9406 22.8506Z\"\n fill=\"white\"\n />\n <path\n d=\"M10.375 6C7.96263 6 6 7.96263 6 10.375V20.59L8.91987 17.6701C8.91993 17.67 8.91993 17.67 8.91998 17.67C8.92004 17.6699 8.92004 17.6699 8.92009 17.6699L20.5899 6H10.375Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0\">\n <rect width=\"28\" height=\"28\" fill=\"white\" transform=\"translate(6 6)\" />\n </clipPath>\n </defs>\n </svg>\n)\n\nexport const SnackbarWarningIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <g clipPath=\"url(#clip0)\">\n <path\n d=\"M19.6002 14.5722L12.5933 2.4358C11.4489 0.430905 8.55474 0.430905 7.41438 2.4358L0.403419 14.5722C-0.741059 16.5771 0.683363 19.0678 2.9929 19.0678H16.986C19.2955 19.0678 20.7447 16.5524 19.6002 14.5722ZM9.99974 16.3754C9.39045 16.3754 8.88408 15.869 8.88408 15.2597C8.88408 14.6504 9.39045 14.1441 9.99974 14.1441C10.609 14.1441 11.1154 14.6504 11.0907 15.2885C11.1195 15.869 10.5843 16.3754 9.99974 16.3754ZM11.0166 9.1627C10.9672 10.0272 10.9137 10.8876 10.8643 11.7522C10.8396 12.0321 10.8396 12.2874 10.8396 12.5632C10.8149 13.0202 10.4567 13.3742 9.99974 13.3742C9.54277 13.3742 9.18873 13.0449 9.15991 12.5879C9.08581 11.2417 9.00759 9.92019 8.93348 8.57399C8.90878 8.21994 8.88408 7.86178 8.85526 7.50773C8.85526 6.92314 9.18461 6.44147 9.7198 6.28915C10.255 6.16153 10.7861 6.41677 11.0166 6.92314C11.0948 7.10017 11.1195 7.27719 11.1195 7.48303C11.0948 8.04704 11.0413 8.60692 11.0166 9.1627Z\"\n fill=\"#F5B555\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n)\n\nexport const SnackbarSuccessIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M9.99995 0C4.48601 0 0 4.48591 0 9.99995C0 15.514 4.48601 20 9.99995 20C15.5139 20 19.9999 15.514 19.9999 9.99995C19.9999 4.48591 15.514 0 9.99995 0ZM15.7421 8.31087L9.45963 14.5933C9.1925 14.8605 8.83741 15.0075 8.45967 15.0075C8.08193 15.0075 7.72684 14.8605 7.45971 14.5933L4.2578 11.3914C3.99067 11.1243 3.84354 10.7692 3.84354 10.3915C3.84354 10.0136 3.99067 9.65852 4.2578 9.39139C4.52483 9.12426 4.87992 8.97713 5.25776 8.97713C5.6355 8.97713 5.9907 9.12426 6.25773 9.3915L8.45957 11.5932L13.742 6.31084C14.0091 6.04371 14.3642 5.89668 14.7419 5.89668C15.1197 5.89668 15.4748 6.04371 15.7419 6.31084C16.2935 6.86242 16.2935 7.7595 15.7421 8.31087Z\"\n fill=\"#A0C862\"\n />\n </svg>\n)\n\nexport const SnackbarInfoIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M9.99958 0C4.47746 0 0 4.47746 0 9.99958C0 15.5217 4.47746 20 9.99958 20C15.5217 20 20 15.5217 20 9.99958C20 4.47746 15.5217 0 9.99958 0ZM12.0813 15.498C11.5666 15.7012 11.1568 15.8552 10.8495 15.9619C10.5431 16.0686 10.1867 16.1219 9.78116 16.1219C9.1581 16.1219 8.67302 15.9695 8.32762 15.6656C7.98222 15.3617 7.81037 14.9765 7.81037 14.5084C7.81037 14.3263 7.82307 14.1401 7.84847 13.9505C7.87471 13.7608 7.91619 13.5475 7.97291 13.3079L8.61714 11.0324C8.67386 10.814 8.72296 10.6066 8.7619 10.4135C8.80085 10.2188 8.81947 10.0402 8.81947 9.87767C8.81947 9.58815 8.75937 9.38497 8.64 9.27069C8.51894 9.1564 8.29122 9.10053 7.95175 9.10053C7.78582 9.10053 7.61481 9.12508 7.43958 9.17672C7.26603 9.23005 7.11534 9.27831 6.99175 9.32571L7.1619 8.62476C7.58349 8.45291 7.9873 8.30561 8.37249 8.1837C8.75767 8.06011 9.12169 7.99915 9.46455 7.99915C10.0834 7.99915 10.5608 8.14984 10.8969 8.44783C11.2313 8.74667 11.3998 9.13524 11.3998 9.6127C11.3998 9.71175 11.3879 9.88614 11.3651 10.135C11.3422 10.3848 11.299 10.6125 11.2364 10.8216L10.5956 13.0904C10.5431 13.2724 10.4965 13.4806 10.4542 13.7134C10.4127 13.9462 10.3924 14.124 10.3924 14.2434C10.3924 14.5448 10.4593 14.7505 10.5947 14.8597C10.7285 14.9689 10.963 15.0239 11.2948 15.0239C11.4514 15.0239 11.6267 14.996 11.8248 14.9418C12.0212 14.8876 12.1634 14.8394 12.2531 14.7979L12.0813 15.498ZM11.9678 6.2891C11.669 6.56677 11.3092 6.70561 10.8885 6.70561C10.4686 6.70561 10.1062 6.56677 9.80487 6.2891C9.50518 6.01143 9.35365 5.67365 9.35365 5.27915C9.35365 4.8855 9.50603 4.54688 9.80487 4.26667C10.1062 3.98561 10.4686 3.84593 10.8885 3.84593C11.3092 3.84593 11.6698 3.98561 11.9678 4.26667C12.2667 4.54688 12.4165 4.8855 12.4165 5.27915C12.4165 5.6745 12.2667 6.01143 11.9678 6.2891Z\"\n fill=\"#23A4DE\"\n />\n </svg>\n)\n\nexport const SnackbarErrorIcon: React.FC<IconProps> = ({ className = '' }) => (\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n <path\n d=\"M10 0C4.4775 0 0 4.4775 0 10C0 15.5225 4.4775 20 10 20C15.5225 20 20 15.5225 20 10C20 4.4775 15.5225 0 10 0ZM10 16.3833C9.21833 16.3833 8.68333 15.7808 8.68333 15C8.68333 14.1967 9.24083 13.6167 10 13.6167C10.8025 13.6167 11.3167 14.1967 11.3167 15C11.3167 15.7817 10.8025 16.3833 10 16.3833ZM10.5183 11.1008C10.3192 11.78 9.69167 11.7917 9.4825 11.1008C9.24167 10.3042 8.38583 7.28 8.38583 5.31583C8.38583 2.72417 11.6283 2.71167 11.6283 5.31583C11.6275 7.29167 10.7258 10.3942 10.5183 11.1008Z\"\n fill=\"#D3033D\"\n />\n </svg>\n)\n","import * as React from 'react'\nimport Notification from 'rc-notification'\nimport { NotificationInstance as RCNotificationInstance } from 'rc-notification/lib/Notification'\nimport createUseNotification from './useNotification'\nimport { SnackbarErrorIcon, SnackbarInfoIcon, SnackbarSuccessIcon } from '../Icons'\n\nexport type NotificationPlacement = 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight'\n\nexport type NotificationType = 'success' | 'info' | 'error' | 'warn'\n\nconst notificationInstance: {\n [key: string]: Promise<RCNotificationInstance>\n} = {}\nlet defaultDuration = 3\nlet defaultTop = 24\nlet defaultBottom = 24\nlet defaultPlacement: NotificationPlacement = 'topRight'\nlet defaultGetContainer: () => HTMLElement\n\nexport interface ConfigProps {\n top?: number\n bottom?: number\n duration?: number\n placement?: NotificationPlacement\n getContainer?: () => HTMLElement\n closeIcon?: React.ReactNode\n}\n\nfunction setNotificationConfig(options: ConfigProps) {\n const { duration, placement, bottom, top, getContainer } = options\n if (duration !== undefined) {\n defaultDuration = duration\n }\n if (placement !== undefined) {\n defaultPlacement = placement\n }\n if (bottom !== undefined) {\n defaultBottom = bottom\n }\n if (top !== undefined) {\n defaultTop = top\n }\n if (getContainer !== undefined) {\n defaultGetContainer = getContainer\n }\n}\n\nexport function getPlacementStyle(\n placement: NotificationPlacement,\n top: number = defaultTop,\n bottom: number = defaultBottom,\n) {\n let style\n switch (placement) {\n case 'topLeft':\n style = {\n left: 0,\n top,\n bottom: 'auto',\n }\n break\n case 'topRight':\n style = {\n right: 0,\n top,\n bottom: 'auto',\n }\n break\n case 'bottomLeft':\n style = {\n left: 0,\n top: 'auto',\n bottom,\n }\n break\n default:\n style = {\n right: 0,\n top: 'auto',\n bottom,\n }\n break\n }\n return style\n}\n\nfunction getNotificationInstance(\n args: ArgsProps,\n callback: (info: { prefixCls: string; instance: RCNotificationInstance }) => void,\n) {\n const { placement = defaultPlacement, top, bottom, getContainer = defaultGetContainer, closeIcon } = args\n const outerPrefixCls = args.prefixCls || 'reapit-notification'\n const prefixCls = `${outerPrefixCls}-notice`\n\n const cacheKey = `${outerPrefixCls}-${placement}`\n const cacheInstance = notificationInstance[cacheKey]\n if (cacheInstance) {\n Promise.resolve(cacheInstance).then((instance) => {\n callback({ prefixCls, instance })\n })\n return\n }\n\n const closeIconToRender = closeIcon ? <span>{closeIcon}</span> : null\n\n notificationInstance[cacheKey] = new Promise((resolve) => {\n Notification.newInstance(\n {\n prefixCls: outerPrefixCls,\n className: `${outerPrefixCls}-${placement}`,\n style: getPlacementStyle(placement, top, bottom),\n getContainer,\n closeIcon: closeIconToRender,\n },\n (notification) => {\n resolve(notification)\n callback({\n prefixCls,\n instance: notification,\n })\n },\n )\n })\n}\n\nexport interface ArgsProps {\n message: React.ReactNode\n btn?: React.ReactNode\n key?: string\n onClose?: () => void\n duration?: number | null\n placement?: NotificationPlacement\n style?: React.CSSProperties\n prefixCls?: string\n className?: string\n readonly type?: NotificationType\n top?: number\n bottom?: number\n getContainer?: () => HTMLElement\n closeIcon?: React.ReactNode\n}\n\nfunction getRCNoticeProps(args: ArgsProps) {\n const duration = args.duration === undefined ? defaultDuration : args.duration\n\n const variant =\n args.type === 'success' ? 'is-success-message' : args.type === 'info' ? 'is-info-message' : 'is-warning-message'\n\n const Icon =\n args.type === 'success' ? SnackbarSuccessIcon : args.type === 'info' ? SnackbarInfoIcon : SnackbarErrorIcon\n\n return {\n content: (\n <div className={`notification reapit-notification-content ${variant}`}>\n <Icon />\n {args.message}\n </div>\n ),\n duration,\n closable: true,\n onClose: args.onClose,\n key: args.key,\n style: args.style || {},\n className: args.className,\n }\n}\n\nconst notification = {\n open: (args: ArgsProps) => {\n getNotificationInstance(args, ({ instance }) => {\n instance.notice(getRCNoticeProps(args))\n })\n },\n close(key: string) {\n Object.keys(notificationInstance).forEach((cacheKey) =>\n Promise.resolve(notificationInstance[cacheKey]).then((instance) => {\n instance.removeNotice(key)\n }),\n )\n },\n config: setNotificationConfig,\n destroy() {\n Object.keys(notificationInstance).forEach((cacheKey) => {\n Promise.resolve(notificationInstance[cacheKey]).then((instance) => {\n instance.destroy()\n })\n delete notificationInstance[cacheKey]\n })\n },\n useNotification: createUseNotification(getNotificationInstance, getRCNoticeProps),\n}\n;['success', 'info', 'error', 'warn'].forEach((type) => {\n notification[type] = (args: ArgsProps) =>\n notification.open({\n ...args,\n type: type as NotificationType,\n })\n})\n\nexport interface NotificationInstance {\n success(args: ArgsProps): void\n error(args: ArgsProps): void\n info(args: ArgsProps): void\n warn(args: ArgsProps): void\n open(args: ArgsProps): void\n}\n\nexport interface NotificationApi extends NotificationInstance {\n close(key: string): void\n config(options: ConfigProps): void\n destroy(): void\n useNotification: () => [NotificationInstance, React.ReactElement]\n}\n\nexport default notification as NotificationApi\n","import * as React from 'react'\nimport useRCNotification from 'rc-notification/lib/useNotification'\nimport {\n NotificationInstance as RCNotificationInstance,\n NoticeContent as RCNoticeContent,\n HolderReadyCallback as RCHolderReadyCallback,\n} from 'rc-notification/lib/Notification'\nimport { NotificationInstance, ArgsProps } from '.'\n\nexport default function createUseNotification(\n getNotificationInstance: (\n args: ArgsProps,\n callback: (info: { prefixCls: string; instance: RCNotificationInstance }) => void,\n ) => void,\n getRCNoticeProps: (args: ArgsProps, prefixCls: string) => RCNoticeContent,\n) {\n const useNotification = (): [NotificationInstance, React.ReactElement] => {\n // We create a proxy to handle delay created instance\n let innerInstance: RCNotificationInstance | null = null\n const proxy = {\n add: (noticeProps: RCNoticeContent, holderCallback?: RCHolderReadyCallback) => {\n innerInstance?.component.add(noticeProps, holderCallback)\n },\n } as any\n\n const [hookNotify, holder] = useRCNotification(proxy)\n\n function notify(args: ArgsProps) {\n getNotificationInstance(\n {\n ...args,\n prefixCls: 'reapit-notification',\n },\n ({ prefixCls, instance }) => {\n innerInstance = instance\n hookNotify(getRCNoticeProps(args, prefixCls))\n },\n )\n }\n\n // Fill functions\n const hookAPI: any = {\n open: notify,\n }\n ;['success', 'info', 'warn', 'error'].forEach((type) => {\n hookAPI[type] = (args: ArgsProps) =>\n hookAPI.open({\n ...args,\n type,\n })\n })\n\n return [hookAPI, holder]\n }\n\n return useNotification\n}\n","import React from 'react'\nimport GoogleMap from 'react-google-map'\nimport ReactGoogleMapLoader from 'react-google-maps-loader'\nimport { combineAddress } from '../../utils/combine-address/combine-address'\nimport notification from '../Notification'\n\nexport type Coords = {\n lat: number\n lng: number\n}\n\nexport type CoordinateProps<T> = T & {\n position: Coords\n onLoaded: Function\n}\n\nexport type GoogleMapProps<T> = T & {\n autoFitBounds?: boolean\n boundsOffset?: number\n coordinates?: CoordinateProps<any>[]\n googleMaps?: {}\n onLoaded?: Function | null\n onLoadedDirection?: Function | null\n center: Coords\n zoom: number\n destinationAddress?: string\n onDrawingMarkerComplete?: Function | null\n onDrawingMarkerClick?: Function | null\n onDrawingPolygonComplete?: Function | null\n onDrawingPolygonClick?: Function | null\n}\n\nexport type MapProps<T> = T &\n GoogleMapProps<T> & {\n apiKey: string\n component?: any\n libraries?: string\n drawingOptions?: any\n }\n\nexport const renderMarkers = ({ coordinates, googleMaps, map, markerCallBack }) =>\n coordinates.map((coordinate: CoordinateProps<any>, index: number) => {\n const label = {\n text: String(index + 1),\n fontSize: '1.5rem',\n fontWeight: '500',\n }\n const marker = new googleMaps.Marker({\n position: {\n lat: coordinate.position.lat,\n lng: coordinate.position.lng,\n },\n label,\n map,\n })\n const infoWindow = new googleMaps.InfoWindow({\n content: `<div style=\"max-width: 200px;\" id=\"coordinate-${coordinate.position.lat}-${coordinate.position.lng}\">\n <div>${combineAddress(coordinate.address)}</div>\n </div>`,\n })\n googleMaps.event.addListener(marker, 'click', () => {\n infoWindow.open(map, marker)\n })\n googleMaps.event.addListener(infoWindow, 'domready', () => {\n if (markerCallBack) {\n // @ts-ignore\n document\n .getElementById(`coordinate-${coordinate.position.lat}-${coordinate.position.lng}`)\n .addEventListener('click', markerCallBack(coordinate.id))\n }\n })\n return marker\n })\n\nexport const getCurrentLocation = ({ googleMaps, position, map }) => {\n const currentLocation = new googleMaps.Marker({\n position: {\n lat: position.coords.latitude,\n lng: position.coords.longitude,\n },\n content: 'Your location',\n map,\n })\n return currentLocation\n}\n\nexport const handleRequestDirectionServiceResponse = ({\n currentLocation,\n onLoadedDirection,\n directionsRenderer,\n destinationAddress,\n}) => (response, status) => {\n if (status === 'OK') {\n currentLocation.setMap(null)\n if (onLoadedDirection) {\n onLoadedDirection(response)\n }\n if (destinationAddress) {\n if (response && response.routes) {\n response.routes.forEach((route) => {\n route.legs.forEach((leg) => {\n leg.end_address = destinationAddress\n })\n })\n }\n }\n directionsRenderer.setDirections(response)\n } else {\n notification.error({\n message: 'Directions request failed due to ' + status,\n })\n }\n}\n\nexport const renderDirection = ({\n destinationPoint,\n map,\n position,\n googleMaps,\n directionsService,\n directionsRenderer,\n travelMode,\n onLoadedDirection,\n currentLocation,\n destinationAddress,\n}) => {\n directionsRenderer.setMap(map)\n const origin = new googleMaps.LatLng(position.coords.latitude, position.coords.longitude)\n const destination = new googleMaps.LatLng(destinationPoint.lat, destinationPoint.lng)\n directionsService.route(\n {\n origin,\n destination,\n travelMode,\n },\n handleRequestDirectionServiceResponse({\n currentLocation,\n onLoadedDirection,\n directionsRenderer,\n destinationAddress,\n }),\n )\n}\n\nexport const setZoomAndCenter = ({ googleMaps, bounds, center, zoom, map, markers }) => {\n if (zoom && center) {\n map.setZoom(zoom)\n map.setCenter(new googleMaps.LatLng(center.lat, center.lng))\n return\n }\n if (zoom) {\n map.setZoom(zoom)\n return\n }\n if (center?.lat && center?.lng) {\n map.setCenter(new googleMaps.LatLng(center.lat, center.lng))\n return\n }\n const MARKET_POSITION_DEFAULT_LENGTH = 1\n if (markers?.length <= MARKET_POSITION_DEFAULT_LENGTH) {\n const LONDON_LAT_LNG = { lat: 51.507351, lng: -0.127758 }\n const DEFAULT_ZOOM = 8\n map.setCenter(new googleMaps.LatLng(LONDON_LAT_LNG.lat, LONDON_LAT_LNG.lng))\n map.setZoom(DEFAULT_ZOOM)\n return\n }\n markers.forEach((marker) => bounds.extend(marker.getPosition()))\n map.fitBounds(bounds)\n map.setCenter(bounds.getCenter())\n return\n}\n\nexport const renderDirectionAndMarkers = ({\n googleMapsRef,\n mapRef,\n coordinates,\n center,\n zoom,\n destinationPoint,\n travelMode,\n onLoadedDirection,\n markersRef,\n directionsRendererRef,\n directionsServiceRef,\n boundsRef,\n markerCallBack,\n destinationAddress,\n}) => {\n const googleMaps = googleMapsRef.current\n const map = mapRef.current\n const directionsRenderer = directionsRendererRef.current\n const directionsService = directionsServiceRef.current\n const bounds = boundsRef.current\n let markers = []\n if (googleMaps && map) {\n return navigator.geolocation.getCurrentPosition(\n (position: Position) => {\n const currentLocation = getCurrentLocation({ googleMaps, position, map })\n const isDrawDrirection = destinationPoint && destinationPoint.lat && destinationPoint.lng\n if (isDrawDrirection) {\n renderDirection({\n destinationPoint,\n map,\n position,\n googleMaps,\n directionsService,\n directionsRenderer,\n travelMode,\n onLoadedDirection,\n currentLocation,\n destinationAddress,\n })\n return\n }\n clearMap({ directionsRendererRef, markersRef })()\n markers = renderMarkers({ coordinates, googleMaps, map, markerCallBack })\n setZoomAndCenter({ googleMaps, bounds, center, zoom, map, markers: [...markers, currentLocation] })\n markersRef.current = markers\n return\n },\n () => {\n clearMap({ directionsRendererRef, markersRef })()\n const markers = renderMarkers({ coordinates, googleMaps, map, markerCallBack })\n setZoomAndCenter({ googleMaps, bounds, center, zoom, map, markers })\n markersRef.current = markers\n return\n },\n )\n }\n}\n\nexport const onMarkerClick = (onDrawingMarkerClick) => {\n return (marker) => {\n if (onDrawingMarkerClick) {\n onDrawingMarkerClick(marker)\n }\n }\n}\n\nexport const onMarkerComplete = (onDrawingMarkerComplete, onDrawingMarkerClick) => {\n return (marker) => {\n if (onDrawingMarkerComplete) {\n onDrawingMarkerComplete(marker)\n }\n marker.addListener('click', onMarkerClick(onDrawingMarkerClick))\n }\n}\n\nexport const onPolygonClick = (googleMaps, onDrawingPolygonClick) => {\n return (polygon) => {\n if (onDrawingPolygonClick) {\n onDrawingPolygonClick(googleMaps, polygon)\n }\n }\n}\n\nexport const onPolygonComplete = (googleMaps, onDrawingPolygonComplete, onDrawingPolygonClick) => {\n return (polygon) => {\n if (onDrawingPolygonComplete) {\n onDrawingPolygonComplete(googleMaps, polygon)\n }\n polygon.addListener('click', onPolygonClick(googleMaps, onDrawingPolygonClick))\n }\n}\n\nexport const initMapDrawingManager = (\n drawingManager,\n drawingManagerRef,\n googleMaps,\n map,\n onDrawingMarkerClick,\n onDrawingMarkerComplete,\n onDrawingPolygonClick,\n onDrawingPolygonComplete,\n) => {\n drawingManagerRef.current = drawingManager\n googleMaps.event.addListener(\n drawingManager,\n 'markercomplete',\n onMarkerComplete(onDrawingMarkerComplete, onDrawingMarkerClick),\n )\n googleMaps.event.addListener(\n drawingManager,\n 'polygoncomplete',\n onPolygonComplete(googleMaps, onDrawingPolygonComplete, onDrawingPolygonClick),\n )\n drawingManager.setMap(map)\n}\n\nexport const createGoogleMapDrawingManager = (googleMaps, drawingOptions) => {\n const defaultDrawingOptions = {\n drawingMode: googleMaps.drawing.OverlayType.MARKER,\n drawingControl: true,\n drawingControlOptions: {\n position: googleMaps.ControlPosition.TOP_CENTER,\n drawingModes: ['marker', 'polygon'],\n },\n polygonOptions: {\n fillOpacity: 0.5,\n strokeWeight: 3,\n editable: true,\n zIndex: 1,\n },\n }\n const drawingManager = new googleMaps.drawing.DrawingManager(drawingOptions || defaultDrawingOptions)\n return drawingManager\n}\n\nexport const handleOnLoaded = ({\n googleMapsRef,\n mapRef,\n directionsServiceRef,\n directionsRendererRef,\n drawingManagerRef,\n libraries,\n boundsRef,\n onLoaded,\n drawingOptions,\n onDrawingMarkerClick,\n onDrawingMarkerComplete,\n onDrawingPolygonClick,\n onDrawingPolygonComplete,\n}) => (googleMaps, map) => {\n googleMapsRef.current = googleMaps\n mapRef.current = map\n const bounds = new googleMaps.LatLngBounds()\n const directionsService = new googleMaps.DirectionsService()\n const directionsRenderer = new googleMaps.DirectionsRenderer()\n\n boundsRef.current = bounds\n directionsServiceRef.current = directionsService\n directionsRendererRef.current = directionsRenderer\n\n if (libraries?.indexOf('drawing') > -1) {\n const drawingManager = createGoogleMapDrawingManager(googleMaps, drawingOptions)\n initMapDrawingManager(\n drawingManager,\n drawingManagerRef,\n googleMaps,\n map,\n onDrawingMarkerClick,\n onDrawingMarkerComplete,\n onDrawingPolygonClick,\n onDrawingPolygonComplete,\n )\n }\n\n if (onLoaded) {\n onLoaded({ googleMaps, map, bounds, directionsService, directionsRenderer })\n }\n}\n\nexport type MarkerContentProps = {\n coordinates: CoordinateProps<any>[]\n component: any\n}\n\nexport const renderMap = ({\n googleMapsRef,\n mapRef,\n onLoaded,\n directionsRendererRef,\n boundsRef,\n directionsServiceRef,\n drawingManagerRef,\n center,\n zoom,\n libraries,\n drawingOptions,\n onDrawingMarkerClick,\n onDrawingMarkerComplete,\n onDrawingPolygonClick,\n onDrawingPolygonComplete,\n mapContainerStyles,\n ...restProps\n // eslint-disable-next-line react/display-name\n}) => (googleMaps, error) => {\n if (googleMaps && !error) {\n return (\n <div style={{ height: '90vh', ...mapContainerStyles }}>\n <GoogleMap\n googleMaps={googleMaps}\n onLoaded={handleOnLoaded({\n googleMapsRef,\n mapRef,\n onLoaded,\n directionsRendererRef,\n boundsRef,\n directionsServiceRef,\n drawingManagerRef,\n libraries,\n drawingOptions,\n onDrawingMarkerClick,\n onDrawingMarkerComplete,\n onDrawingPolygonClick,\n onDrawingPolygonComplete,\n })}\n center={center}\n zoom={zoom}\n {...restProps}\n />\n </div>\n )\n }\n if (error === 'Network Error') {\n return <div>{error === 'Network Error' ? <p>{error}</p> : <p>isLoading...</p>}</div>\n }\n if (error) {\n return <div>{error}</div>\n }\n return null\n}\n\nexport const clearMap = ({ directionsRendererRef, markersRef }) => () => {\n if (directionsRendererRef && directionsRendererRef.current) {\n // @ts-ignore\n directionsRendererRef.current.setMap(null)\n }\n if (markersRef && markersRef.current) {\n // @ts-ignore\n markersRef.current.forEach((marker) => marker.setMap(null))\n }\n}\n\nexport const handleUseEffect = ({\n googleMapsRef,\n mapRef,\n coordinates,\n center,\n zoom,\n destinationPoint,\n travelMode,\n onLoadedDirection,\n markersRef,\n directionsRendererRef,\n directionsServiceRef,\n boundsRef,\n markerCallBack,\n destinationAddress,\n}) => () => {\n renderDirectionAndMarkers({\n googleMapsRef,\n mapRef,\n coordinates,\n center,\n zoom,\n destinationPoint,\n travelMode,\n onLoadedDirection,\n markersRef,\n directionsRendererRef,\n directionsServiceRef,\n boundsRef,\n markerCallBack,\n destinationAddress,\n })\n return clearMap({ directionsRendererRef, markersRef })\n}\n\nexport const Map: React.FC<MapProps<any>> = ({\n apiKey,\n libraries,\n drawingOptions,\n coordinates,\n component,\n center,\n zoom,\n onLoaded,\n destinationPoint,\n travelMode = 'DRIVING',\n onLoadedDirection,\n onDrawingMarkerClick,\n onDrawingMarkerComplete,\n onDrawingPolygonClick,\n onDrawingPolygonComplete,\n mapContainerStyles,\n markerCallBack,\n destinationAddress,\n ...restProps\n}) => {\n const googleMapsRef = React.useRef(null)\n const mapRef = React.useRef()\n const markersRef = React.useRef([])\n const directionsRendererRef = React.useRef(null)\n const boundsRef = React.useRef(null)\n const directionsServiceRef = React.useRef(null)\n const drawingManagerRef = React.useRef(null)\n\n React.useEffect(\n handleUseEffect({\n googleMapsRef,\n mapRef,\n coordinates,\n center,\n zoom,\n destinationPoint,\n travelMode,\n onLoadedDirection,\n markersRef,\n directionsRendererRef,\n directionsServiceRef,\n boundsRef,\n markerCallBack,\n destinationAddress,\n }),\n [coordinates, destinationPoint, googleMapsRef?.current, mapRef?.current],\n )\n return (\n <ReactGoogleMapLoader\n params={{\n key: apiKey,\n libraries: libraries,\n }}\n render={renderMap({\n googleMapsRef,\n mapRef,\n onLoaded,\n directionsRendererRef,\n boundsRef,\n directionsServiceRef,\n drawingManagerRef,\n center,\n zoom,\n coordinates,\n component,\n libraries,\n drawingOptions,\n onDrawingMarkerClick,\n onDrawingMarkerComplete,\n onDrawingPolygonClick,\n onDrawingPolygonComplete,\n mapContainerStyles,\n ...restProps,\n })}\n />\n )\n}\n\nexport default React.memo(Map)\n","import { FieldMetaProps } from 'formik'\n\nexport const checkError = (meta: FieldMetaProps<any>): boolean => meta.touched && !!meta.error\n","import { PartialRecord } from './index'\n\ninterface ValidateBaseProps<ValuesType, ErrorKeys extends string> {\n values: ValuesType\n keys: ErrorKeys[]\n validator(value: string): Boolean\n errMessage: string\n currentErrors: PartialRecord<ErrorKeys, string>\n}\n\nexport interface ValidateCustomParams<ValuesType, ErrorKeys extends string> {\n values: ValuesType\n keys: ErrorKeys[]\n currentErrors: PartialRecord<ErrorKeys, string>\n}\n\nexport const validateBase = <ValuesType extends Object, ErrorKeys extends string>({\n values,\n keys,\n validator,\n errMessage,\n currentErrors,\n}: ValidateBaseProps<ValuesType, ErrorKeys>): PartialRecord<ErrorKeys, string> => {\n const errors: PartialRecord<ErrorKeys, string> = keys.reduce((errors, key) => {\n const keyAsString = key.toString()\n\n // validate using input error\n if (!validator(values[keyAsString])) {\n // skip if current validate field has error alread\n if (!currentErrors || !currentErrors[keyAsString]) {\n errors[keyAsString] = errMessage\n }\n return errors\n }\n return errors\n }, {})\n\n return { ...currentErrors, ...errors }\n}\n","import { validateBase, ValidateCustomParams } from './validate-base'\nimport { PartialRecord } from './index'\n\nexport const minLengthValidator = (length: number) => (str: string) => {\n return !!str && str.length >= length\n}\n\nexport const maxLengthValidator = (length: number) => (str: string) => {\n return !!str && str.length <= length\n}\n\nexport const validateMinCharacterLength = <ValueTypes, ErrorKeys extends string>({\n values,\n currentErrors,\n keys,\n length,\n}: ValidateCustomParams<ValueTypes, ErrorKeys> & { length: number }): PartialRecord<ErrorKeys, string> => {\n return validateBase<ValueTypes, ErrorKeys>({\n values,\n keys,\n validator: minLengthValidator(length),\n errMessage: `The minimum length is ${length} characters`,\n currentErrors,\n })\n}\n\nexport const validateMaxCharacterLength = <ValueTypes, ErrorKeys extends string>({\n values,\n currentErrors,\n keys,\n length,\n}: ValidateCustomParams<ValueTypes, ErrorKeys> & { length: number }): PartialRecord<ErrorKeys, string> => {\n return validateBase<ValueTypes, ErrorKeys>({\n values,\n keys,\n validator: maxLengthValidator(length),\n errMessage: `The maximum length is ${length} characters`,\n currentErrors,\n })\n}\n","/* eslint-disable max-len */\nimport { validateBase, ValidateCustomParams } from './validate-base'\nimport errorMessages from './error-messages'\nimport { PartialRecord } from './index'\n\nexport const isEmail = (email) => {\n // RFC 5322 email specfication\n // eslint-disable-next-line no-useless-escape\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n return re.test(email)\n}\n\nexport const validateEmail = <ValueTypes, ErrorKeys extends string>({\n values,\n currentErrors,\n keys,\n}: ValidateCustomParams<ValueTypes, ErrorKeys>): PartialRecord<ErrorKeys, string> => {\n return validateBase<ValueTypes, ErrorKeys>({\n values,\n keys,\n validator: isEmail,\n errMessage: errorMessages.FIELD_WRONG_EMAIL_FORMAT,\n currentErrors,\n })\n}\n","import { validateBase, ValidateCustomParams } from './validate-base'\nimport { PartialRecord } from './index'\nimport errorMessages from './error-messages'\n\nexport const validateRequire = <ValuesType, ErrorKeys extends string>({\n values,\n currentErrors,\n keys,\n}: ValidateCustomParams<ValuesType, ErrorKeys>): PartialRecord<ErrorKeys, string> => {\n return validateBase<ValuesType, ErrorKeys>({\n values,\n keys,\n validator: (str) => {\n if (typeof str === 'string') {\n return str.trim() !== ''\n }\n return str !== ''\n },\n errMessage: errorMessages.FIELD_REQUIRED,\n currentErrors,\n })\n}\n\nexport const fieldValidateRequire = (value: string) => {\n if (!value) {\n return errorMessages.FIELD_REQUIRED\n }\n return null\n}\nexport function isEmpty(value: string | string[]): boolean {\n return (\n value === undefined ||\n value === null ||\n (typeof value === 'object' && Object.keys(value).length === 0) ||\n (typeof value === 'string' && value.trim().length === 0)\n )\n}\nexport const dropdownSelectFieldValidateRequire = (value: string | string[]): string => {\n if (!isEmpty(value)) {\n return ''\n }\n return errorMessages.FIELD_REQUIRED\n}\n","export const minCharLengthErrMessage = (min: number = 0) => `The minimum length is ${min} characters`\n\nexport const maxCharLengthErrMessage = (max: number = 0) => `The maximum length is ${max} characters`\n\nconst errorMessages = {\n DEFAULT_SERVER_ERROR: 'Something went wrong fetching data',\n DEFAULT_COMPONENT_ERROR: 'Something went wrong with this component',\n FIELD_REQUIRED: 'Required',\n FIELD_WRONG_EMAIL_FORMAT: 'Invalid email format',\n FIELD_INVALID_PASSWORD:\n 'Your Password should be a minimum of 8 characters; ' +\n 'must contain at least one lowercase letter, one uppercase letter and one number.',\n FIELD_WRONG_URI_FORMAT: 'Invalid URI format',\n MINIMUM_CHARACTER_LENGTH: minCharLengthErrMessage,\n MAXIMUM_CHARACTER_LENGTH: maxCharLengthErrMessage,\n}\n\nexport default errorMessages\n","/* eslint-disable max-len */\nimport { validateBase, ValidateCustomParams } from './validate-base'\nimport { PartialRecord } from './index'\nimport errorMessages from './error-messages'\n\nexport const uriValidator = (uri: string) => {\n // eslint-disable-next-line no-useless-escape\n const re = /^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i\n return re.test(uri)\n}\n\nexport const validateURI = <ValueTypes, ErrorKeys extends string>({\n values,\n currentErrors,\n keys,\n}: ValidateCustomParams<ValueTypes, ErrorKeys>): PartialRecord<ErrorKeys, string> => {\n return validateBase<ValueTypes, ErrorKeys>({\n values,\n keys,\n validator: uriValidator,\n errMessage: errorMessages.FIELD_WRONG_URI_FORMAT,\n currentErrors,\n })\n}\n","import { validateBase, ValidateCustomParams } from './validate-base'\nimport errorMessages from './error-messages'\nimport { PartialRecord } from './index'\n\nconst PASSWORD_PATTERN = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[A-Za-z\\d@$!%*?&]{8,}$/\n\nexport function isValidPassword(password: string) {\n return PASSWORD_PATTERN.test(password)\n}\n\nexport const validatePassword = <ValueTypes, ErrorKeys extends string>({\n values,\n currentErrors,\n keys,\n}: ValidateCustomParams<ValueTypes, ErrorKeys>): PartialRecord<ErrorKeys, string> => {\n return validateBase<ValueTypes, ErrorKeys>({\n values,\n keys,\n validator: isValidPassword,\n errMessage: errorMessages.FIELD_INVALID_PASSWORD,\n currentErrors,\n })\n}\n","export function isEmptyObject(value?: Object): boolean {\n return (\n value === undefined ||\n value === null ||\n (typeof value === 'object' && Object.keys(value).length === 0) ||\n (typeof value === 'string' && value.trim().length === 0)\n )\n}\n","import * as React from 'react'\nimport { Field, FieldProps } from 'formik'\nimport ReactDatePicker from 'react-datepicker'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport { checkError } from '../../utils/form'\nimport { fieldValidateRequire } from '../../utils/validators'\nimport { cx } from 'linaria'\n;(dayjs as any).extend(customParseFormat)\n\nconst { useState, useEffect } = React\n\nexport type CustomInputType = {\n onChange?: any\n onBlur?: any\n onFocus?: any\n placeholder?: string\n value?: any\n id?: string\n onClick?: any\n className: string\n}\n\nexport const CustomInput = React.forwardRef<HTMLInputElement, CustomInputType>(\n ({ onChange, onBlur, value, id, onClick, className, ...rest }: CustomInputType, ref) => {\n const [inputValue, setInputValue] = useState(value)\n\n // sync with the real value\n useEffect(() => {\n setInputValue(value)\n }, [value])\n\n const [isBackspaceKeyPressed, setIsBackspaceKeyPressed] = useState(false)\n\n // COOKED https://stackoverflow.com/questions/12578507/implement-an-input-with-a-mask\n const _onChange = (e) => {\n const inputElement = e.target\n const mask = '__/__/____'\n\n if (!inputElement) {\n return\n }\n\n const castedInputElement = inputElement as HTMLInputElement\n\n const oldStart = castedInputElement.selectionStart\n const textFieldValue = e.target.value\n\n const splitTextFieldValue = textFieldValue.split('').filter((char) => char !== '/')\n\n const transformedTextFieldValue = mask\n .split('')\n .map((maskChar) => {\n if (maskChar !== '_') {\n return maskChar\n }\n if (textFieldValue.length === 0) return maskChar\n\n const extractedSplitTextFieldValue = splitTextFieldValue.shift()\n if (!extractedSplitTextFieldValue) {\n return maskChar\n }\n return extractedSplitTextFieldValue\n })\n .join('')\n\n setInputValue(transformedTextFieldValue)\n\n const parsedTransformedTextFieldValue = dayjs(transformedTextFieldValue, 'DD/MM/YYYY')\n\n if (parsedTransformedTextFieldValue.isValid()) {\n onChange({\n target: {\n value: parsedTransformedTextFieldValue,\n },\n })\n }\n\n // set state ^ affect asynchronous. event loop thing...\n setTimeout(() => {\n if (oldStart) {\n /**\n * handle\n * \"11<cusor>/\" -> press 1 -> \"11/<cursor>1\"\n */\n if (!isBackspaceKeyPressed && transformedTextFieldValue[oldStart - 1] === '/') {\n castedInputElement.selectionStart = oldStart + 1\n castedInputElement.selectionEnd = oldStart + 1\n return\n }\n\n /**\n * Reset the flag if it happened\n */\n if (isBackspaceKeyPressed) {\n setIsBackspaceKeyPressed(false)\n }\n }\n\n castedInputElement.selectionStart = oldStart\n castedInputElement.selectionEnd = oldStart\n }, 1)\n }\n\n const onKeyUp = (e) => {\n const inputChar = String.fromCharCode(e.keyCode)\n\n // Allow: cmd + anything, ctrl + anything (copy, paste, select all... etc)\n if (e.metaKey || e.ctrlKey) {\n return\n }\n\n // prevent user from input number\n if (![8, 37, 38, 39, 40].includes(e.keyCode) && !inputChar.match(/[0-9]/)) {\n e.preventDefault()\n }\n\n // flag to checked if backspace key was pressed\n if (e.keyCode === 8) {\n setIsBackspaceKeyPressed(true)\n }\n }\n\n const _onBlur = (e) => {\n setInputValue(value)\n onBlur(e)\n }\n\n return (\n <input\n ref={ref}\n type=\"input\"\n className={className}\n placeholder=\"DD/MM/YYYY\"\n value={inputValue}\n id={id}\n onChange={_onChange}\n onKeyDown={onKeyUp}\n onBlur={_onBlur}\n onClick={onClick}\n {...rest}\n />\n )\n },\n)\n\nCustomInput.displayName = 'CustomInput'\n\nexport interface DatePickerProps {\n name: string\n id: string\n labelText?: string\n required?: boolean\n reactDatePickerProps?: any\n useCustomInput?: boolean\n popperPlacement?: string\n containerClassName?: string\n}\n\nexport const DatePicker = ({\n name,\n id,\n labelText,\n required = false,\n reactDatePickerProps = {},\n useCustomInput = true,\n popperPlacement = 'top',\n containerClassName = '',\n}: DatePickerProps) => {\n return (\n <Field name={name} validate={required ? fieldValidateRequire : null}>\n {({ field, meta }: FieldProps<string>) => {\n const { dateFormat } = reactDatePickerProps\n const parsedDayJsValue = dayjs(field.value)\n let fieldValue: string = ''\n let parseDate: Date | undefined = undefined\n\n if (!parsedDayJsValue.isValid()) {\n fieldValue = ''\n } else {\n fieldValue = parsedDayJsValue.startOf('day').format(dateFormat || 'DD/MM/YYYY')\n parseDate = parsedDayJsValue.startOf('day').toDate()\n }\n\n const hasError = checkError(meta)\n const className = hasError ? 'input is-danger' : 'input is-primary'\n\n return (\n <div className={cx('field', containerClassName)}>\n <div className=\"control\">\n {labelText && (\n <label className={`label ${required ? 'required-label' : ''}`} htmlFor={id}>\n {labelText}\n </label>\n )}\n <ReactDatePicker\n popperPlacement={popperPlacement}\n className={className}\n id={id}\n {...reactDatePickerProps}\n {...field}\n value={fieldValue}\n selected={parseDate}\n onChange={(value) => {\n if (!value) {\n return\n }\n field.onChange({\n target: { value: dayjs(value as Date).format('YYYY-MM-DDTHH:mm:ss'), name: field.name },\n })\n }}\n onSelect={(value) => {\n if (!value) {\n return\n }\n field.onChange({ target: { value: dayjs(value).format('YYYY-MM-DDTHH:mm:ss'), name: field.name } })\n }}\n customInput={useCustomInput && <CustomInput className={className} />}\n />\n {hasError && (\n <div className=\"has-text-danger\" data-test=\"input-error\">\n {meta.error}\n </div>\n )}\n </div>\n </div>\n )\n }}\n </Field>\n )\n}\n","import * as React from 'react'\n\nexport interface LoaderProps {\n body?: boolean\n dataTest?: string\n}\n\nexport const Loader: React.FunctionComponent<LoaderProps> = ({ body = true, dataTest = '' }) => (\n <div className={`loader-spinner ${body ? 'body' : ''}`} data-test={dataTest}>\n <div />\n <div />\n <div />\n <div />\n </div>\n)\n","import { useTable, useExpanded } from 'react-table'\nimport * as React from 'react'\nimport { Loader } from '../Loader'\nimport { FaMinusSquare, FaPlusSquare } from 'react-icons/fa'\n\n/**\n * React-table currently don't implement types\n *\n */\nexport interface TableProps {\n columns: any[]\n data: any[]\n loading?: boolean\n scrollable?: boolean\n bordered?: boolean\n striped?: boolean\n fullWidth?: boolean\n maxHeight?: number\n expandable?: boolean\n}\n\nconst renderExpanderCell = (row) => {\n return row.canExpand ? (\n <span {...row.getToggleRowExpandedProps()}>{row.isExpanded ? <FaMinusSquare /> : <FaPlusSquare />}</span>\n ) : null\n}\n\nexport const expanderColumn = {\n id: 'expander', // id is required for expander column\n columnProps: {\n width: 20,\n },\n Cell: ({ row }) => {\n return renderExpanderCell(row)\n },\n}\n\nexport const addExpandableColumnToColumnsIfExpandableIsTrue = ({\n expandable,\n columns,\n}: {\n expandable: boolean\n columns: any[]\n}) => {\n if (!expandable) {\n return columns\n }\n\n return [expanderColumn, ...columns]\n}\n\nexport const Table: React.FC<TableProps> = ({\n columns,\n data,\n loading,\n striped = true,\n fullWidth = true,\n scrollable = false,\n bordered = false,\n maxHeight,\n expandable = false,\n}) => {\n const formatColumns = React.useMemo(\n () =>\n addExpandableColumnToColumnsIfExpandableIsTrue({\n expandable,\n columns,\n }),\n [columns, expandable],\n )\n\n // Use the state and functions returned from useTable to build your UI\n const { getTableProps, headerGroups, footerGroups, rows, prepareRow } = useTable(\n {\n columns: formatColumns,\n data,\n },\n useExpanded,\n )\n const hasFooter = formatColumns.some((item) => item.Footer)\n\n // Render the UI for your table\n const renderTable = () => (\n <table\n {...getTableProps()}\n className={`table ${striped ? 'is-striped' : ''} ${fullWidth ? 'is-fullwidth' : ''} ${\n bordered ? 'is-bordered' : ''\n }`}\n >\n <thead>\n {headerGroups.map((headerGroup, index) => (\n <tr key={index} {...headerGroup.getHeaderGroupProps()}>\n {headerGroup.headers.map((header, index) => (\n <th key={index} {...header.getHeaderProps()}>\n {header.render('Header')}\n </th>\n ))}\n </tr>\n ))}\n </thead>\n <tbody>\n {loading ? (\n <tr>\n <td>\n <div className=\"table-loading\">\n <Loader />\n </div>\n </td>\n </tr>\n ) : (\n rows.map(\n (row) =>\n prepareRow(row) || (\n <tr {...row.getRowProps()} className={`${row.isExpanded ? 'is-expanded' : ''}`}>\n {row.cells.map((cell, index) => {\n const {\n column: { columnProps },\n } = cell\n return (\n <td key={index} {...cell.getCellProps()} {...columnProps}>\n {cell.render('Cell')}\n </td>\n )\n })}\n </tr>\n ),\n )\n )}\n </tbody>\n {footerGroups && hasFooter && (\n <tfoot>\n {footerGroups.map((footerGroup, index) => (\n <tr key={index} {...footerGroup.getFooterGroupProps()}>\n {footerGroup.headers.map((column, index) => (\n <th key={index} {...column.getFooterProps()}>\n {column.render('Footer')}\n </th>\n ))}\n </tr>\n ))}\n </tfoot>\n )}\n </table>\n )\n\n if (scrollable) {\n return <div style={{ maxHeight: maxHeight, overflow: 'scroll' }}>{renderTable()}</div>\n }\n\n return renderTable()\n}\n","const base64Regex = new RegExp('^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$')\n\nexport const isBase64 = (base64Str: string | undefined | null) => {\n try {\n const base64Value = (base64Str && base64Str.split(';base64,')[1]) || ''\n return base64Regex.test(base64Value)\n } catch (error) {\n return false\n }\n}\n","import * as React from 'react'\nimport { Field, FieldProps, FieldInputProps } from 'formik'\nimport { isBase64 } from '../../utils/is-base64'\nimport { cx } from 'linaria'\n\nconst { useState } = React\n\nexport interface FileInputTestProps {\n waitUntilDataReaderLoadResolver?: any\n}\n\nexport interface FileInputProps {\n name: string\n labelText?: string\n id?: string\n dataTest?: string\n accept?: string\n allowClear?: boolean\n isNarrowWidth?: boolean\n // props specialized for unit test\n testProps?: FileInputTestProps\n inputProps?: Record<string, any>\n required?: boolean\n onFilenameClick?: (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void\n // to integrate with other components\n afterLoadedFile?: (base64: string, handleClearFile: () => void) => any\n croppedImage?: string | null\n}\n\nexport const handleChangeCroppedImage = ({\n field,\n croppedImage,\n setFileName,\n inputFile,\n}: {\n field: FieldInputProps<string>\n croppedImage?: string | null\n setFileName: React.Dispatch<string>\n inputFile: React.RefObject<HTMLInputElement>\n}) => () => {\n // when croppedImage is not set or when first mount\n if (croppedImage === undefined || croppedImage === null) {\n return\n }\n\n if (croppedImage === '') {\n setFileName('')\n }\n if (inputFile.current && croppedImage === '') {\n inputFile.current.value = ''\n }\n\n field.onChange({ target: { value: croppedImage ?? '', name: field.name } })\n}\n\nexport const clearFile = (field, setFileName, inputFile) => (evt?: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {\n evt && evt.preventDefault()\n field.onChange({ target: { value: '', name: field.name } })\n setFileName('')\n if (inputFile.current) {\n inputFile.current.value = ''\n }\n}\n\nexport const FileInput = ({\n name,\n labelText,\n id = name,\n dataTest = '',\n accept = '',\n allowClear = false,\n testProps,\n inputProps,\n required = false,\n isNarrowWidth = false,\n onFilenameClick,\n croppedImage,\n afterLoadedFile,\n}: FileInputProps) => {\n const [fileUrl, setFileName] = useState<string>()\n const inputFile = React.useRef<HTMLInputElement>(null)\n const fileInputContainerClassName = cx('control', 'file-input-container', !isNarrowWidth && 'is-full-width')\n\n return (\n <Field name={name}>\n {({ field, meta }: FieldProps<string>) => {\n const hasError = meta.value !== meta.initialValue && meta.error\n const hasFile = fileUrl || field.value\n const containerClassName = `file ${hasError ? 'is-danger' : 'is-primary'} ${hasFile ? 'has-name' : ''}`\n\n const handleClearFile = clearFile(field, setFileName, inputFile)\n\n const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target && e.target.files && e.target.files[0]) {\n const file = e.target.files[0]\n setFileName(file.name)\n\n const reader = new FileReader()\n reader.readAsDataURL(file)\n reader.onload = function () {\n const base64 = reader.result\n field.onChange({ target: { value: base64, name: field.name } })\n\n if (typeof afterLoadedFile === 'function' && typeof base64 === 'string') {\n afterLoadedFile(base64, handleClearFile)\n }\n if (testProps) {\n testProps.waitUntilDataReaderLoadResolver()\n }\n }\n reader.onerror = function (error) {\n console.log('Error: ', error)\n }\n }\n }\n\n React.useEffect(\n handleChangeCroppedImage({\n inputFile,\n setFileName,\n croppedImage,\n field,\n }),\n [croppedImage],\n )\n\n return (\n <React.Fragment>\n <div className={`${containerClassName} field pb-2`}>\n <div className={fileInputContainerClassName}>\n <label data-test=\"file-input-label\" className=\"file-label\" htmlFor={id}>\n <input\n {...inputProps}\n ref={inputFile}\n id={id}\n className=\"file-input\"\n type=\"file\"\n data-test={dataTest}\n onChange={onChange}\n accept={accept}\n />\n {labelText && (\n <span className={`file-cta ${required && !hasFile ? 'required-label' : ''}`}>{labelText}</span>\n )}\n {hasFile && (\n <span data-test=\"fileUploadFileName\" className=\"file-name\">\n {!isBase64(field.value) ? (\n <a onClick={onFilenameClick} href={field.value} target=\"_blank\" rel=\"noopener noreferrer\">\n {fileUrl || field.value}\n </a>\n ) : (\n fileUrl || field.value\n )}\n </span>\n )}\n {hasFile && allowClear && <a className=\"delete is-large\" onClick={handleClearFile} />}\n </label>\n {hasError && (\n <div className=\"has-text-danger mt-2 mb-2\" data-test=\"input-error\">\n {meta.error}\n </div>\n )}\n </div>\n </div>\n </React.Fragment>\n )\n }}\n </Field>\n )\n}\n","import * as React from 'react'\nimport { Field, FieldProps } from 'formik'\nimport { checkError } from '../../utils/form'\nimport { fieldValidateRequire } from '../../utils/validators'\nimport { cx } from 'linaria'\n\nexport interface SelectBoxOptions {\n label: string\n value: string\n}\n\nexport interface SelectBoxProps {\n options: SelectBoxOptions[]\n dataTest?: string\n labelText?: string\n name: string\n id: string\n required?: boolean\n helpText?: string\n className?: string\n containerClassName?: string\n}\n\nexport const SelectBox = ({\n options,\n dataTest = '',\n labelText,\n id,\n name,\n required = false,\n helpText,\n className = '',\n containerClassName = '',\n}: SelectBoxProps) => {\n return (\n <Field name={name} validate={required ? fieldValidateRequire : null}>\n {({ field, meta }: FieldProps<string>) => {\n const hasError = checkError(meta)\n const calculatedClassName = (hasError ? 'input is-danger' : 'input is-primary') + ' ' + className\n return (\n <div className={cx('field', containerClassName)}>\n <div className=\"control\">\n {labelText && (\n <label className={`label ${required ? 'required-label' : ''}`} htmlFor={id}>\n {labelText}\n </label>\n )}\n {helpText && <i className=\"mb-2 inline-block\">{helpText}</i>}\n <select data-test={dataTest} className={calculatedClassName} {...field} value={field.value || ''}>\n {options.map(({ label, value }) => (\n <option key={value} value={value}>\n {label}\n </option>\n ))}\n <option value=\"\" disabled hidden>\n Please select\n </option>\n </select>\n </div>\n {hasError && (\n <div className=\"has-text-danger\" data-test=\"input-error\">\n {meta.error}\n </div>\n )}\n </div>\n )\n }}\n </Field>\n )\n}\n","import React, { useContext, createContext } from 'react'\nimport { FormikProps } from 'formik'\nimport { WizardStepProps } from '.'\n\nexport type WizardContextValues = {\n current: string\n goNext: () => void\n goPrev: () => void\n goTo: (stepId: string) => void\n close: () => void\n currentIndex: number\n isFirst: boolean\n isLast: boolean\n steps: WizardStepProps<any>[]\n isLoading: boolean\n}\n\n// @ts-ignore: ignore fulfill default values\nconst WizardContext = createContext<WizardContextValues>({})\n\nexport const WizardContextProvider: React.FC<{ value: WizardContextValues }> = ({ children, value }) => (\n <WizardContext.Provider value={value}>{children}</WizardContext.Provider>\n)\n\nexport const useWizardContext = (): WizardContextValues => {\n return useContext(WizardContext)\n}\n\nexport type WizardRenderCallbackParams = {\n context: WizardContextValues\n form: FormikProps<any>\n}\n\nexport type WizardRenderContextValues = {\n leftFooterRender: ((params: WizardRenderCallbackParams) => React.ReactNode) | React.ReactNode\n rightFooterRender: ((params: WizardRenderCallbackParams) => React.ReactNode) | React.ReactNode\n}\n\n// @ts-ignore: ignore fulfill default values\nconst RenderWizardContext = createContext<WizardRenderContextValues>({})\n\nexport const WizardRenderContextProvider = ({\n children,\n value,\n}: {\n value: WizardRenderContextValues\n children: React.ReactNode\n}) => <RenderWizardContext.Provider value={value}>{children}</RenderWizardContext.Provider>\n\nexport const useRenderWizardContext = (): WizardRenderContextValues => {\n return useContext(RenderWizardContext)\n}\n","import React, { useState, useEffect } from 'react'\nimport {\n WizardContextProvider,\n useWizardContext,\n WizardContextValues,\n WizardRenderContextProvider,\n useRenderWizardContext,\n WizardRenderCallbackParams,\n} from './context'\nimport { Button } from '../Button'\nimport { Formik, FormikProps, Form } from 'formik'\nimport { MdClose } from 'react-icons/md'\n\nexport interface WizardProps {\n children: React.ReactElement<WizardStepProps<any>> | React.ReactElement<WizardStepProps<any>>[]\n current?: string\n isLoading?: boolean\n visible: boolean\n afterClose?: () => void\n leftFooterRender?: ((params: WizardRenderCallbackParams) => React.ReactNode) | React.ReactNode\n rightFooterRender?: ((params: WizardRenderCallbackParams) => React.ReactNode) | React.ReactNode\n}\n\nexport const Wizard = ({\n children,\n current,\n isLoading = false,\n visible,\n afterClose,\n leftFooterRender,\n rightFooterRender,\n}: WizardProps) => {\n const steps = React.Children.toArray(children).map(({ props }: any) => ({ ...props }))\n\n const [internalCurrent, setInternalCurrent] = useState(current || steps[0].id || '')\n\n useEffect(() => {\n if (visible && current) {\n setInternalCurrent(current)\n }\n }, [visible])\n\n const isFirst = steps[0].id === internalCurrent\n const isLast = steps[steps.length - 1].id === internalCurrent\n const currentIndex = steps.findIndex(({ id }) => id === internalCurrent)\n\n const goNext = () => {\n if (!isLast) {\n setInternalCurrent(steps[currentIndex + 1].id)\n }\n }\n\n const goPrev = () => {\n if (!isFirst) {\n setInternalCurrent(steps[currentIndex - 1].id)\n }\n }\n\n const goTo = (stepId: string) => {\n setInternalCurrent(stepId)\n }\n\n const close = () => {\n afterClose && !isLoading && afterClose()\n }\n\n const value = {\n current: internalCurrent,\n goNext,\n goPrev,\n currentIndex,\n steps,\n goTo,\n isFirst,\n isLast,\n close,\n isLoading,\n }\n\n const renderValue = {\n leftFooterRender,\n rightFooterRender,\n }\n return (\n <WizardContextProvider value={value}>\n <WizardRenderContextProvider value={renderValue}>\n <div className={`modal ${visible ? 'is-active' : ''}`}>\n <div className=\"modal-background\"></div>\n <div className=\"modal-card\">\n <header className=\"modal-card-head\" style={{ display: 'flex', flexDirection: 'row-reverse' }}>\n <div>\n <button className=\"wizard-close\" onClick={close}>\n <MdClose />\n </button>\n </div>\n </header>\n {React.Children.toArray(children).filter(({ props }: any) => props.id === internalCurrent)}\n </div>\n </div>\n </WizardRenderContextProvider>\n </WizardContextProvider>\n )\n}\n\nexport type WizardActionType = 'next' | 'prev'\n\nexport interface WizardStepProps<T> {\n id: string\n Component: React.FC<any>\n validate?: (value: T) => { [k in keyof T]: string }\n initialValue?: T\n onNavigate?: (params: {\n form: FormikProps<T>\n type: WizardActionType\n context: WizardContextValues\n }) => Promise<boolean>\n onSubmit?: (params: { values: T; context: WizardContextValues; form: FormikProps<T> }) => void\n}\n\nfunction WizardStep<T>({ Component, initialValue, onNavigate, validate, onSubmit }: WizardStepProps<T>) {\n const context = useWizardContext()\n const { leftFooterRender, rightFooterRender } = useRenderWizardContext()\n const { goNext, goPrev, isFirst, isLast, isLoading } = context\n\n return (\n <Formik\n initialValues={initialValue || ({} as T)}\n validate={validate}\n onSubmit={(values, form) => {\n onSubmit && onSubmit({ values, context, form: form as FormikProps<T> })\n }}\n >\n {(form) => {\n let rightRender: React.ReactNode\n\n if (!rightFooterRender) {\n rightRender = (\n <>\n {!isLast && (\n <Button\n type=\"button\"\n onClick={() => onSubmit && onSubmit({ values: form.values, context, form })}\n variant=\"primary\"\n loading={isLoading}\n className=\"ml-2\"\n dataTest=\"wizard-save-btn\"\n >\n Save\n </Button>\n )}\n {!isFirst && (\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"ml-2\"\n disabled={isLoading}\n onClick={async () => {\n if (onNavigate) {\n const canGoPrev = await onNavigate({ form, type: 'prev', context })\n canGoPrev && goPrev()\n return\n }\n goPrev()\n }}\n dataTest=\"wizard-prev-btn\"\n >\n Prev\n </Button>\n )}\n {!isLast ? (\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"ml-2\"\n disabled={isLast || isLoading}\n dataTest=\"wizard-next-btn\"\n onClick={async () => {\n if (onNavigate) {\n const canGoNext = await onNavigate({ form, type: 'next', context })\n canGoNext && goNext()\n return\n }\n goNext()\n }}\n >\n Next\n </Button>\n ) : (\n <Button\n onClick={() => onSubmit && onSubmit({ values: form.values, context, form })}\n type=\"button\"\n variant=\"primary\"\n loading={isLoading}\n className=\"ml-2\"\n dataTest=\"wizard-finish-btn\"\n >\n Finish\n </Button>\n )}\n </>\n )\n } else {\n rightRender =\n // @ts-ignore\n typeof rightFooterRender === 'function' ? rightFooterRender({ context, form }) : rightFooterRender\n }\n\n return (\n <>\n <div className=\"modal-card-body\">\n <Form>\n <Component />\n </Form>\n </div>\n <footer className=\"modal-card-foot\">\n <div>\n {typeof leftFooterRender === 'function' ? leftFooterRender({ context, form }) : leftFooterRender}\n </div>\n <div>{rightRender}</div>\n </footer>\n </>\n )\n }}\n </Formik>\n )\n}\n\nWizard.Step = WizardStep\n\nexport default Wizard\n","import * as React from 'react'\n\nexport type AlertType = 'primary' | 'danger' | 'success' | 'warning' | 'info'\n\nexport interface AlertProps {\n message: string | React.ReactNode\n closable?: boolean\n type?: AlertType\n className?: string\n dataTest?: string\n afterClose?: (event: React.MouseEvent<HTMLButtonElement>) => void\n children?: React.ReactNode\n}\n\nexport const Alert: React.FC<AlertProps> = ({\n message,\n afterClose,\n className,\n closable = false,\n type = 'primary',\n dataTest = '',\n children,\n}: AlertProps) => {\n const alertType =\n type === 'warning' || type === 'danger'\n ? 'is-danger'\n : type === 'success'\n ? 'is-success'\n : type === 'info'\n ? 'is-info'\n : 'is-primary'\n return (\n <div className={`notification ${alertType} ${className ? className : ''}`} role=\"alert\" data-test={dataTest}>\n {message}\n {children}\n {closable && (\n <button\n type=\"button\"\n className=\"close\"\n aria-label=\"Close\"\n onClick={(event) => {\n if (typeof afterClose !== 'function') {\n console.error('Prop afterClose must be a function')\n return\n }\n afterClose(event)\n }}\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n )}\n </div>\n )\n}\n\nexport default Alert\n","import React from 'react'\nimport { cx } from 'linaria'\nimport { Field, FieldProps, FormikProps } from 'formik'\nimport { checkError } from '../../utils/form'\nimport { Grid, GridItem } from '../Layout'\n\nexport type RadioSelectOption = {\n label: string | number\n value: string | number\n additionalField?: (form: FormikProps<any>) => any | React.ReactElement\n}\n\nexport type RadioSelectProps = {\n name: string\n labelText?: string\n subText?: string\n id: string\n dataTest?: string\n options: RadioSelectOption[]\n setFieldValue: (field: string, value: any, shouldValidate?: boolean) => void\n state: any\n disabled?: boolean\n className?: string\n isHorizontal?: boolean\n}\n\nexport const renderAdditionalField = (additionalField, form: FormikProps<any>) => {\n if (!additionalField) return null\n if (typeof additionalField === 'function') return additionalField(form)\n return additionalField\n}\n\nexport const RadioSelect: React.FC<RadioSelectProps> = ({\n name,\n labelText,\n subText,\n id,\n dataTest,\n options,\n setFieldValue,\n state,\n disabled = false,\n isHorizontal = false,\n className = '',\n}) => {\n const radioGridClassName = cx(!isHorizontal && 'is-gapless')\n const radioGridItemClassName = cx(isHorizontal ? 'is-narrow' : 'is-full')\n\n return (\n <Field type=\"radio\" name={name}>\n {({ meta, form }: FieldProps<string>) => {\n const hasError = checkError(meta)\n return (\n <div className={`field pb-2 ${className}`}>\n <div className=\"control\">\n <label className=\"label\" htmlFor={id}>\n {labelText}\n </label>\n {subText && <label className=\"subtext mb-2\">{subText}</label>}\n <Grid className={radioGridClassName} isMultiLine>\n {options.map(({ label, value, additionalField }: RadioSelectOption, index: number) => {\n return (\n <GridItem key={index} className={radioGridItemClassName}>\n <div data-test={dataTest} className=\"radio-wrap\">\n <input\n id={`${name}${label}`}\n className={`checkbox ${hasError ? 'checkbox-error' : ''}`}\n type=\"radio\"\n key={value}\n checked={state === value}\n name={name}\n value={value}\n disabled={disabled}\n onChange={() => setFieldValue(name, value)}\n />\n <label className=\"label\" htmlFor={`${name}${label}`}>\n {label}\n </label>\n </div>\n {renderAdditionalField(additionalField, form)}\n </GridItem>\n )\n })}\n </Grid>\n </div>\n {hasError && (\n <div className=\"has-text-danger\" data-test=\"input-error\">\n {meta.error}\n </div>\n )}\n </div>\n )\n }}\n </Field>\n )\n}\n\nexport default RadioSelect\n","import * as React from 'react'\nimport { Field, FieldProps } from 'formik'\nimport { checkError } from '../../utils/form'\nimport { fieldValidateRequire } from '../../utils/validators'\nimport { cx } from 'linaria'\n\nexport interface InputProps {\n type: 'text' | 'password' | 'email' | 'tel' | 'hidden' | 'time' | 'date'\n placeholder?: string\n id: string\n labelText?: string\n helperText?: React.ReactNode\n name: string\n dataTest?: string\n rightIcon?: React.ReactNode\n required?: boolean\n disabled?: boolean\n validate?: (value: string) => string | null\n maxLength?: number\n className?: string\n}\n\nexport const Input = ({\n type,\n name,\n labelText,\n id,\n dataTest = '',\n placeholder = '',\n rightIcon,\n required = false,\n disabled = false,\n maxLength,\n validate = fieldValidateRequire,\n helperText,\n className = '',\n}: InputProps) => (\n <Field name={name} validate={required ? validate : null}>\n {({ field, meta }: FieldProps<string | number>) => {\n const hasError = checkError(meta)\n const inputClassName = hasError ? 'input is-danger' : 'input is-primary'\n const defaultValue = ''\n return (\n <div className={cx('field', className)}>\n <div className={`control ${rightIcon ? 'has-icons-right' : ''}`}>\n {type !== 'hidden' && !rightIcon && labelText && (\n <label className={`label inline-block ${required ? 'required-label' : ''}`} htmlFor={id}>\n {labelText}\n </label>\n )}\n\n {helperText && (React.isValidElement(helperText) ? helperText : <p className=\"mb-3\">{helperText}</p>)}\n\n <input\n disabled={disabled}\n data-test={dataTest}\n type={type}\n id={id}\n placeholder={placeholder}\n className={cx(inputClassName)}\n {...field}\n value={field.value || defaultValue}\n maxLength={maxLength}\n />\n {rightIcon && <span className=\"icon is-right\">{rightIcon}</span>}\n </div>\n {hasError && (\n <div className=\"has-text-danger\" data-test=\"input-error\">\n {meta.error}\n </div>\n )}\n </div>\n )\n }}\n </Field>\n)\n","import * as React from 'react'\nimport { Field, FieldProps, FieldInputProps } from 'formik'\n\nexport interface CheckboxProps {\n id: string\n labelText: string\n name: string\n dataTest?: string\n value?: string\n className?: string\n disabled?: boolean\n}\n\nexport type HandleCheckboxOnChangeParams = {\n field: FieldInputProps<string | string[]>\n value: string\n}\n\nexport const handleOnCheckboxChange = ({ field, value }: HandleCheckboxOnChangeParams) => () => {\n const isExistedInArray = Array.isArray(field.value) && field.value.includes(value)\n if (Array.isArray(field.value) && isExistedInArray) {\n const nextValue = field.value.filter((item) => item !== value)\n field.onChange({ target: { value: nextValue, name: field.name } })\n return\n }\n if (Array.isArray(field.value)) {\n const nextValue = field.value.concat(value)\n field.onChange({ target: { value: nextValue, name: field.name } })\n return\n }\n field.onChange({ target: { value: !field.value, name: field.name, checked: !field.checked } })\n return\n}\n\nexport const Checkbox = ({\n name,\n labelText,\n id,\n disabled = false,\n dataTest = '',\n value = '',\n className = '',\n}: CheckboxProps) => {\n return (\n <div className={`field ${className}`}>\n <div className=\"control\">\n <Field type=\"checkbox\" name={name}>\n {({ field }: FieldProps<string | string[]>) => {\n return (\n <div className=\"field field-checkbox\">\n <input\n className=\"checkbox\"\n type=\"checkbox\"\n id={id}\n data-test={dataTest}\n checked={Array.isArray(field.value) ? field.value.includes(value) : field.checked}\n value={value}\n onChange={handleOnCheckboxChange({ field, value })}\n disabled={disabled}\n />\n <label className=\"label\" htmlFor={id}>\n {labelText}\n </label>\n </div>\n )\n }}\n </Field>\n </div>\n </div>\n )\n}\n","import React, { useState } from 'react'\nimport { FileInput, FileInputProps } from '../FileInput'\n\n/*\n import { isImageType, getTypeFromBase64 } from '@reapit/utils'\n due to configuration issues ^ don't work\n TODO: fix in element v2 next mile stone\n*/\nexport const isImageType = (type: string) => {\n console.warn(\n /* eslint-disable-next-line */\n 'This function (isImageType) will be removed in the next elements version (for internal use only), please do not use it',\n )\n const regex = /^image\\//\n return regex.test(type)\n}\n\nexport const getTypeFromBase64 = (base64: string): string => {\n console.warn(\n /* eslint-disable-next-line */\n 'This function (getTypeFromBase64) will be removed in the next elements version (for internal use only), please do not use it',\n )\n try {\n const type = base64.split(';')[0].split(':')[1]\n return type\n } catch (error) {\n return ''\n }\n}\n\nexport interface ImageInputProps extends FileInputProps {\n afterLoadedImage?: (base64: string) => any\n}\n\nexport const ImageInput = (props: ImageInputProps) => {\n const [message, setMessage] = useState<string>('')\n\n const afterLoadedImage = (base64, handleClearFile) => {\n if (!validateType(base64)) {\n setMessage('Invalid file type, please upload an image')\n handleClearFile()\n return\n }\n setMessage('')\n props.afterLoadedImage && props.afterLoadedImage(base64)\n }\n\n return (\n <>\n <FileInput\n dataTest={props.dataTest}\n name={props.name}\n labelText={props.labelText}\n id={props.id}\n allowClear={props.allowClear}\n accept=\"image/*\"\n afterLoadedFile={afterLoadedImage}\n croppedImage={props.croppedImage}\n required={props.required}\n />\n {message && <p className=\"has-text-danger\">{message}</p>}\n </>\n )\n}\n\nexport const validateType = (value: string): boolean => {\n const fileType = getTypeFromBase64(value)\n return isImageType(fileType)\n}\n","import * as React from 'react'\nimport { cx } from 'linaria'\n\nexport interface TabConfig {\n tabIdentifier: string\n displayText: string\n onTabClick: (tabIdentifier: string) => void\n active: boolean\n}\n\nexport interface TabsProps {\n tabConfigs: TabConfig[]\n className?: string\n}\n\nexport const selectTab = (event: React.SyntheticEvent, tabConfig: TabConfig) => {\n event.preventDefault()\n tabConfig.onTabClick(tabConfig.tabIdentifier)\n}\n\nexport const Tabs: React.FunctionComponent<TabsProps> = ({ tabConfigs, className }) => (\n <div className={cx('tabs', 'is-fullwidth', className)} role=\"tablist\">\n <ul>\n {tabConfigs.map((tabConfig) => (\n <li className={cx(tabConfig.active && 'is-active')} key={tabConfig.tabIdentifier}>\n <a\n id={tabConfig.tabIdentifier}\n role=\"tab\"\n aria-controls={tabConfig.tabIdentifier}\n aria-selected={tabConfig.active}\n onClick={(error: React.SyntheticEvent) => selectTab(error, tabConfig)}\n >\n {tabConfig.displayText}\n </a>\n </li>\n ))}\n </ul>\n </div>\n)\n","import * as React from 'react'\nimport { usePortal } from '../../hooks/UsePortal'\n\nconst { useMemo, useEffect } = React\n\nexport interface ModalProps {\n children?: React.ReactChild\n title?: string\n visible: boolean\n size?: 'medium' | 'small'\n afterClose?: () => void\n deps?: any[]\n header?: React.ReactNode\n renderChildren?: boolean\n footerItems?: React.ReactNode\n className?: string\n HeaderComponent?: React.FC\n tapOutsideToDissmiss?: boolean\n}\n\nexport interface ModalHeaderProps {\n title: string\n afterClose?: () => void\n}\n\nexport const ModalFooter: React.FC<{ footerItems: React.ReactNode }> = ({ footerItems }) => (\n <footer className=\"modal-card-foot\">{footerItems}</footer>\n)\n\nexport const ModalBody: React.FC<{ body: React.ReactNode }> = ({ body }) => (\n <section className=\"modal-card-body\">{body}</section>\n)\n\nexport const ModalHeader: React.FC<ModalHeaderProps> = ({ title, afterClose }) => (\n <header className=\"modal-card-head\">\n <h4 className=\"modal-card-title is-4\">{title}</h4>\n {afterClose && (\n <button\n className=\"delete\"\n aria-label=\"close\"\n data-test=\"modal-close-button\"\n type=\"button\"\n onClick={(event) => {\n event.preventDefault()\n afterClose && afterClose()\n }}\n />\n )}\n </header>\n)\n\nexport const Modal: React.FunctionComponent<ModalProps> = ({\n title,\n children,\n afterClose,\n visible,\n size = 'medium',\n deps,\n footerItems,\n renderChildren,\n className = '',\n HeaderComponent,\n tapOutsideToDissmiss = true,\n}) => {\n // CLD-250: https://reapit.atlassian.net/secure/RapidBoard.jspa?rapidView=200&view=planning&selectedIssue=CLD-250\n // we can't access the showPortal in the component passed to usePortal\n // So we have to generate an id to it\n // bind event listener (click) to the element that match the ID\n const generatedModalBackgroundId = useMemo(() => {\n return Math.random().toString(36).substring(7)\n }, [])\n\n const handleClickOutside = () => {\n tapOutsideToDissmiss && afterClose && afterClose()\n }\n\n const [showPortal, hidePortal] = usePortal(\n () => (\n <div className={`modal is-active ${className}`} data-test=\"modal\">\n <div\n className=\"modal-background\"\n data-test=\"modal-background\"\n id={generatedModalBackgroundId}\n onClick={handleClickOutside}\n />\n <div\n className={'modal-content ' + (size === 'medium' ? 'modal-medium' : 'modal-small')}\n data-test=\"modal-content\"\n >\n <div className=\"modal-card\">\n {renderChildren ? (\n children\n ) : (\n <>\n {HeaderComponent && <HeaderComponent />}\n {!HeaderComponent && title && <ModalHeader title={title} afterClose={afterClose} />}\n {children && <ModalBody body={children} />}\n {footerItems && <ModalFooter footerItems={footerItems} />}\n </>\n )}\n </div>\n </div>\n </div>\n ),\n deps || [children],\n )\n\n useEffect(() => {\n if (visible) {\n showPortal()\n } else {\n hidePortal()\n }\n }, [visible])\n\n // CLD-250: handle click useEffect\n useEffect(() => {\n if (visible) {\n let element: HTMLElement | null\n const handleHidePortal = () => {\n if (tapOutsideToDissmiss) {\n hidePortal()\n afterClose && afterClose()\n }\n }\n\n /**\n * Render function run asychonously.\n * Have to put this to the bottom of the Event loop queue\n */\n setTimeout(() => {\n element = document.getElementById(generatedModalBackgroundId)\n\n if (element) {\n element.addEventListener('click', handleHidePortal)\n }\n }, 1)\n\n return () => {\n if (element) {\n element.removeEventListener('click', handleHidePortal)\n }\n }\n }\n }, [visible])\n\n // CLD-250: handle key press useEffect\n useEffect(() => {\n const handleKeypressHidePortal = (e: KeyboardEvent) => {\n if ((e.keyCode === 27 || e.key === 'Esc') && tapOutsideToDissmiss) {\n hidePortal()\n afterClose && afterClose()\n }\n }\n\n document.addEventListener('keydown', handleKeypressHidePortal)\n\n return () => {\n document.removeEventListener('keydown', handleKeypressHidePortal)\n }\n }, [])\n\n return null\n}\n","import * as React from 'react'\nimport { cx } from 'linaria'\n\nexport interface HeadingProps {\n className?: string\n isCentered?: boolean\n id?: string\n isHeadingSection?: boolean\n}\n\nexport const H1: React.FC<HeadingProps> = ({\n children,\n className = '',\n id = '',\n isCentered = false,\n isHeadingSection = false,\n}) => (\n <h1\n id={id}\n className={cx(\n 'title',\n 'is-1',\n className && className,\n isCentered && 'has-text-centered',\n isHeadingSection && 'is-heading-section',\n )}\n >\n {children}\n </h1>\n)\n\nexport const H2: React.FC<HeadingProps> = ({\n children,\n className = '',\n id = '',\n isCentered = false,\n isHeadingSection = false,\n}) => (\n <h2\n id={id}\n className={cx(\n 'title',\n 'is-2',\n className && className,\n isCentered && 'has-text-centered',\n isHeadingSection && 'is-heading-section',\n )}\n >\n {children}\n </h2>\n)\n\nexport const H3: React.FC<HeadingProps> = ({\n children,\n className = '',\n id = '',\n isCentered = false,\n isHeadingSection = false,\n}) => (\n <h3\n id={id}\n className={cx(\n 'title',\n 'is-3',\n className && className,\n isCentered && 'has-text-centered',\n isHeadingSection && 'is-heading-section',\n )}\n >\n {children}\n </h3>\n)\n\nexport const H4: React.FC<HeadingProps> = ({\n children,\n className = '',\n id = '',\n isCentered = false,\n isHeadingSection = false,\n}) => (\n <h4\n id={id}\n className={cx(\n 'title',\n 'is-4',\n className && className,\n isCentered && 'has-text-centered',\n isHeadingSection && 'is-heading-section',\n )}\n >\n {children}\n </h4>\n)\n\nexport const H5: React.FC<HeadingProps> = ({\n children,\n className = '',\n id = '',\n isCentered = false,\n isHeadingSection = false,\n}) => (\n <h5\n id={id}\n className={cx(\n 'title',\n 'is-5',\n className && className,\n isCentered && 'has-text-centered',\n isHeadingSection && 'is-heading-section',\n )}\n >\n {children}\n </h5>\n)\n\nexport const H6: React.FC<HeadingProps> = ({\n children,\n className = '',\n id = '',\n isCentered = false,\n isHeadingSection = false,\n}) => (\n <h6\n id={id}\n className={cx(\n 'title',\n 'is-6',\n className && className,\n isCentered && 'has-text-centered',\n isHeadingSection && 'is-heading-section',\n )}\n >\n {children}\n </h6>\n)\n\nexport const SubTitleH1: React.FC<HeadingProps> = ({\n children,\n className = '',\n id = '',\n isCentered = false,\n isHeadingSection = false,\n}) => (\n <h1\n id={id}\n className={cx(\n 'subtitle',\n 'is-1',\n className && className,\n isCentered && 'has-text-centered',\n isHeadingSection && 'is-heading-section',\n )}\n >\n {children}\n </h1>\n)\n\nexport const SubTitleH2: React.FC<HeadingProps> = ({\n children,\n className = '',\n id = '',\n isCentered = false,\n isHeadingSection = false,\n}) => (\n <h2\n id={id}\n className={cx(\n 'subtitle',\n 'is-2',\n className && className,\n isCentered && 'has-text-centered',\n isHeadingSection && 'is-heading-section',\n )}\n >\n {children}\n </h2>\n)\n\nexport const SubTitleH3: React.FC<HeadingProps> = ({\n children,\n className = '',\n id = '',\n isCentered = false,\n isHeadingSection = false,\n}) => (\n <h3\n id={id}\n className={cx(\n 'subtitle',\n 'is-3',\n className && className,\n isCentered && 'has-text-centered',\n isHeadingSection && 'is-heading-section',\n )}\n >\n {children}\n </h3>\n)\n\nexport const SubTitleH4: React.FC<HeadingProps> = ({\n children,\n className = '',\n id = '',\n isCentered = false,\n isHeadingSection = false,\n}) => (\n <h4\n id={id}\n className={cx(\n 'subtitle',\n 'is-4',\n className && className,\n isCentered && 'has-text-centered',\n isHeadingSection && 'is-heading-section',\n )}\n >\n {children}\n </h4>\n)\n\nexport const SubTitleH5: React.FC<HeadingProps> = ({\n children,\n className = '',\n id = '',\n isCentered = false,\n isHeadingSection = false,\n}) => (\n <h5\n id={id}\n className={cx(\n 'subtitle',\n 'is-5',\n className && className,\n isCentered && 'has-text-centered',\n isHeadingSection && 'is-heading-section',\n )}\n >\n {children}\n </h5>\n)\n\nexport const SubTitleH6: React.FC<HeadingProps> = ({\n children,\n className = '',\n id = '',\n isCentered = false,\n isHeadingSection = false,\n}) => (\n <h6\n id={id}\n className={cx(\n 'subtitle',\n 'is-6',\n className && className,\n isCentered && 'has-text-centered',\n isHeadingSection && 'is-heading-section',\n )}\n >\n {children}\n </h6>\n)\n","import * as React from 'react'\nimport Alert from '../Alert'\n\nexport type InfoType =\n | '404'\n | 'CLIENT_APPS_EMPTY'\n | 'INSTALLED_APPS_EMPTY'\n | 'DEVELOPER_APPS_EMPTY'\n | 'ADMIN_APPROVALS_EMPTY'\n | 'DEVELOPER_EMPTY'\n | ''\n\nexport interface InfoProps {\n infoType: InfoType\n}\n\nexport const infoText = (infoType: InfoType) => {\n switch (infoType) {\n case '404':\n return 'Page not found'\n case 'CLIENT_APPS_EMPTY':\n return 'We are sorry, there are no apps listed compatible with your account'\n case 'INSTALLED_APPS_EMPTY':\n return (\n 'It looks like you haven’t installed any Apps yet. Have a look at what’s available by ' +\n 'clicking ‘Browse’ from the menu.'\n )\n case 'DEVELOPER_APPS_EMPTY':\n return (\n 'It looks like you haven’t submitted an App yet. When you’re ready, ' +\n 'click on ‘Create New App’ to get started.'\n )\n case 'ADMIN_APPROVALS_EMPTY':\n return 'There are no updates that require approval'\n case 'DEVELOPER_EMPTY':\n return 'Unfortunately, there are no results that match your search criteria, please try again'\n default:\n return ''\n }\n}\n\nexport const Info: React.FC<InfoProps> = ({ infoType, children }) => (\n <Alert type={infoType === '404' ? 'danger' : 'info'} message={infoText(infoType)}>\n {children}\n </Alert>\n)\n","import * as React from 'react'\n// @ts-ignore: no available type definition\nimport { init } from 'pell'\n\nexport interface EditorProps {\n onChange?: (html: string) => void\n hasError?: boolean\n defaultContent?: string\n placeholder?: string\n containerClass?: string\n actionbarClass?: string\n buttonClass?: string\n contentClass?: string\n actions?: Array<string | object>\n dataTest?: string\n onBlur?: () => void\n onPaste?: (e: any) => void\n}\n\nconst defaultActions = [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'heading1',\n 'heading2',\n 'paragraph',\n 'quote',\n 'olist',\n 'ulist',\n 'code',\n 'line',\n 'link',\n]\n\nexport const Editor = ({\n onChange,\n hasError,\n actions = defaultActions,\n containerClass = '',\n defaultContent,\n placeholder,\n actionbarClass = 'pell-actionbar',\n buttonClass = 'pell-button',\n contentClass = 'pell-content',\n dataTest = '',\n onBlur,\n onPaste,\n}: EditorProps) => {\n const containerEl = React.useRef<HTMLDivElement>(null)\n\n React.useEffect(() => {\n init({\n element: containerEl.current,\n onChange: (html: string) => onChange && onChange(html),\n styleWithCSS: false,\n defaultParagraphSeparator: 'div',\n actions: actions,\n classes: {\n actionbar: actionbarClass,\n button: buttonClass,\n content: contentClass,\n },\n })\n if (containerEl && containerEl.current) {\n const content = containerEl.current.getElementsByClassName(contentClass)[0]\n if (placeholder) {\n content.setAttribute('placeholder', placeholder)\n }\n }\n }, [])\n\n React.useEffect(() => {\n if (containerEl && containerEl.current) {\n const content = containerEl.current.getElementsByClassName(contentClass)[0]\n if (defaultContent !== content.innerHTML) {\n content.innerHTML = defaultContent || ''\n }\n }\n }, [defaultContent])\n\n return (\n <div\n onPaste={onPaste}\n onBlur={onBlur}\n ref={containerEl}\n data-test={dataTest}\n className={`pell ${hasError && 'pell--is-danger'} ${containerClass}`}\n />\n )\n}\n","import * as React from 'react'\nimport { FieldInputProps, FieldHelperProps, useField } from 'formik'\nimport { checkError } from '../../utils/form'\nimport { Editor, EditorProps } from '../Editor'\n\nexport interface TextAreaEditorProps extends EditorProps {\n placeholder?: string\n id: string\n labelText: string\n name: string\n dataTest?: string\n allowPasteRichText?: boolean\n required?: boolean\n}\n\nexport type HandleTextAreaOnChangeParams = {\n field: FieldInputProps<string>\n}\n\nexport type HandleTextAreaOnBlurParams = {\n helpers: FieldHelperProps<string>\n}\n\nexport const handleTextAreaOnChange = ({ field }: HandleTextAreaOnChangeParams) => (html: string) => {\n field.onChange({ target: { value: html, name: field.name } })\n}\n\nexport const handleTextAreaOnBlur = ({ helpers }: HandleTextAreaOnBlurParams) => () => {\n helpers.setTouched(true)\n}\n\nexport const handleTextAreaOnPaste = () => (e) => {\n // Stop data actually being pasted into div\n e.stopPropagation()\n e.preventDefault()\n // Get pasted data via clipboard API\n const clipboardData = e.clipboardData || (window as any).clipboardData\n const pastedData = clipboardData ? clipboardData.getData('Text') : ''\n\n // need to check for browser compatible\n if (document.queryCommandSupported('insertText')) {\n document.execCommand('insertText', false, pastedData)\n } else {\n document.execCommand('paste', false, pastedData)\n }\n}\n\nexport const TextAreaEditor = ({\n name,\n labelText,\n placeholder,\n id,\n allowPasteRichText = false,\n required = false,\n ...restProps\n}: TextAreaEditorProps) => {\n const [field, meta, helpers] = useField(name)\n\n const hasError = checkError(meta)\n\n return (\n <>\n <div className=\"field\">\n <div className=\"control\">\n <label className={`label mb-2 ${required ? 'required-label' : ''}`} htmlFor={id}>\n {labelText}\n </label>\n <Editor\n hasError={hasError}\n placeholder={placeholder}\n defaultContent={field.value}\n onChange={handleTextAreaOnChange({ field })}\n onPaste={allowPasteRichText ? undefined : handleTextAreaOnPaste()}\n onBlur={handleTextAreaOnBlur({ helpers })}\n {...restProps}\n />\n </div>\n {hasError && (\n <div data-test=\"input-error\" className=\"has-text-danger\">\n {meta.error}\n </div>\n )}\n </div>\n </>\n )\n}\n","import * as React from 'react'\nimport { H4, H5, H6 } from '../Typography'\nimport { GLOBAL_KEY } from '../DynamicLinks/utils'\n\nexport interface Element {\n type: string\n tagName?: string\n children?: Element[]\n attributes?: any\n content?: string\n}\n\nconst sortContentType = (domItem: Element, index: number, diffing: boolean) => {\n // using DOMParse to parse HTML entities like &nbsp;\n return domItem.type === 'text'\n ? new DOMParser().parseFromString(domItem.content || '', 'text/html').documentElement.textContent || null\n : rendererModule.sortTags(domItem, index, diffing)\n}\n\nconst getChildren = (domTag: Element, diffing: boolean) => {\n return domTag.children\n ? domTag.children.map((child: Element, index: number) => rendererModule.sortContentType(child, index, diffing))\n : null\n}\n\nconst getAttributes = (domTag: Element, index: number) => {\n const attributes = domTag.attributes || []\n // convert to react-compatible props\n const reactPropsAttributes = Array.from(attributes as { [key: string]: any }[]).reduce(\n (acc, { key, value }) => ({\n ...acc,\n [key]: value,\n }),\n {},\n )\n return { ...reactPropsAttributes, key: index, style: {} }\n}\n\nconst getAnchorAttrs = (attributes: { [key: string]: any }) => {\n const href = attributes['href']\n const dynamicHref = window[GLOBAL_KEY] ? `agencycloud://process/webpage?url=${href}` : href\n return {\n ...attributes,\n href: dynamicHref,\n }\n}\n\nconst sortTags = (domTag: Element, index: number, diffing: boolean) => {\n const children = rendererModule.getChildren(domTag, diffing)\n const attributes = rendererModule.getAttributes(domTag, index)\n\n if (!children || !children.length) {\n return null\n }\n switch (domTag.tagName) {\n case 'p':\n return <p {...attributes}>{children}</p>\n case 'a':\n return window[GLOBAL_KEY] ? (\n <a {...getAnchorAttrs(attributes as { [key: string]: any })}>{children}</a>\n ) : (\n <a target=\"_blank\" rel=\"noopener\" {...getAnchorAttrs(attributes as { [key: string]: any })}>\n {children}\n </a>\n )\n case 'b':\n return <b {...attributes}>{children}</b>\n case 'u':\n return <u {...attributes}>{children}</u>\n case 'ul':\n return <ul {...attributes}>{children}</ul>\n case 'ol':\n return <ol {...attributes}>{children}</ol>\n case 'li':\n return <li {...attributes}>{children}</li>\n case 'h1':\n return <H4 {...attributes}>{children}</H4>\n case 'h2':\n return <H5 {...attributes}>{children}</H5>\n case 'h5':\n return <H5 {...attributes}>{children}</H5>\n case 'h6':\n return <H6 {...attributes}>{children}</H6>\n case 'i':\n return <i {...attributes}>{children}</i>\n case 'strike':\n return <del {...attributes}>{children}</del>\n case 'blockquote':\n return <blockquote {...attributes}>{children}</blockquote>\n case 'pre':\n return <pre {...attributes}>{children}</pre>\n case 'hr':\n return <hr {...attributes} />\n case 'ins':\n return diffing ? <ins {...attributes}>{children}</ins> : <div {...attributes}>{children}</div>\n case 'del':\n return diffing ? (\n <del className=\"del-diff\" {...attributes}>\n {children}\n </del>\n ) : (\n <div {...attributes}>{children}</div>\n )\n default:\n return <div {...attributes}>{children}</div>\n }\n}\n\nconst renderer = (domContent: Element[], diffing: boolean) =>\n domContent.map((domItem: Element, index: number) => rendererModule.sortContentType(domItem, index, diffing))\n\nexport const rendererModule = {\n sortContentType,\n getChildren,\n getAttributes,\n sortTags,\n renderer,\n}\nexport default renderer\n","import React from 'react'\n\nexport const Filler: React.FC<ProgressBarProps> = (props) => {\n return <div className=\"filler\" style={{ width: `${props.percentage}%` }} />\n}\n\nFiller.displayName = 'Filler'\n\nconst MAX = 100\nconst MIN = 0\n\nexport type ProgressBarProps = {\n percentage: number\n}\n\nexport const ProgressBar: React.FC<ProgressBarProps> = (props: ProgressBarProps) => {\n const { percentage } = props\n let validPercentage = percentage\n if (percentage > MAX) {\n validPercentage = MAX\n }\n if (percentage < MIN) {\n validPercentage = MIN\n }\n return (\n <div className=\"progress-bar\">\n <Filler percentage={validPercentage} />\n </div>\n )\n}\n\nProgressBar.displayName = 'ProgressBar'\n\nexport default ProgressBar\n","import * as React from 'react'\nimport ReactDataSheet from 'react-datasheet'\n\nexport class MyReactDataSheet extends ReactDataSheet<Cell, string | null> {}\n\n/** Cell contain predefined value\n * https://github.com/nadbm/react-datasheet/blob/master/types/react-datasheet.d.ts\n * plus some properties below\n */\nexport type ChangedCells = { oldCell: Cell; row: number; col: number; newCell: Cell }[]\nexport type InvalidIndies = { row: number; col: number; cell: Cell }[]\nexport interface UploadData {\n header: Cell[]\n totalRow: number\n validatedData: Cell[][]\n invalidIndies: InvalidIndies\n shouldProcess: boolean\n isModalOpen: boolean\n exceedMaxRow: boolean\n}\nexport type SetUploadData = React.Dispatch<React.SetStateAction<UploadData>>\nexport type SetData = React.Dispatch<React.SetStateAction<Cell[][]>>\nexport type SetSelected = React.Dispatch<React.SetStateAction<SelectedMatrix | null>>\nexport interface Cell extends ReactDataSheet.Cell<Cell, string | null> {\n value: string | null\n isValidated?: ValidateValue\n // to be used together with allowOnlyOneValidationErrorPerRow\n // won't allow readOnly property of the cell to be modified\n fixedReadOnly?: boolean\n /** Additional className for styling cell */\n className?: string\n style?: React.CSSProperties\n CustomComponent?: React.FC<{\n data: Cell[][]\n cellRenderProps: ReactDataSheet.CellRendererProps<Cell, string | null>\n setData: SetData\n setSelected: SetSelected\n afterCellsChanged?: AfterCellsChanged\n }>\n error?: ErrorString\n touched?: boolean\n}\n\nexport interface DoubleClickPayLoad {\n row: number\n col: number\n maxRowIndex: number\n maxColIndex: number\n isReadOnly?: boolean\n}\nexport type ErrorString = string\nexport type ValidateValue = boolean | ErrorString\nexport type ValidateFunction = (data: Cell[][]) => ValidateValue[][]\nexport type AfterCellsChanged = (changes: ChangedCells, data: Cell[][], setData: SetData) => any\nexport type AfterDataChanged = (changes: ChangedCells, data: Cell[][]) => any\nexport type AfterUploadDataValidated = (params: {\n uploadData: UploadData\n currentData: Cell[][]\n setData: SetData\n}) => any\n\nexport interface SpreadsheetProps {\n data: Cell[][]\n description?: React.ReactNode\n hasUploadButton?: boolean\n hasDownloadButton?: boolean\n hasAddButton?: boolean\n /**\n * The validate function will be called everytime data changed, should return\n * format like [[true, false], [true, true]] and have to match with spreadsheet data\n */\n validate?: ValidateFunction\n afterCellsChanged?: AfterCellsChanged\n afterDataChanged?: AfterDataChanged\n afterUploadDataValidated?: AfterUploadDataValidated\n CustomDownButton?: JSX.Element\n allowOnlyOneValidationErrorPerRow?: boolean\n maxUploadRow?: number\n hasDownloadSampleButton?: boolean\n sampleHeaders?: string[]\n}\n\nexport type SelectedMatrix = {\n start: ReactDataSheet.Location\n end: ReactDataSheet.Location\n}\n\nexport interface ContextMenuProp {\n visible: boolean\n top: number\n left: number\n}\n\nexport interface ModalUploadProp {\n uploadData: UploadData\n setUploadData: SetUploadData\n}\n\nexport type SetContextMenuProp = React.Dispatch<React.SetStateAction<ContextMenuProp>>\n\nexport interface ContextMenuData {\n label: string\n items: { id: string; text: string }[]\n}\n\nexport interface ContextMenuFCProps {\n selected: SelectedMatrix | null\n contextMenuProp: ContextMenuProp\n setContextMenuProp: SetContextMenuProp\n onCellsChanged: OnCellsChanged\n data: Cell[][]\n}\n\nexport type ChangesArray = ReactDataSheet.CellsChangedArgs<Cell, string | null>\nexport type OnCellsChanged = (changes: ChangesArray) => any\n","import * as React from 'react'\nimport Papa from 'papaparse'\nimport { Cell, SetData, ValidateFunction, ChangedCells, InvalidIndies, ValidateValue } from './types'\n\nexport const usePrevious = (value) => {\n const ref = React.useRef()\n /* istanbul ignore next */\n React.useEffect(() => {\n ref.current = value\n })\n return ref.current\n}\n\n/** Get max row and col of data */\nexport const getMaxRowAndCol = (data?: Cell[][]): { maxRow: number; maxCol: number } => {\n if (!data) {\n return { maxRow: 0, maxCol: 0 }\n }\n const maxRow = data.length\n /* default to 0 */\n let maxCol = 0\n /* check every row to find max length of column */\n data.forEach((row) => {\n const numberOfCurrentRowColumn = row.length\n if (maxCol < numberOfCurrentRowColumn) {\n maxCol = numberOfCurrentRowColumn\n }\n })\n return { maxRow, maxCol }\n}\n\nexport const setCurrentCellValue = (\n cellData: string,\n data: Cell[][],\n row: number,\n col: number,\n setData: SetData,\n): void => {\n const newData = data.map((row) => row.map((cell) => ({ ...cell })))\n newData[row][col].value = cellData\n setData(newData)\n}\n\nexport const parseCsvFile = (file: File): Promise<Papa.ParseResult<any>> =>\n new Promise((resolve) => {\n Papa.parse(file, {\n complete: (results: Papa.ParseResult<any>) => {\n resolve(results)\n },\n })\n })\n\n/** convert to string to download */\nexport const unparseDataToCsvString = (parseResult: string[][]): string => Papa.unparse(parseResult)\n/**\n * Convert from ParseResult to Cell[][]\n * Convert from [['value1', 'value2'], ['value3', 'value4']]\n * to [[{value: 'value1'}, {value: ''}], [{value: 'value3'}, {value: 'value4'}]]\n * for compatible reason\n */\nexport const convertToCompatibleData = (parsedResult): Cell[][] =>\n parsedResult.data\n .filter((rowArray) => !rowArray.every((value) => !value)) // filter rows which have all cells are empty\n .map((rowArray) => rowArray.map((value) => ({ value })))\n\n/**\n * Convert back from Cell[][] to string[][]\n */\nexport const convertDataToCsv = (data: Cell[][]): string[][] =>\n data.map((rowArray) => rowArray.map(({ value }) => value)) as string[][]\n\n// Diffing algorithm to find differences between data array\nexport const changedCellsGenerate = (newData?: Cell[][], oldData?: Cell[][]): ChangedCells => {\n const { maxCol: maxColOld, maxRow: maxRowOld } = getMaxRowAndCol(oldData)\n const { maxCol: maxColNew, maxRow: maxRowNew } = getMaxRowAndCol(newData)\n const maxRow = Math.max(maxRowNew, maxRowOld)\n const maxCol = Math.max(maxColNew, maxColOld)\n const changedCells: ChangedCells = []\n for (let rowIndex = 0; rowIndex < maxRow; rowIndex++) {\n for (let colIndex = 0; colIndex < maxCol; colIndex++) {\n const oldCell = oldData?.[rowIndex]?.[colIndex] ?? { value: null }\n const newCell = newData?.[rowIndex]?.[colIndex] ?? { value: null }\n if (oldCell.value !== newCell.value) {\n changedCells.push({\n oldCell,\n row: rowIndex,\n col: colIndex,\n newCell,\n })\n }\n }\n }\n return changedCells\n}\n\n/**\n * data with isValidated setted\n * and readOnly set to true if\n * - allowOnlyOneValidationErrorPerRow = true and belonge to invalidated row and is validated cell\n */\nexport const generateDataWithReadOnlyAndIsValidated = ({\n data,\n allowOnlyOneValidationErrorPerRow,\n validateFunction,\n}: {\n data: Cell[][]\n allowOnlyOneValidationErrorPerRow: boolean\n validateFunction?: ValidateFunction\n}) => {\n let dataWithIsGeneratedAndReadOnly = validatedDataGenerate(data, validateFunction)\n\n if (allowOnlyOneValidationErrorPerRow) {\n const invalidatedRowIndexSet = generateInvalidatedRowIndexSet(dataWithIsGeneratedAndReadOnly)\n\n dataWithIsGeneratedAndReadOnly = generateDataWithReadOnly({\n data: dataWithIsGeneratedAndReadOnly,\n invalidatedRowIndexSet: invalidatedRowIndexSet,\n })\n }\n\n return dataWithIsGeneratedAndReadOnly\n}\n\n/**\n * to be used together with allowOnlyOneValidationErrorPerRow option\n * ^ (alterDataWithReadOnly) will set readOnly to every validated cell on that row except the invalidaed row\n */\nexport interface generateDataWithReadOnlyParams {\n data: Cell[][]\n invalidatedRowIndexSet: Set<number>\n}\n\n/**\n * if cell is header row or cell's fixedReadOnly property = true, ignore cell\n * If cell belong to invalidated row, set readOnly to false if cell is validated, else set readOnly to true\n * If cell belong to validated row, set readOnly to true\n */\nexport const generateDataWithReadOnly = ({ data, invalidatedRowIndexSet }: generateDataWithReadOnlyParams) =>\n data.map((row, rowIndex) => {\n const isInvalidatedRow = invalidatedRowIndexSet.has(rowIndex)\n return row.map((cell) => {\n // ignore header row\n const isHeaderRow = rowIndex === 0\n if (isHeaderRow || cell.fixedReadOnly) {\n return cell\n }\n\n if (!isInvalidatedRow) {\n // set readOnly to false incase of it has been setted to false if it belonged invalidated row in the past\n // and readOnly was setted to true\n return { ...cell, readOnly: false }\n }\n\n // isInvalidatedRow = false and is invalidatedCell\n // ignore invalidated cell\n const isInvalidatedCell = cell?.isValidated === false\n if (isInvalidatedCell) {\n // set readOnly to false incase of it has been setted to false if it belonged invalidated row in the past\n return { ...cell, readOnly: false }\n }\n\n // isInvalidatedRow = false and is validated cell\n return { ...cell, readOnly: true }\n })\n })\n\n/**\n * to be used together with allowOnlyOneValidationErrorPerRow option\n * This set will contain invalidated row\n */\nexport const generateInvalidatedRowIndexSet: (data: Cell[][]) => Set<number> = (data) =>\n data.reduce((isInvalidatedRowSet, row, rowIndex) => {\n row.forEach((cell) => {\n if (cell?.isValidated === false) {\n isInvalidatedRowSet.add(rowIndex)\n }\n })\n return isInvalidatedRowSet\n }, new Set<number>())\n\nexport const validatedDataGenerate = (data: Cell[][], validateFunction?: ValidateFunction): Cell[][] => {\n // if valdateFunction is not set, then by default isValidated = true\n if (typeof validateFunction === 'function') {\n const validateMatrix = validateFunction(data)\n return data.map((row, rowIndex) => {\n return row.map((cell, colIndex) => {\n return typeof validateMatrix[rowIndex][colIndex] === 'string'\n ? { ...cell, isValidated: false, error: validateMatrix[rowIndex][colIndex] }\n : { ...cell, isValidated: validateMatrix[rowIndex][colIndex], error: '' }\n })\n }) as Cell[][]\n }\n return data.map((row) => row.map((cell) => ({ ...cell, isValidated: true })))\n}\n\n/**\n * Calculate number of invalid rows, using invalidIndies\n */\nexport const calculateNumberOfInvalidRows = (invalidIndies: InvalidIndies): number => {\n const hashMap = {}\n invalidIndies.forEach(({ row }) => {\n if (hashMap[row]) {\n hashMap[row]++\n return\n }\n hashMap[row] = 1\n })\n return Object.keys(hashMap).length\n}\n\n/**\n * Remove all rows which include at least one invalid row\n */\nexport const createDataWithInvalidRowsRemoved = (\n data: Cell[][],\n validateMatrix: ValidateValue[][],\n): { dataWithInvalidRowsRemoved: Cell[][]; invalidIndies: InvalidIndies } => {\n const dataWithInvalidRowsRemoved: Cell[][] = []\n // store row, col, cell of invalid rows\n const invalidIndies: InvalidIndies = []\n // loop through, check validate each cell\n // if invalid cell, push into invalidIndies\n // only push into dataWithInvalidRowsRemoved if all cells in that row are valid\n data.forEach((row, rowIndex) => {\n let currentRowValid = true\n const currentRow = [...row]\n currentRow.forEach((cell, colIndex) => {\n currentRow[colIndex] = { ...currentRow[colIndex], isValidated: validateMatrix[rowIndex][colIndex] }\n if (typeof currentRow[colIndex].isValidated !== 'boolean' || !currentRow[colIndex].isValidated) {\n invalidIndies.push({ row: rowIndex, col: colIndex, cell: currentRow[colIndex] })\n currentRowValid = false\n return\n }\n })\n if (currentRowValid) {\n dataWithInvalidRowsRemoved.push(currentRow)\n }\n })\n return { dataWithInvalidRowsRemoved, invalidIndies }\n}\n","import * as React from 'react'\nimport ReactDataSheet from 'react-datasheet'\nimport FileSaver from 'file-saver'\nimport {\n Cell,\n DoubleClickPayLoad,\n SelectedMatrix,\n SetContextMenuProp,\n SetData,\n SetSelected,\n ValidateFunction,\n ContextMenuProp,\n AfterDataChanged,\n AfterCellsChanged,\n ChangesArray,\n SetUploadData,\n UploadData,\n} from './types'\nimport {\n getMaxRowAndCol,\n parseCsvFile,\n unparseDataToCsvString,\n convertToCompatibleData,\n convertDataToCsv,\n changedCellsGenerate,\n createDataWithInvalidRowsRemoved,\n generateDataWithReadOnlyAndIsValidated,\n} from './utils'\n\nexport const valueRenderer = (cell: Cell): string | null => cell.value\n\nexport const getInvalidatedCellIndexOfRow = (data: Cell[][], rowIndex: number) =>\n data[rowIndex].findIndex((cell) => {\n if (typeof cell?.isValidated === 'undefined') {\n return false\n }\n\n return cell.isValidated === false\n })\n\n/** Double click on first read-only cell */\n/** Double click on first read-only cell */\nexport const onDoubleClickCell = (payload: DoubleClickPayLoad, setSelected: SetSelected, onDoubleClickDefault) => (\n ...args\n): boolean => {\n /* trigger default handler from lib */\n onDoubleClickDefault(...args)\n const { row, col, maxRowIndex, isReadOnly } = payload\n const isFirstRow = row === 0\n if (isFirstRow && isReadOnly) {\n /* select all row's cells */\n setSelected({\n start: { i: 0, j: col },\n end: { i: maxRowIndex, j: col },\n })\n return true\n }\n return false\n}\n\nexport const onSelectCells = (setSelected: SetSelected) => ({ start, end }: SelectedMatrix) => {\n setSelected({ start, end })\n}\n\nexport const handleContextMenu = (setContextMenuProp: SetContextMenuProp) => (e: MouseEvent) => {\n const { clientX, clientY } = e\n e.preventDefault()\n setContextMenuProp({ visible: true, top: clientY, left: clientX })\n}\n\n/** all the customization of cell go here */\nexport const customCellRenderer = (\n data: Cell[][],\n setData: SetData,\n setSelected: SetSelected,\n afterCellsChanged?: AfterCellsChanged,\n) => (props: ReactDataSheet.CellRendererProps<Cell, string | null>) => {\n const { style: defaultStyle, cell, onDoubleClick, ...restProps } = props\n\n const {\n CustomComponent = false,\n isValidated = true,\n className = '',\n readOnly,\n style: customStyle,\n // dont need to pass this prop to td tag\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars\n fixedReadOnly,\n ...restCell\n } = cell\n const { maxRow: maxRowIndex, maxCol: maxColIndex } = getMaxRowAndCol(data)\n const payload = {\n row: props.row,\n col: props.col,\n maxRowIndex,\n maxColIndex,\n isReadOnly: readOnly,\n }\n const style = {\n ...defaultStyle,\n ...customStyle,\n }\n\n // those props cannot be passed to DOM elements, ignore it\n const ignorePropKeys = [\n 'cell',\n 'row',\n 'col',\n 'columns',\n 'attributesRenderer',\n 'selected',\n 'editing',\n 'updated',\n 'style',\n ]\n\n // filter out all ignore props\n const domProps = Object.keys(restProps)\n .filter((key) => !ignorePropKeys.includes(key))\n .reduce(\n (accumulator, key) => ({\n ...accumulator,\n [key]: restProps[key],\n }),\n {},\n )\n\n return (\n <td\n {...domProps}\n {...restCell}\n className={`${props.className} ${!isValidated ? 'error-cell' : ''} ${className}`}\n style={style}\n onDoubleClick={onDoubleClickCell(payload, setSelected, onDoubleClick)}\n >\n {CustomComponent ? (\n <CustomComponent\n cellRenderProps={props}\n data={data}\n setData={setData}\n setSelected={setSelected}\n afterCellsChanged={afterCellsChanged}\n />\n ) : (\n props.children\n )}\n </td>\n )\n}\n\nexport const handleAddNewRow = (\n data: Cell[][],\n setData: SetData,\n allowOnlyOneValidationErrorPerRow: boolean,\n validate?: ValidateFunction,\n) => () => {\n const { maxRow, maxCol } = getMaxRowAndCol(data)\n const lastRow = data[maxRow - 1]\n /* [\n { readOnly: true, value: '' },\n { value: 'A', readOnly: true },\n { value: 'B', readOnly: true },\n { value: 'C', readOnly: true },\n { value: 'D', readOnly: true }\n ]\n */\n /* create array with maxCol length, copy data from lastRow, set value to '' */\n const newEmptyRow = Array(maxCol)\n .fill({ value: '' })\n .map((e, i) => {\n /* copy data of last row's cell, set value to '' */\n if (lastRow[i]) {\n return {\n ...lastRow[i],\n value: '',\n touched: false,\n }\n }\n return e\n })\n const newData = [...data, newEmptyRow]\n\n /**\n * data with isValidated setted\n * and readOnly set to true if\n * - allowOnlyOneValidationErrorPerRow = true and belonge to invalidated row and is validated cell\n */\n setData(\n generateDataWithReadOnlyAndIsValidated({\n data: newData,\n validateFunction: validate,\n allowOnlyOneValidationErrorPerRow,\n }),\n )\n}\n\nexport const handleCellsChanged = (\n data: Cell[][],\n setData: SetData,\n allowOnlyOneValidationErrorPerRow: boolean,\n validate?: ValidateFunction,\n afterCellsChanged?: AfterCellsChanged,\n) => (changes: ChangesArray): any => {\n if (changes.length === 0) {\n return\n }\n\n const newData = data.map((row) => [...row])\n // remove row case\n let newCell: Cell = { value: 'newValue' }\n if (changes.every(({ value, row }, index, changesArray) => value === null && row === changesArray[0].row)) {\n const rowIndexToRemove = changes[0].row\n newData.splice(rowIndexToRemove, 1)\n newCell = { value: null, touched: true }\n }\n // remove column case\n else if (changes.every(({ value, col }, index, changesArray) => value === null && col === changesArray[0].col)) {\n const colIndexToRemove = changes[0].col\n newData.forEach((row, rowIndex) => {\n newData[rowIndex].splice(colIndexToRemove, 1)\n })\n newCell = { value: null, touched: true }\n }\n // all other cases\n else {\n changes.forEach(({ row, col, value }) => {\n newData[row][col] = { ...newData[row][col], value, touched: true }\n })\n }\n\n /**\n * data with isValidated setted\n * and readOnly set to true if\n * - allowOnlyOneValidationErrorPerRow = true and belonge to invalidated row and is validated cell\n */\n const dataWithIsGeneratedAndReadOnly = generateDataWithReadOnlyAndIsValidated({\n data: newData,\n validateFunction: validate,\n allowOnlyOneValidationErrorPerRow,\n })\n\n if (typeof afterCellsChanged === 'function') {\n const changedCells = changes.map(({ row, col }) => ({\n oldCell: data[row][col],\n row,\n col,\n /* Replace newCell with validated data, if cannot find, then it was deleted,\n replace with value = null */\n newCell: newCell.value === null ? { value: null } : dataWithIsGeneratedAndReadOnly[row][col],\n }))\n afterCellsChanged(changedCells, dataWithIsGeneratedAndReadOnly, setData)\n }\n // and set to spreadsheet\n setData(dataWithIsGeneratedAndReadOnly)\n}\n\nexport const handleClickUpload = (ref: React.RefObject<HTMLInputElement>) => () => {\n if (ref.current) {\n /* allow same file input */\n ref.current.value = ''\n ref.current.click()\n return true\n }\n return false\n}\n\nexport const handleOnChangeInput = ({\n setUploadData,\n maxUploadRow,\n validate,\n}: {\n setUploadData: SetUploadData\n maxUploadRow: number\n validate?: ValidateFunction\n}) => async (event: { target: HTMLInputElement }) => {\n try {\n const { target } = event\n if (target && target.files && target.files[0]) {\n const file = target.files[0]\n const result = await parseCsvFile(file)\n const compatibleData = convertToCompatibleData(result)\n // separate header row and data rows\n const [header, ...restCompatibleData] = compatibleData\n if (!restCompatibleData || restCompatibleData.length === 0) return\n const totalRow = restCompatibleData.length\n // only allow maxUploadRow row\n const slicedData = restCompatibleData.slice(0, maxUploadRow)\n if (typeof validate !== 'function') {\n setUploadData(\n setUploadDataCallback({\n validatedData: slicedData.map((row) => row.map((cell) => ({ ...cell, isValidated: true }))),\n invalidIndies: [],\n totalRow,\n exceedMaxRow: totalRow > maxUploadRow,\n isModalOpen: true,\n header: header,\n }),\n )\n return 'not validated'\n }\n\n const validateMatrix = validate(slicedData)\n\n const { dataWithInvalidRowsRemoved, invalidIndies } = createDataWithInvalidRowsRemoved(slicedData, validateMatrix)\n\n setUploadData(\n setUploadDataCallback({\n validatedData: dataWithInvalidRowsRemoved,\n invalidIndies,\n isModalOpen: true,\n totalRow,\n exceedMaxRow: totalRow > maxUploadRow,\n header: header,\n }),\n )\n return 'validated'\n }\n return false\n } catch (err) {\n setUploadData(\n setUploadDataCallback({\n validatedData: [],\n invalidIndies: [],\n isModalOpen: true,\n totalRow: 0,\n header: [],\n }),\n )\n return 'error'\n }\n}\n\nexport const handleDownload = (data: Cell[][]) => () => {\n /* convert from Cell[][] to string[][] */\n const parseResult = convertDataToCsv(data)\n /* convert from string[][] to string */\n const csvData = unparseDataToCsvString(parseResult)\n const dataBlob = new Blob([csvData], { type: 'text/csv;charset=utf-8;' })\n FileSaver.saveAs(dataBlob, `reapit-${new Date()}.csv`)\n}\n\nexport const handleDownloadSample = (headers: string[]) => () => {\n const csvData = unparseDataToCsvString([headers])\n const dataBlob = new Blob([csvData], { type: 'text/csv;charset=utf-8;' })\n FileSaver.saveAs(dataBlob, `reapit-sample-${new Date()}.csv`)\n}\n\nexport const hideContextMenu = (prev: ContextMenuProp): ContextMenuProp => ({ ...prev, visible: false })\n\nexport const handleSetContextMenu = (setContextMenuProp: SetContextMenuProp) => () => {\n /**\n * To hide context menu when click outside.\n * must use window instead of document for stopPropagation to work\n * https://github.com/facebook/react/issues/4335\n */\n window.addEventListener('click', setContextMenuProp as any)\n\n return () => {\n window.removeEventListener('click', setContextMenuProp as any)\n }\n}\n\nexport const handleAfterDataChanged = (\n data: Cell[][],\n prevData?: Cell[][],\n afterDataChanged?: AfterDataChanged,\n) => () => {\n if (typeof afterDataChanged === 'function') {\n const changedCells = changedCellsGenerate(data, prevData)\n afterDataChanged(changedCells, data)\n }\n}\n\nexport const handleInitialDataChanged = (\n initialData: Cell[][],\n setData: SetData,\n allowOnlyOneValidationErrorPerRow: boolean,\n validateFunction?: ValidateFunction,\n) => () => {\n /**\n * data with isValidated setted\n * and readOnly set to true if\n * - allowOnlyOneValidationErrorPerRow = true and belonge to invalidated row and is validated cell\n */\n setData(\n generateDataWithReadOnlyAndIsValidated({\n data: initialData,\n validateFunction: validateFunction,\n allowOnlyOneValidationErrorPerRow,\n }),\n )\n}\n\nexport const handleCloseUploadModal = (setUploadData: SetUploadData) => () =>\n setUploadData(setUploadDataCallback({ isModalOpen: false }))\n\nexport const handleProcessValidRows = (setUploadData: SetUploadData) => () =>\n setUploadData(setUploadDataCallback({ shouldProcess: true, isModalOpen: false }))\n\nexport const setUploadDataCallback = (uploadDataPartial: Partial<UploadData>) => (prev: UploadData) => ({\n ...prev,\n ...uploadDataPartial,\n})\n","import * as React from 'react'\nimport {\n ContextMenuData,\n SetContextMenuProp,\n Cell,\n SelectedMatrix,\n ContextMenuFCProps,\n OnCellsChanged,\n ContextMenuProp,\n} from './types'\nimport { hideContextMenu } from './handlers'\n\n// clear means set value to empty string \"\"\nexport const clearRow = (data: Cell[][], currentRowIndex: number, onCellsChanged: OnCellsChanged) => {\n const oldRow = data[currentRowIndex]\n const changedCells = oldRow\n .map((oldCell, colIndex) => ({\n cell: oldRow[colIndex],\n row: currentRowIndex,\n col: colIndex,\n value: '',\n }))\n .filter(({ cell: { readOnly } }) => !readOnly)\n // trigger onCellsChanged\n onCellsChanged(changedCells)\n}\n\nexport const clearCol = (data: Cell[][], currentColIndex: number, onCellsChanged: OnCellsChanged) => {\n const oldCol = data.map((row) => row[currentColIndex])\n const changedCells = oldCol\n .map((cell, rowIndex) => ({\n cell: oldCol[rowIndex],\n row: rowIndex,\n col: currentColIndex,\n value: '',\n }))\n .filter(({ cell: { readOnly } }) => !readOnly)\n\n // trigger onCellsChanged\n onCellsChanged(changedCells)\n}\n\n// remove is completely remove the data from sheet\nexport const removeRow = (data: Cell[][], currentRowIndex: number, onCellsChanged: OnCellsChanged) => {\n const oldRow = data[currentRowIndex]\n /* After remove, set value to null in changedCells so afterCellsChaned can detect that it was removed */\n const changedCells = oldRow\n .map((oldCell, colIndex) => ({\n cell: oldCell,\n row: currentRowIndex,\n col: colIndex,\n value: null,\n }))\n .filter(({ cell: { readOnly } }) => !readOnly)\n onCellsChanged(changedCells)\n}\n\nexport const removeCol = (data: Cell[][], currentColIndex: number, onCellsChanged: OnCellsChanged) => {\n const oldCol = data.map((row) => row[currentColIndex])\n const changedCells = oldCol\n .map((cell, rowIndex) => ({\n cell: oldCol[rowIndex],\n row: rowIndex,\n col: currentColIndex,\n value: null,\n }))\n .filter(({ cell: { readOnly } }) => !readOnly)\n // trigger onCellsChanged\n onCellsChanged(changedCells)\n}\n/** delegate event handler */\nexport const handleContextClick = (\n data: Cell[][],\n selected: SelectedMatrix | null,\n setContextMenuProp: SetContextMenuProp,\n onCellsChanged: OnCellsChanged,\n) => (event) => {\n event.stopPropagation()\n const {\n start: { i: currentRowIndex, j: currentColIndex },\n } = selected as SelectedMatrix\n switch (event.target.id) {\n case 'clear-row':\n clearRow(data, currentRowIndex, onCellsChanged)\n setContextMenuProp(hideContextMenu)\n return 'clear-row'\n case 'clear-col':\n clearCol(data, currentColIndex, onCellsChanged)\n setContextMenuProp(hideContextMenu)\n return 'clear-col'\n case 'remove-row':\n removeRow(data, currentRowIndex, onCellsChanged)\n setContextMenuProp(hideContextMenu)\n return 'remove-row'\n case 'remove-col':\n removeCol(data, currentColIndex, onCellsChanged)\n setContextMenuProp(hideContextMenu)\n return 'remove-col'\n default:\n return ''\n }\n}\n\nexport const createMenu = (data: ContextMenuData[]): React.ReactNode => {\n return data.map(({ label, items }) => (\n <div key={label} className=\"wrap-section\">\n <p className=\"menu-label\">{label}</p>\n <ul className=\"menu-list\">\n {items.map(({ id, text }) => (\n <li key={id}>\n <a id={id}>{text}</a>\n </li>\n ))}\n </ul>\n </div>\n ))\n}\n\nconst dataMenu: ContextMenuData[] = [\n {\n label: 'Clear',\n items: [\n {\n id: 'clear-row',\n text: 'Clear row',\n },\n // temporary disable\n // {\n // id: 'clear-col',\n // text: 'Clear column',\n // },\n ],\n },\n {\n label: 'Remove',\n items: [\n {\n id: 'remove-row',\n text: 'Remove row',\n },\n // temporary disable\n // {\n // id: 'remove-col',\n // text: 'Remove column',\n // },\n ],\n },\n]\n\nexport const handleRenderMenuInsideViewPort = (\n setContextMenuProp: React.Dispatch<React.SetStateAction<ContextMenuProp>>,\n contextMenuProp: ContextMenuProp,\n) => {\n return (element: HTMLDivElement) => {\n if (!element || !element.getBoundingClientRect()) {\n return\n }\n\n const { innerWidth: windowWidth, innerHeight: windowHeight } = window\n const { right: elementRightPosition, bottom: elementBottomPosition } = element.getBoundingClientRect()\n const { top: contextMenuTopPosition, left: contextMenuLeftPosition } = contextMenuProp\n\n if (elementRightPosition > windowWidth) {\n const offScreenDistance = windowWidth - elementRightPosition\n setContextMenuProp({ ...contextMenuProp, left: contextMenuLeftPosition + offScreenDistance })\n }\n\n if (elementBottomPosition > windowHeight) {\n const offScreenDistance = windowHeight - elementBottomPosition\n setContextMenuProp({ ...contextMenuProp, top: contextMenuTopPosition + offScreenDistance })\n }\n }\n}\n\nexport const ContextMenu: React.FC<ContextMenuFCProps> = ({\n data,\n selected,\n contextMenuProp,\n setContextMenuProp,\n onCellsChanged,\n}) => {\n const { visible, top, left } = contextMenuProp\n const measuredRef = React.useCallback(handleRenderMenuInsideViewPort(setContextMenuProp, contextMenuProp), [\n contextMenuProp,\n ])\n\n const visibleClass = visible ? 'spreadsheet-context-menu-visible' : 'spreadsheet-context-menu-hidden'\n\n if (!visible) {\n return null\n }\n\n return (\n <div\n ref={measuredRef}\n style={{ top, left }}\n className={`spreadsheet-context-menu ${visibleClass}`}\n onClick={handleContextClick(data, selected, setContextMenuProp, onCellsChanged)}\n >\n {createMenu(dataMenu)}\n </div>\n )\n}\n","import * as React from 'react'\nimport { Modal } from '../Modal'\nimport { H4 } from '../Typography'\nimport { Button } from '../Button'\nimport { handleCloseUploadModal, handleProcessValidRows } from './handlers'\nimport { calculateNumberOfInvalidRows } from './utils'\nimport { ModalUploadProp } from './types'\n\n// TODO modify modal's styles later\nexport const ModalUpload: React.FC<ModalUploadProp> = ({ uploadData, setUploadData }) => {\n const { header, isModalOpen, validatedData, invalidIndies } = uploadData\n return (\n <Modal\n tapOutsideToDissmiss={false}\n visible={isModalOpen}\n afterClose={handleCloseUploadModal(setUploadData)}\n footerItems={\n <>\n <Button variant=\"secondary\" type=\"button\" onClick={handleCloseUploadModal(setUploadData)}>\n Close\n </Button>\n <Button variant=\"primary\" type=\"button\" onClick={handleProcessValidRows(setUploadData)}>\n Process valid rows\n </Button>\n </>\n }\n title={`Process with ${validatedData.length} valid rows?`}\n >\n <div>\n {invalidIndies.length > 0 ? (\n <H4 className=\"has-text-danger\">{`Found ${calculateNumberOfInvalidRows(invalidIndies)} invalid rows`}</H4>\n ) : (\n <H4 className=\"has-text-info\">All rows are valid!</H4>\n )}\n <ul>\n {invalidIndies.map(({ row, col, cell }, index) => {\n return (\n <li key={index}>\n {/* Need to + 1 for user-readable reason */}\n Row: <span className=\"has-text-danger\">{row + 1}</span>, Columns:{' '}\n <span className=\"has-text-danger\">{header[col].value}</span>, Error:{' '}\n <span className=\"has-text-danger\">{cell.isValidated}</span>\n </li>\n )\n })}\n </ul>\n </div>\n </Modal>\n )\n}\n","import * as React from 'react'\n\nfunction createContext<A>() {\n const ctx = React.createContext<A | undefined>(undefined)\n const useCtx = () => {\n const c = React.useContext(ctx)\n if (!c) throw new Error('useContext must be inside a Provider with a value')\n return c\n }\n return [useCtx, ctx.Provider] as const\n}\n\nexport type HelpGuideContextValues = {\n current: number\n goNext: () => void\n goPrev: () => void\n isFirst: boolean\n isLast: boolean\n isLoading: boolean\n}\n\nexport const [useHelpGuideContext, HelpGuideContextProvider] = createContext<HelpGuideContextValues>()\n","import * as React from 'react'\nimport { MyReactDataSheet, Cell, SpreadsheetProps, SelectedMatrix, ContextMenuProp, UploadData } from './types'\nimport {\n valueRenderer,\n onSelectCells,\n customCellRenderer,\n handleAddNewRow,\n handleCellsChanged,\n handleClickUpload,\n handleOnChangeInput,\n handleDownload,\n handleContextMenu,\n hideContextMenu,\n handleSetContextMenu,\n handleAfterDataChanged,\n handleInitialDataChanged,\n handleDownloadSample,\n} from './handlers'\nimport { Button } from '../Button'\nimport { ContextMenu } from './context-menu'\nimport { usePrevious } from './utils'\nimport { ModalUpload } from './modal-upload'\nimport { H6 } from '../Typography'\n\nexport const UploadButton = ({ onChangeInput }) => {\n const uploadRef = React.useRef<HTMLInputElement>(null)\n return (\n <div className=\"upload-button\">\n <Button type=\"submit\" variant=\"primary\" onClick={handleClickUpload(uploadRef)}>\n Upload file\n </Button>\n <input hidden accept=\".csv\" ref={uploadRef} type=\"file\" name=\"file-upload\" onChange={onChangeInput} />\n </div>\n )\n}\n\nexport const DownloadButton = ({ data }) => {\n return (\n <div className=\"download-button\">\n <Button type=\"submit\" variant=\"primary\" onClick={handleDownload(data)}>\n Download file\n </Button>\n </div>\n )\n}\n\nexport const DownloadSampleButton = ({ headers }) => {\n return (\n <div className=\"download-button\">\n <Button type=\"submit\" variant=\"primary\" onClick={handleDownloadSample(headers)}>\n Download Sample\n </Button>\n </div>\n )\n}\n\nexport const AddRowButton = ({ addNewRow }) => {\n return (\n <div className=\"add-button\">\n <Button type=\"submit\" variant=\"primary\" onClick={addNewRow}>\n Add new\n </Button>\n </div>\n )\n}\n\nexport const getErrorsFromData = (data: Cell[][]): JSX.Element[] => {\n const errors: JSX.Element[] = []\n const headers = data[0]\n data.forEach((row = [], rowIndex) => {\n row.forEach((cell, colIndex) => {\n if (cell.error && cell.touched) {\n const fieldName = headers[colIndex].value\n const error = (\n <p className=\"has-text-danger\">\n Field <b>{fieldName}</b> row <b>{rowIndex}</b> has the following problem: {cell.error}\n </p>\n )\n errors.push(error)\n }\n })\n })\n return errors\n}\n\nexport const renderErrorElements = (data: Cell[][] = []) => {\n const errors = getErrorsFromData(data)\n if (!errors.length) return null\n return (\n <div className=\"has-text-danger pt-4\">\n <H6 className=\"has-text-danger mb-1\">The following validation errors have occurred:</H6>\n {errors}\n </div>\n )\n}\n\nconst initialUploadData: UploadData = {\n totalRow: 0,\n validatedData: [[]],\n invalidIndies: [],\n shouldProcess: false,\n isModalOpen: false,\n exceedMaxRow: false,\n header: [],\n}\n\nexport const Spreadsheet: React.FC<SpreadsheetProps> = ({\n data: initialData,\n description = '',\n hasUploadButton = true,\n hasDownloadButton = true,\n hasAddButton = true,\n validate,\n afterDataChanged,\n afterCellsChanged,\n afterUploadDataValidated,\n maxUploadRow = 30,\n CustomDownButton,\n /**\n * Required to set fixedReadOnly = true\n * To prevent it change readOnly property of Cell\n *\n */\n allowOnlyOneValidationErrorPerRow = false,\n hasDownloadSampleButton,\n sampleHeaders,\n ...rest\n}) => {\n const [selected, setSelected] = React.useState<SelectedMatrix | null>(null)\n\n const [data, setData] = React.useState<Cell[][]>([[]])\n // store data relevant to upload handler\n const [uploadData, setUploadData] = React.useState<UploadData>(initialUploadData)\n\n const prevData = usePrevious(data)\n\n const [contextMenuProp, setContextMenuProp] = React.useState<ContextMenuProp>({\n visible: false,\n top: 0,\n left: 0,\n })\n\n const cellRenderer = React.useCallback(customCellRenderer(data, setData, setSelected, afterCellsChanged), [data])\n\n const onCellsChanged = handleCellsChanged(\n data,\n setData,\n allowOnlyOneValidationErrorPerRow,\n validate,\n afterCellsChanged,\n )\n\n React.useEffect(handleSetContextMenu(setContextMenuProp.bind(null, hideContextMenu)), [])\n\n React.useEffect(handleInitialDataChanged(initialData, setData, allowOnlyOneValidationErrorPerRow, validate), [\n initialData,\n validate,\n ])\n\n React.useEffect(handleAfterDataChanged(data, prevData, afterDataChanged), [data])\n\n React.useEffect(() => {\n if (uploadData.shouldProcess && typeof afterUploadDataValidated === 'function') {\n afterUploadDataValidated({ uploadData, currentData: data, setData })\n setUploadData({ ...initialUploadData })\n }\n }, [afterUploadDataValidated, uploadData, data])\n\n return (\n <div className=\"spreadsheet\">\n <div className=\"wrap-top\">\n <div className=\"description\">\n {description}\n {allowOnlyOneValidationErrorPerRow && (\n <small>\n Cell of a row won&apos;t be editable if the row contains any invalidated cell (cell with background red)*\n </small>\n )}\n </div>\n <div className=\"button-group\">\n {hasUploadButton && (\n <UploadButton\n onChangeInput={handleOnChangeInput({\n setUploadData,\n maxUploadRow,\n validate,\n })}\n />\n )}\n {hasDownloadSampleButton && <DownloadSampleButton headers={sampleHeaders} />}\n {hasDownloadButton && CustomDownButton}\n {hasDownloadButton && !CustomDownButton && <DownloadButton data={data} />}\n </div>\n </div>\n <MyReactDataSheet\n overflow=\"wrap\"\n data={data}\n selected={selected}\n valueRenderer={valueRenderer}\n onCellsChanged={onCellsChanged}\n onSelect={onSelectCells(setSelected)}\n onContextMenu={handleContextMenu(setContextMenuProp)}\n cellRenderer={cellRenderer}\n {...rest}\n />\n {renderErrorElements(data)}\n <div className=\"wrap-bottom\">\n {hasAddButton && (\n <AddRowButton addNewRow={handleAddNewRow(data, setData, allowOnlyOneValidationErrorPerRow, validate)} />\n )}\n </div>\n <ContextMenu\n selected={selected}\n contextMenuProp={contextMenuProp}\n data={data}\n setContextMenuProp={setContextMenuProp}\n onCellsChanged={onCellsChanged}\n />\n <ModalUpload uploadData={uploadData} setUploadData={setUploadData} />\n </div>\n )\n}\n\nexport * from './types'\nexport * from './utils'\nexport { handleDownload as handleDownloadCsv }\n","export const generateNumbers = (total: number) => () => {\n const result: number[] = []\n for (let i = 0; i < total; i++) {\n result.push(i)\n }\n return result\n}\n","import * as React from 'react'\nimport { generateNumbers } from './utils'\n\nexport const LI_MARGIN = 30\n\nexport const caculateCircleRef = ({\n activeRef,\n circleRef,\n}: {\n activeRef: React.RefObject<HTMLLIElement>\n circleRef: React.RefObject<HTMLDivElement>\n}) => {\n if (circleRef.current && activeRef.current) {\n // calculate the gap between outer for '.circle-active' element and inner for li elements\n // offsetHeight for li element include margin-top and margin-bottom so need minus first\n const offset = activeRef.current.offsetHeight - LI_MARGIN * 2\n const gap = (circleRef.current.offsetHeight - offset) / 2\n // ensure the actived element will be rounded by wrapper with margin\n return activeRef.current.offsetTop + LI_MARGIN - gap\n }\n}\n\nexport const caculateLineRef = ({ activeRef }: { activeRef: React.RefObject<HTMLLIElement> }) => {\n // calculate the height for '.line-active'\n if (activeRef.current) {\n const nextSibling = activeRef.current.offsetTop\n return activeRef.current.nextElementSibling ? nextSibling + LI_MARGIN * 2 : activeRef.current.offsetTop\n }\n}\n\n// Calculate style '.circle-active' and '.line-active' elements when current active change\nexport const calculateElement = ({\n circleRef,\n activeRef,\n lineRef,\n}: {\n activeRef: React.RefObject<HTMLLIElement>\n circleRef: React.RefObject<HTMLDivElement>\n lineRef: React.RefObject<HTMLDivElement>\n}) => () => {\n if (circleRef.current && activeRef.current && lineRef.current) {\n const circlePosY = caculateCircleRef({ activeRef, circleRef })\n circleRef.current.style.transform = `translateY(${circlePosY}px)`\n if (window.matchMedia('(-ms-high-contrast:none)').matches) {\n circleRef.current.style.transform = `translate(-20px, ${circlePosY}px)`\n }\n\n const lineHeight = caculateLineRef({ activeRef })\n lineRef.current.style.height = `${lineHeight}px`\n }\n}\n\nexport const VerticalTimeline = ({ total, currentIndex, onSelect }) => {\n const circleRef = React.useRef<HTMLDivElement>(null)\n const lineRef = React.useRef<HTMLDivElement>(null)\n const activeRef = React.useRef<HTMLLIElement>(null)\n const numbers = React.useMemo(generateNumbers(total), [total])\n\n React.useEffect(calculateElement({ circleRef, lineRef, activeRef }), [currentIndex])\n\n return (\n <ul className=\"vertical-timeline\">\n <div ref={circleRef} className=\"circle-active\"></div>\n <div ref={lineRef} className=\"line-active\"></div>\n {numbers.map((item) => (\n <li\n ref={currentIndex === item ? activeRef : null}\n key={item}\n onClick={() => onSelect(item)}\n className={`${currentIndex === item ? 'active' : ''} ${currentIndex > item ? 'passed' : ''}`}\n ></li>\n ))}\n </ul>\n )\n}\n","import { useEffect, useState } from 'react'\n\nexport function isAndroid() {\n return navigator.userAgent.toLowerCase().indexOf('android') > -1\n}\n\nexport function isIOS() {\n return /iPad|iPhone|iPod/.test(navigator.userAgent)\n}\n\nexport function isMacLike() {\n return navigator.userAgent.indexOf('Mac OS X') > -1\n}\n\nexport function isDesktop() {\n return !navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry|IEMobile)/)\n}\n\nexport function isMobile() {\n const [windowWidth, setWindowWidth] = useState(() => window.innerWidth)\n useEffect(() => {\n const onResize = () => setWindowWidth(window.innerWidth)\n window.addEventListener('resize', onResize)\n return () => window.removeEventListener('resize', onResize)\n })\n\n return windowWidth <= 768\n}\n","import * as React from 'react'\nimport { generateNumbers } from './utils'\n\nexport const caculateCircleRef = ({\n activeRef,\n circleRef,\n}: {\n activeRef: React.RefObject<HTMLLIElement>\n circleRef: React.RefObject<HTMLDivElement>\n}) => {\n if (circleRef.current && activeRef.current) {\n const widthActiveItem = parseInt(window.getComputedStyle(activeRef.current, ':before').width, 10)\n const widthCircleWrapper = circleRef.current.offsetWidth\n // calculate the gap between outer for '.circle-active' element and inner for li elements\n const gap = (widthCircleWrapper - widthActiveItem) / 2\n // ensure the actived element will be rounded by wrapper with margin\n return activeRef.current.offsetLeft - gap\n }\n}\n\nexport const caculateLineRef = ({ activeRef }: { activeRef: React.RefObject<HTMLLIElement> }) => {\n // calculate the height for '.line-active'\n if (activeRef.current) {\n const widthActiveItem = parseInt(window.getComputedStyle(activeRef.current, ':before').width, 10)\n const marginBetween = parseInt(window.getComputedStyle(activeRef.current, ':before').marginRight, 10)\n const nextSibling = activeRef.current.offsetLeft + widthActiveItem\n return activeRef.current.nextElementSibling ? nextSibling + marginBetween / 2 : nextSibling\n }\n}\n\n// Calculate style '.circle-active' and '.line-active' elements when current active change\nexport const calculateElement = ({\n circleRef,\n activeRef,\n lineRef,\n}: {\n activeRef: React.RefObject<HTMLLIElement>\n circleRef: React.RefObject<HTMLDivElement>\n lineRef: React.RefObject<HTMLDivElement>\n}) => () => {\n if (circleRef.current && activeRef.current && lineRef.current) {\n const circlePosX = caculateCircleRef({ activeRef, circleRef })\n circleRef.current.style.transform = `translateX(${circlePosX}px)`\n\n const lineWidth = caculateLineRef({ activeRef })\n lineRef.current.style.width = `${lineWidth}px`\n }\n}\n\nexport const HorizontalTimeline = ({ total, currentIndex, onSelect }) => {\n const circleRef = React.useRef<HTMLDivElement>(null)\n const lineRef = React.useRef<HTMLDivElement>(null)\n const activeRef = React.useRef<HTMLLIElement>(null)\n\n const numbers = React.useMemo(generateNumbers(total), [total])\n\n React.useEffect(calculateElement({ circleRef, lineRef, activeRef }), [currentIndex])\n\n return (\n <ul className=\"horizontal-timeline\">\n <div ref={circleRef} className=\"circle-active\"></div>\n <div ref={lineRef} className=\"line-active\"></div>\n {numbers.map((item) => (\n <li\n key={item}\n ref={currentIndex === item ? activeRef : null}\n onClick={() => onSelect(item)}\n className={`${currentIndex === item ? 'active' : ''} ${currentIndex > item ? 'passed' : ''}`}\n ></li>\n ))}\n </ul>\n )\n}\n","import React from 'react'\nimport { CSSTransition } from 'react-transition-group'\nimport { CSSTransitionProps } from 'react-transition-group/CSSTransition'\nimport { helpGuideContent } from './__styles__/styles'\n\nexport const FADE_TIMEOUT = 1000\n\nexport type FadeProps = {\n in: boolean\n timeout?: number\n children: React.ReactNode[] | React.ReactNode\n} & CSSTransitionProps\n\nexport const Fade: React.FC<FadeProps> = (props: FadeProps) => {\n const nodeRef = React.useRef(null)\n return (\n <div className={helpGuideContent}>\n <CSSTransition classNames=\"fade\" {...props} nodeRef={nodeRef}>\n <div ref={nodeRef}>{props.children}</div>\n </CSSTransition>\n </div>\n )\n}\nconst defaultProps = {\n in: false,\n timeout: FADE_TIMEOUT,\n}\n\nFade.defaultProps = defaultProps\n\nexport default Fade\n","import React from 'react'\nimport { HelpGuideContextValues, HelpGuideContextProvider } from './context'\nimport { Section } from '../Layout'\nimport { VerticalTimeline } from './vertical-timeline'\nimport { SubTitleH6, H3 } from '../Typography'\nimport { isMobile } from '../../utils/device-detection/device-detection'\nimport { HorizontalTimeline } from './horizontal-timeline'\nimport Fade, { FADE_TIMEOUT } from './fade'\nimport { helpGuideImage, helpGuide } from './__styles__/styles'\n\nexport interface HelpGuideProps {\n children: React.ReactElement<HelpGuideStepProps> | React.ReactElement<HelpGuideStepProps>[]\n current?: number\n isLoading?: boolean\n}\n\nexport interface HelpGuideStepProps {\n id: string\n heading?: React.ReactNode\n subHeading?: React.ReactNode\n graphic?: React.ReactNode\n component?: React.FC<any>\n}\n\nexport interface NavigationProps {\n isFirst?: boolean\n isLast?: boolean\n currentStep?: number\n setCurrentStep: React.Dispatch<React.SetStateAction<number>>\n setIsExit: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nexport const handleGoNext = ({ isLast, setCurrentStep, currentStep = 0, setIsExit }: NavigationProps) => () => {\n if (!isLast) {\n setIsExit(true)\n setTimeout(() => {\n setCurrentStep(currentStep + 1)\n }, 0.5 * FADE_TIMEOUT)\n }\n}\n\nexport const handleGoPrev = ({ setCurrentStep, isFirst, currentStep = 0, setIsExit }: NavigationProps) => () => {\n if (!isFirst) {\n setIsExit(true)\n setTimeout(() => {\n setCurrentStep(currentStep - 1)\n }, 0.5 * FADE_TIMEOUT)\n }\n}\n\nexport const handleGoTo = ({ setCurrentStep, setIsExit }: NavigationProps) => (stepIndex: number) => {\n setIsExit(true)\n setTimeout(() => {\n setCurrentStep(stepIndex)\n }, 0.5 * FADE_TIMEOUT)\n}\n\nexport const renderTimeline = ({ total, currentStep, isMobileScreen, goTo }) => {\n if (isMobileScreen) {\n return <HorizontalTimeline total={total} currentIndex={currentStep} onSelect={goTo} />\n }\n return <VerticalTimeline total={total} currentIndex={currentStep} onSelect={goTo} />\n}\n\nexport const HelpGuide = ({ children, current = 0, isLoading = false }: HelpGuideProps) => {\n const isMobileScreen = isMobile()\n const [currentStep, setCurrentStep] = React.useState<number>(current)\n const [isExit, setIsExit] = React.useState<boolean>(false)\n const total = (children as React.ReactNode[]).length\n const isFirst = currentStep === 0\n const isLast = currentStep === total - 1\n const goTo = handleGoTo({ setCurrentStep, setIsExit })\n\n const value: HelpGuideContextValues = {\n current: currentStep,\n goNext: handleGoNext({ currentStep, isLast, setCurrentStep, setIsExit }),\n goPrev: handleGoPrev({ currentStep, isFirst, setCurrentStep, setIsExit }),\n isFirst,\n isLast,\n isLoading,\n }\n\n React.useEffect(() => {\n if (isExit) {\n setTimeout(() => {\n setIsExit(false)\n }, 0.5 * FADE_TIMEOUT)\n }\n }, [isExit])\n\n return (\n <HelpGuideContextProvider value={value}>\n <Section className={helpGuide} hasMargin={false} isFlex isFlexColumn={isMobileScreen}>\n {renderTimeline({ total, currentStep, isMobileScreen, goTo })}\n <Fade in={!isExit} timeout={300} unmountOnExit>\n <>{children[currentStep]}</>\n </Fade>\n </Section>\n </HelpGuideContextProvider>\n )\n}\n\nfunction HelpGuideStep({ component: Component, heading, subHeading, graphic }: HelpGuideStepProps) {\n return (\n <>\n <Section hasMargin={false}>\n <H3>{heading}</H3>\n <SubTitleH6>{subHeading}</SubTitleH6>\n </Section>\n <Section isFlex hasMargin={false}>\n {Component ? <Component /> : null}\n {!isMobile() && graphic && <div className={helpGuideImage}>{graphic}</div>}\n </Section>\n </>\n )\n}\n\nHelpGuide.Step = HelpGuideStep\n","import * as React from 'react'\n\nexport interface UploadProgressProps {\n visible: boolean\n percentage?: number\n totalCount?: number\n completedCount?: number\n}\n\nconst MAX = 100\nconst MIN = 0\n\nexport const UploadProgress: React.FC<UploadProgressProps> = ({\n visible,\n percentage = 0,\n totalCount = 0,\n completedCount = 0,\n}) => {\n let validPercentage = percentage\n if (percentage > MAX) {\n validPercentage = MAX\n }\n if (percentage < MIN) {\n validPercentage = MIN\n }\n\n return (\n <div className={`upload-progress has-background-info ${visible ? 'visible' : ''}`}>\n <span>Uploading...</span>\n <div className=\"upload-progress-inner\">\n <div className=\"upload-progress-bg\" style={{ width: `${validPercentage}%` }}></div>\n </div>\n <span>{`Complete ${completedCount}/${totalCount}`}</span>\n </div>\n )\n}\n","import * as React from 'react'\nimport Tooltip from 'rc-tooltip'\n\nexport interface CustomTagProps {\n label: string\n description: string\n link: string\n onClose: (event?: React.MouseEvent<HTMLElement, MouseEvent>) => void\n}\n\nexport const CustomTag: React.FC<CustomTagProps> = ({ label, description, link, onClose }) => {\n const handleRemoveTag = (event: React.SyntheticEvent) => {\n event?.preventDefault()\n onClose()\n }\n\n return (\n <Tooltip\n prefixCls=\"reapit-tooltip\"\n placement=\"bottomLeft\"\n overlay={\n <span className=\"reapit-tooltip-content\">\n {description}\n {'. '}\n {link && (\n <span>\n For more information on <b>{label}</b>, please{' '}\n <a className=\"reapit-tooltip-link\" href={link} rel=\"noopener noreferrer\" target=\"_blank\">\n click here\n </a>\n </span>\n )}\n </span>\n }\n >\n <div className=\"custom-tag tags has-addons\">\n <span className=\"tag is-light\">{label}</span>\n <a href=\"\" onClick={handleRemoveTag} className=\"tag is-light is-delete\"></a>\n </div>\n </Tooltip>\n )\n}\n\nexport default CustomTag\n","import React from 'react'\nimport { cx } from 'linaria'\nimport { breadcrumbItem, breadcrumbBold, breadcrumbLastItem } from './__styles__/styles'\n\nexport type RenderLinksParams = {\n children: React.ReactNode\n href?: string\n onClick?: React.MouseEventHandler<HTMLAnchorElement | HTMLSpanElement>\n style?: React.CSSProperties\n isCurrent?: boolean\n className?: string\n isLast?: boolean\n}\n\nexport const renderLinks = ({ children, href, onClick, style, isCurrent, className, isLast }: RenderLinksParams) => {\n if (href) {\n return (\n <a\n href={href}\n style={style}\n className={cx(className, isCurrent && breadcrumbBold, isLast && breadcrumbLastItem)}\n onClick={onClick}\n >\n {children}\n </a>\n )\n }\n return (\n <span\n style={style}\n className={cx(className, isCurrent && breadcrumbBold, isLast && breadcrumbLastItem)}\n onClick={onClick}\n >\n {children}\n </span>\n )\n}\n\nexport interface BreadcrumbItemProps {\n separator?: React.ReactNode\n href?: string\n onClick?: React.MouseEventHandler<HTMLAnchorElement | HTMLSpanElement>\n children?: React.ReactNode\n isLast?: boolean\n isCurrent?: boolean\n style?: React.CSSProperties\n className?: string\n}\n\nexport const BreadcrumbItem: React.FC<BreadcrumbItemProps> = ({\n separator = '/',\n href,\n children,\n onClick,\n isLast = false,\n isCurrent = false,\n className,\n style,\n}: BreadcrumbItemProps) => {\n const links = React.useMemo(() => {\n return renderLinks({ children, href, onClick, style, isCurrent, isLast, className })\n }, [])\n if (children && !isLast) {\n return (\n <span className={breadcrumbItem}>\n {links}\n {separator && separator !== '' && <span>{separator}</span>}\n </span>\n )\n }\n if (children && isLast) {\n return <span className={breadcrumbItem}>{links}</span>\n }\n return null\n}\n\nexport default React.memo(BreadcrumbItem)\n","import React from 'react'\nimport { isFragment } from 'react-is'\nimport BreadcrumbItem from './breadcrumb-item'\nimport { breadcrumbItem } from './__styles__/styles'\n\nexport const toArray = (children: React.ReactNode): React.ReactElement[] => {\n let result: React.ReactElement[] = []\n React.Children.forEach(children, (child: any) => {\n if (child === undefined || child === null) {\n return\n }\n if (Array.isArray(child)) {\n result = result.concat(toArray(child))\n } else if (isFragment(child) && child.props) {\n result = result.concat(toArray(child.props.children))\n } else {\n result.push(child)\n }\n })\n\n return result\n}\n\nexport const isValidElement = React.isValidElement\n\nexport const cloneElement = (element: React.ReactNode, props?: any): React.ReactNode => {\n if (!isValidElement(element)) return element\n return React.cloneElement(element, typeof props === 'function' ? props() : props)\n}\n\nexport const getBreadcrumbName = (route: Route, params: any) => {\n if (!route.breadcrumbName) {\n return null\n }\n const paramsKeys = Object.keys(params).join('|')\n const paramsRegex = new RegExp(`:(${paramsKeys})`, 'g')\n const name = route.breadcrumbName.replace(paramsRegex, (replacement, key) => params[key] || replacement)\n return name\n}\n\nexport interface Route {\n path: string\n breadcrumbName: string\n}\n\nexport interface BreadcrumbProps {\n routes?: Route[]\n params?: any\n separator?: React.ReactNode\n itemRender?: (route: Route, params: any, routes: Array<Route>, paths: Array<string>) => React.ReactNode\n style?: React.CSSProperties\n className?: string\n children?: React.ReactNode\n}\n\nexport const defaultItemRenderer = (\n route: Route,\n params: any,\n routes: Array<Route>,\n paths: Array<string>,\n): React.ReactNode => {\n const isLastItem = routes.indexOf(route) === routes.length - 1\n const name = getBreadcrumbName(route, params)\n return isLastItem ? <span className={breadcrumbItem}>{name}</span> : <a href={`#/${paths.join('/')}`}>{name}</a>\n}\n\nexport const getPath = (path: string, params: any) => {\n path = (path || '').replace(/^\\//, '')\n Object.keys(params).forEach((key) => {\n path = path.replace(`:${key}`, params[key])\n })\n return path\n}\n\nexport type GenForRoutesParams = {\n routes?: Route[]\n params?: any\n separator?: React.ReactNode\n itemRender?: (route: Route, params: any, routes: Array<Route>, paths: Array<string>) => React.ReactNode\n}\n\nexport const genForRoutes = ({\n routes = [],\n params = {},\n separator,\n itemRender = defaultItemRenderer,\n}: GenForRoutesParams) => {\n const paths: string[] = []\n return routes.map((route) => {\n const isLast = routes.indexOf(route) === routes.length - 1\n const path = getPath(route.path, params)\n if (path) {\n paths.push(path)\n }\n return (\n <BreadcrumbItem isLast={isLast} separator={separator} key={path || route.breadcrumbName}>\n {itemRender(route, params, routes, paths)}\n </BreadcrumbItem>\n )\n })\n}\n\nexport const Breadcrumb: React.FC<BreadcrumbProps> = ({\n className,\n style,\n routes,\n params,\n separator,\n itemRender,\n children,\n}: BreadcrumbProps) => {\n let crumbs\n if (routes && routes.length > 0) {\n crumbs = genForRoutes({ routes, params, separator, itemRender })\n } else {\n const childrenArr = toArray(children)\n crumbs = childrenArr.map((element: any, index) => {\n const isLastElement = childrenArr.length - 1 === index\n return cloneElement(element, {\n separator,\n key: index,\n isLast: isLastElement,\n })\n })\n }\n return (\n <div className={className} style={style}>\n {crumbs}\n </div>\n )\n}\n\nexport default Breadcrumb\n","import { CompletedCrop, Crop, ResizeDimensions } from './types'\n\nexport const generateDefaultCrop = (aspect?: number): Crop => ({\n unit: '%',\n width: 50,\n // if aspect is set, dont need height, because we can calculate height from width + aspect\n // otherwise set initial height\n height: aspect ? undefined : 50,\n aspect,\n})\n\nexport const generateDownload = (canvas: HTMLCanvasElement, completedCrop: CompletedCrop) => {\n if (!completedCrop || !canvas) {\n return\n }\n\n canvas.toBlob(\n (blob) => {\n const url = window.URL.createObjectURL(blob)\n const anchor = document.createElement('a')\n anchor.download = 'cropped.png'\n anchor.href = URL.createObjectURL(blob)\n anchor.click()\n window.URL.revokeObjectURL(url)\n },\n 'image/png',\n 1,\n )\n}\n\nexport const generateBase64FromCanvas = (canvas: HTMLCanvasElement, completedCrop: CompletedCrop): string => {\n if (!completedCrop || !canvas) {\n return ''\n }\n const base64Data = canvas.toDataURL('image/png')\n return base64Data\n}\n\nexport const calculateOutputDimensions = ({\n cropRatio,\n resizeDimensions,\n originWidth,\n originHeight,\n}: {\n cropRatio: number\n resizeDimensions?: ResizeDimensions\n originWidth: number\n originHeight: number\n}): { outputWidth: number; outputHeight: number } => {\n const isWidthGreaterThanHeight = !resizeDimensions && cropRatio > 1\n const isHeightGreaterThanOrEqualWidth = !resizeDimensions && cropRatio <= 1\n\n // if not set resizeDimensions, calculate from original width & height\n if (isWidthGreaterThanHeight) {\n return {\n outputWidth: originWidth,\n outputHeight: originWidth / cropRatio,\n }\n }\n\n if (isHeightGreaterThanOrEqualWidth) {\n return {\n outputHeight: originHeight,\n outputWidth: originHeight * cropRatio,\n }\n }\n\n // if set, take that\n return {\n outputWidth: resizeDimensions?.width as number,\n outputHeight: resizeDimensions?.height as number,\n }\n}\n","import * as React from 'react'\nimport { generateBase64FromCanvas, calculateOutputDimensions } from './utils'\nimport { CompletedCrop, OnCropClick, Crop, ResizeDimensions } from './types'\n\nconst DEFAULT_CANVAS_AXIS_COORDINATE = 0\n\n// ImageCropper's handlers\nexport const drawCanvasAfterCrop = ({\n completedCrop: crop,\n previewCanvasRef,\n imgRef,\n resizeDimensions,\n}: {\n completedCrop: CompletedCrop\n previewCanvasRef: React.RefObject<HTMLCanvasElement>\n imgRef: React.RefObject<HTMLImageElement>\n resizeDimensions?: ResizeDimensions\n}) => () => {\n if (!crop || !previewCanvasRef.current || !imgRef.current) {\n return\n }\n\n const image = imgRef.current\n const canvas = previewCanvasRef.current\n\n const originWidth = image.naturalWidth\n const originHeight = image.naturalHeight\n\n const scaleX = originWidth / image.width\n const scaleY = originHeight / image.height\n\n const cropRatio = crop.width / crop.height\n\n const { outputWidth, outputHeight } = calculateOutputDimensions({\n cropRatio,\n resizeDimensions,\n originHeight,\n originWidth,\n })\n\n const ctx = canvas.getContext('2d')\n\n if (ctx === null) {\n return\n }\n\n // set real dimension when download, different from display dimension in preview\n // to retain high-quality image\n canvas.width = outputWidth\n canvas.height = outputHeight\n\n ctx.drawImage(\n image,\n crop.x * scaleX,\n crop.y * scaleY,\n crop.width * scaleX,\n crop.height * scaleY,\n DEFAULT_CANVAS_AXIS_COORDINATE,\n DEFAULT_CANVAS_AXIS_COORDINATE,\n outputWidth,\n outputHeight,\n )\n}\n\nexport const onLoadHandler = (imgRef: React.RefObject<HTMLImageElement>) => (img) => {\n ;(imgRef as React.MutableRefObject<HTMLImageElement>).current = img\n}\n\nexport const onChangeHandler = (setCrop: React.Dispatch<Crop>) => (crop: Crop) => setCrop(crop)\n\nexport const onCompleteHandler = (setCompletedCrop: React.Dispatch<CompletedCrop>) => (completedCrop: CompletedCrop) =>\n setCompletedCrop(completedCrop)\n\nexport const onCropClickHandler = ({\n previewCanvasRef,\n completedCrop,\n onCropClick,\n}: {\n previewCanvasRef: React.RefObject<HTMLCanvasElement>\n completedCrop: CompletedCrop\n onCropClick: OnCropClick\n}) => () => {\n onCropClick({ previewCanvasRef, completedCrop })\n}\n\nexport const onChangeUpImage = ({ setCrop, crop }: { setCrop: React.Dispatch<Crop>; crop: Crop }) => () => {\n setCrop(crop)\n}\n\n// ImageCropperWithInput's handlers\nexport const onCloseHandler = ({\n setVisible,\n setUpImg,\n setCroppedImage,\n}: {\n setVisible: React.Dispatch<boolean>\n setUpImg: React.Dispatch<string>\n setCroppedImage: React.Dispatch<string | null>\n}) => () => {\n setUpImg('')\n setCroppedImage('')\n setVisible(false)\n}\n\nexport const onCropClick = ({\n setCroppedImage,\n setVisible,\n}: {\n setCroppedImage: React.Dispatch<string | null>\n setVisible: React.Dispatch<boolean>\n}) => ({ previewCanvasRef, completedCrop }) => {\n const base64Data = generateBase64FromCanvas(previewCanvasRef.current, completedCrop)\n setCroppedImage(base64Data)\n setVisible(false)\n}\n","import * as React from 'react'\n\n/**\n * To integrate with other components\n */\nexport const passedFunctions = {\n // when finish upload, set img src and show modal to crop image\n // <ImageInput /> integration\n afterLoadedImage: ({\n setUpImg,\n setVisible,\n setCroppedImage,\n }: {\n setUpImg: React.Dispatch<string>\n setVisible: React.Dispatch<boolean>\n setCroppedImage: React.Dispatch<string | null>\n }) => (base64: string) => {\n setUpImg(base64)\n setCroppedImage(base64)\n setVisible(true)\n },\n}\n","import * as React from 'react'\nimport ReactCrop from 'react-image-crop'\nimport {\n reactImageCropGlobalStyles,\n imageCropperOuter,\n imageCropperInner,\n imageCropperContent,\n imageCropperCropPanelWrapper,\n imageCropperCropPanel,\n imageCropperPreviewWrapper,\n imageCropperPreview,\n imageCropperActionWrapper,\n} from './__styles__/styles'\nimport { cx } from 'linaria'\nimport { Button } from '../Button'\nimport { H5 } from '../Typography'\nimport { ImageInput } from '../ImageInput'\nimport {\n drawCanvasAfterCrop,\n onLoadHandler,\n onCropClickHandler,\n onChangeHandler,\n onCompleteHandler,\n onCropClick,\n onCloseHandler,\n onChangeUpImage,\n} from './handlers'\nimport { generateDefaultCrop } from './utils'\nimport { passedFunctions } from './integration-helpers'\nimport { ImageCropperProps, ImageCropperWithInputProps, Crop, CompletedCrop } from './types'\n\nexport const renderChildrenWithProps = (children: React.ReactNode | undefined, props: { [key: string]: any }) => {\n if (!children) {\n return\n }\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, { ...props })\n }\n return child\n })\n return <div>{childrenWithProps}</div>\n}\n\nexport const ImageCropper: React.FC<ImageCropperProps> = ({\n upImg,\n setUpImg,\n visible,\n setVisible,\n croppedImage,\n setCroppedImage,\n onClose,\n onCropClick,\n aspect,\n resizeDimensions,\n children,\n}) => {\n const defaultCrop: Crop = generateDefaultCrop(aspect)\n const imgRef = React.useRef<HTMLImageElement>(null)\n const previewCanvasRef = React.useRef<HTMLCanvasElement>(null)\n const [crop, setCrop] = React.useState<Crop>(defaultCrop)\n const [completedCrop, setCompletedCrop] = React.useState<CompletedCrop>(null)\n\n React.useEffect(drawCanvasAfterCrop({ completedCrop, previewCanvasRef, imgRef, resizeDimensions }), [completedCrop])\n\n // update crop when image change\n React.useEffect(onChangeUpImage({ crop: defaultCrop, setCrop }), [upImg])\n\n // if user cancels crop by clicking outside, this will be set to false\n const isImageCropped = Boolean(completedCrop?.width && completedCrop.height)\n\n return (\n <>\n {renderChildrenWithProps(children, {\n afterLoadedImage: passedFunctions.afterLoadedImage({ setUpImg, setVisible, setCroppedImage }),\n croppedImage,\n })}\n {visible && (\n <div className={cx(reactImageCropGlobalStyles, imageCropperOuter)}>\n <div className={imageCropperInner}>\n <div className={imageCropperContent}>\n <div className={imageCropperCropPanelWrapper}>\n <H5 isCentered>Crop Image</H5>\n <ReactCrop\n ruleOfThirds\n className={imageCropperCropPanel}\n src={upImg}\n onImageLoaded={onLoadHandler(imgRef)}\n crop={crop}\n onChange={onChangeHandler(setCrop)}\n onComplete={onCompleteHandler(setCompletedCrop)}\n />\n </div>\n <div className={imageCropperPreviewWrapper}>\n <H5 isCentered>Preview</H5>\n {isImageCropped && <canvas ref={previewCanvasRef} className={imageCropperPreview} />}\n </div>\n </div>\n <div className={imageCropperActionWrapper}>\n <Button type=\"button\" variant=\"secondary\" onClick={onClose}>\n Cancel\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n disabled={!isImageCropped}\n onClick={onCropClickHandler({ previewCanvasRef, completedCrop, onCropClick })}\n >\n Crop\n </Button>\n </div>\n </div>\n </div>\n )}\n </>\n )\n}\n\n/**\n * Pre-integrated with <ImageInput />\n */\nexport const ImageCropperWithInput: React.FC<ImageCropperWithInputProps> = ({\n aspect,\n resizeDimensions,\n ...inputProps\n}) => {\n const [upImg, setUpImg] = React.useState<string>('')\n const [visible, setVisible] = React.useState<boolean>(false)\n const [croppedImage, setCroppedImage] = React.useState<string | null>(null)\n\n return (\n <ImageCropper\n aspect={aspect}\n setUpImg={setUpImg}\n upImg={upImg}\n visible={visible}\n setVisible={setVisible}\n onClose={onCloseHandler({ setVisible, setUpImg, setCroppedImage })}\n onCropClick={onCropClick({ setCroppedImage, setVisible })}\n croppedImage={croppedImage}\n setCroppedImage={setCroppedImage}\n resizeDimensions={resizeDimensions}\n >\n <ImageInput {...inputProps} />\n </ImageCropper>\n )\n}\n","import dayjs from 'dayjs'\nimport { MutableRefObject } from 'react'\nimport { fieldValidateRequire } from '../../utils/validators'\n\nexport type CardType = 'visa' | 'mastercard' | 'amex' | 'unknown'\n\nexport const isAmex = (cardString: string) => {\n return cardString.startsWith('34') || cardString.startsWith('37')\n}\n\nexport const isVisa = (cardString: string) => {\n return cardString.startsWith('4')\n}\n\nexport const isMasterCard = (cardString: string) => {\n const firstTwoDigits = Number(cardString.substring(0, 2))\n const firstFourDigits = Number(cardString.substring(0, 4))\n if (firstTwoDigits > 50 && firstTwoDigits < 56) return true\n if (firstFourDigits > 2220 && firstFourDigits < 2721) return true\n return false\n}\n\n// See: https://en.wikipedia.org/wiki/Payment_card_number for card identifiers\nexport const getCardType = (cardString: string): CardType => {\n if (isVisa(cardString)) return 'visa'\n if (isMasterCard(cardString)) return 'mastercard'\n if (isAmex(cardString)) return 'amex'\n return 'unknown'\n}\n\nexport const formatCardNumber = (cardNumber: string, input: MutableRefObject<null | HTMLInputElement>) => {\n if (!input.current) return ''\n\n const selectionStart = input.current.selectionStart as number\n const trimmedCardNum = cardNumber.replace(/\\s+/g, '')\n const isAmex = getCardType(trimmedCardNum) === 'amex'\n /* Handle American Express 4-6-5 spacing format */\n const partitions = isAmex ? [3, 9] : [3, 7, 11]\n\n /* Handle caret position if user edits the number later */\n if (selectionStart < cardNumber.length - 1) {\n input.current.setSelectionRange(selectionStart, selectionStart, 'none')\n }\n\n return trimmedCardNum\n .split('')\n .map((item: string, index: number) => {\n if (partitions.includes(index) && trimmedCardNum.length !== index + 1) {\n return `${item} `\n }\n\n return item\n })\n .join('')\n}\n\nexport const unformatCard = (formattedCard: string) => formattedCard.split(' ').join('')\n\nexport const formatCardExpires = (cardNumber: string, input: MutableRefObject<null | HTMLInputElement>) => {\n if (!input.current) return ''\n\n const selectionStart = input.current.selectionStart as number\n const trimmedCardNum = cardNumber.replace(/\\s+/g, '').replace(/\\//g, '')\n /* Handle caret position if user edits the number later */\n if (selectionStart < cardNumber.length - 1) {\n input.current.setSelectionRange(selectionStart, selectionStart, 'none')\n }\n\n return trimmedCardNum\n .split('')\n .map((item: string, index: number) => {\n if (index === 1 && trimmedCardNum.length > 2) {\n return `${item} / `\n }\n\n return item\n })\n .join('')\n}\n\nexport const unformatCardExpires = (formattedCard: string) => formattedCard.split(' ').join('').replace(/\\//g, '')\n\nexport const validateCard = (value: string, whiteListTestCards: string[]) => {\n const requiredError = fieldValidateRequire(value)\n const cardType = getCardType(value)\n const unformattedCard = unformatCard(value)\n const whiteListTestCard = whiteListTestCards.find((card) => card === unformattedCard)\n const cardLength = whiteListTestCard ? whiteListTestCard.length : cardType === 'amex' ? 15 : 16\n\n if (requiredError) {\n return requiredError\n }\n\n if (isNaN(Number(unformattedCard))) {\n return 'Card number should be numeric characters only'\n }\n\n if (cardLength !== unformattedCard.length) {\n return `Card number needs to be ${cardLength} numbers to be valid`\n }\n\n return null\n}\n\nexport const validateSecureCode = (value: string, cardType: CardType) => {\n const requiredError = fieldValidateRequire(value)\n const codeLength = cardType === 'amex' ? 4 : 3\n\n if (requiredError) {\n return requiredError\n }\n\n if (isNaN(Number(value))) {\n return 'CSV should be numeric characters only'\n }\n\n if (codeLength !== value.length) {\n return `CSV needs to be ${codeLength} numbers to be valid`\n }\n\n return null\n}\n\nexport const validateCardExpires = (value: string) => {\n const now = dayjs()\n const fomattedValue = dayjs(value.replace(/\\s+/g, ''), 'MM/YY')\n const requiredError = fieldValidateRequire(value)\n const trimmedCardNum = value.replace(/\\s+/g, '').replace(/\\//g, '')\n\n if (requiredError) {\n return requiredError\n }\n\n if (isNaN(Number(trimmedCardNum))) {\n return 'Dates should be numeric characters only'\n }\n\n if (fomattedValue.isBefore(now)) {\n return 'Card has expired'\n }\n\n return null\n}\n\nexport const handleValidateCard = (whiteListTestCards: string[]) => (value: string) =>\n validateCard(value, whiteListTestCards)\n\nexport const handleValidateSecureCode = (cardType: CardType) => (value: string) => validateSecureCode(value, cardType)\n","import { SelectBoxOptions } from '../SelectBox'\n\nexport const COUNTRY_OPTIONS: SelectBoxOptions[] = [\n { value: 'GB', label: 'United Kingdom' },\n { value: 'AF', label: 'Afghanistan' },\n { value: 'AX', label: 'Åland Islands' },\n { value: 'AL', label: 'Albania' },\n { value: 'DZ', label: 'Algeria' },\n { value: 'AS', label: 'American Samoa' },\n { value: 'AD', label: 'Andorra' },\n { value: 'AO', label: 'Angola' },\n { value: 'AI', label: 'Anguilla' },\n { value: 'AQ', label: 'Antarctica' },\n { value: 'AG', label: 'Antigua and Barbuda' },\n { value: 'AR', label: 'Argentina' },\n { value: 'AM', label: 'Armenia' },\n { value: 'AW', label: 'Aruba' },\n { value: 'AU', label: 'Australia' },\n { value: 'AT', label: 'Austria' },\n { value: 'AZ', label: 'Azerbaijan' },\n { value: 'BS', label: 'Bahamas' },\n { value: 'BH', label: 'Bahrain' },\n { value: 'BD', label: 'Bangladesh' },\n { value: 'BB', label: 'Barbados' },\n { value: 'BY', label: 'Belarus' },\n { value: 'BE', label: 'Belgium' },\n { value: 'BZ', label: 'Belize' },\n { value: 'BJ', label: 'Benin' },\n { value: 'BM', label: 'Bermuda' },\n { value: 'BT', label: 'Bhutan' },\n { value: 'BO', label: 'Bolivia, Plurinational State of' },\n { value: 'BQ', label: 'Bonaire, Sint Eustatius and Saba' },\n { value: 'BA', label: 'Bosnia and Herzegovina' },\n { value: 'BW', label: 'Botswana' },\n { value: 'BV', label: 'Bouvet Island' },\n { value: 'BR', label: 'Brazil' },\n { value: 'IO', label: 'British Indian Ocean Territory' },\n { value: 'BN', label: 'Brunei Darussalam' },\n { value: 'BG', label: 'Bulgaria' },\n { value: 'BF', label: 'Burkina Faso' },\n { value: 'BI', label: 'Burundi' },\n { value: 'KH', label: 'Cambodia' },\n { value: 'CM', label: 'Cameroon' },\n { value: 'CA', label: 'Canada' },\n { value: 'CV', label: 'Cape Verde' },\n { value: 'KY', label: 'Cayman Islands' },\n { value: 'CF', label: 'Central African Republic' },\n { value: 'TD', label: 'Chad' },\n { value: 'CL', label: 'Chile' },\n { value: 'CN', label: 'China' },\n { value: 'CX', label: 'Christmas Island' },\n { value: 'CC', label: 'Cocos (Keeling) Islands' },\n { value: 'CO', label: 'Colombia' },\n { value: 'KM', label: 'Comoros' },\n { value: 'CG', label: 'Congo' },\n { value: 'CD', label: 'Congo, the Democratic Republic of the' },\n { value: 'CK', label: 'Cook Islands' },\n { value: 'CR', label: 'Costa Rica' },\n { value: 'CI', label: \"Côte d'Ivoire\" },\n { value: 'HR', label: 'Croatia' },\n { value: 'CU', label: 'Cuba' },\n { value: 'CW', label: 'Curaçao' },\n { value: 'CY', label: 'Cyprus' },\n { value: 'CZ', label: 'Czech Republic' },\n { value: 'DK', label: 'Denmark' },\n { value: 'DJ', label: 'Djibouti' },\n { value: 'DM', label: 'Dominica' },\n { value: 'DO', label: 'Dominican Republic' },\n { value: 'EC', label: 'Ecuador' },\n { value: 'EG', label: 'Egypt' },\n { value: 'SV', label: 'El Salvador' },\n { value: 'GQ', label: 'Equatorial Guinea' },\n { value: 'ER', label: 'Eritrea' },\n { value: 'EE', label: 'Estonia' },\n { value: 'ET', label: 'Ethiopia' },\n { value: 'FK', label: 'Falkland Islands (Malvinas)' },\n { value: 'FO', label: 'Faroe Islands' },\n { value: 'FJ', label: 'Fiji' },\n { value: 'FI', label: 'Finland' },\n { value: 'FR', label: 'France' },\n { value: 'GF', label: 'French Guiana' },\n { value: 'PF', label: 'French Polynesia' },\n { value: 'TF', label: 'French Southern Territories' },\n { value: 'GA', label: 'Gabon' },\n { value: 'GM', label: 'Gambia' },\n { value: 'GE', label: 'Georgia' },\n { value: 'DE', label: 'Germany' },\n { value: 'GH', label: 'Ghana' },\n { value: 'GI', label: 'Gibraltar' },\n { value: 'GR', label: 'Greece' },\n { value: 'GL', label: 'Greenland' },\n { value: 'GD', label: 'Grenada' },\n { value: 'GP', label: 'Guadeloupe' },\n { value: 'GU', label: 'Guam' },\n { value: 'GT', label: 'Guatemala' },\n { value: 'GG', label: 'Guernsey' },\n { value: 'GN', label: 'Guinea' },\n { value: 'GW', label: 'Guinea-Bissau' },\n { value: 'GY', label: 'Guyana' },\n { value: 'HT', label: 'Haiti' },\n { value: 'HM', label: 'Heard Island and McDonald Islands' },\n { value: 'VA', label: 'Holy See (Vatican City State)' },\n { value: 'HN', label: 'Honduras' },\n { value: 'HK', label: 'Hong Kong' },\n { value: 'HU', label: 'Hungary' },\n { value: 'IS', label: 'Iceland' },\n { value: 'IN', label: 'India' },\n { value: 'ID', label: 'Indonesia' },\n { value: 'IR', label: 'Iran, Islamic Republic of' },\n { value: 'IQ', label: 'Iraq' },\n { value: 'IE', label: 'Ireland' },\n { value: 'IM', label: 'Isle of Man' },\n { value: 'IL', label: 'Israel' },\n { value: 'IT', label: 'Italy' },\n { value: 'JM', label: 'Jamaica' },\n { value: 'JP', label: 'Japan' },\n { value: 'JE', label: 'Jersey' },\n { value: 'JO', label: 'Jordan' },\n { value: 'KZ', label: 'Kazakhstan' },\n { value: 'KE', label: 'Kenya' },\n { value: 'KI', label: 'Kiribati' },\n { value: 'KP', label: \"Korea, Democratic People's Republic of\" },\n { value: 'KR', label: 'Korea, Republic of' },\n { value: 'KW', label: 'Kuwait' },\n { value: 'KG', label: 'Kyrgyzstan' },\n { value: 'LA', label: \"Lao People's Democratic Republic\" },\n { value: 'LV', label: 'Latvia' },\n { value: 'LB', label: 'Lebanon' },\n { value: 'LS', label: 'Lesotho' },\n { value: 'LR', label: 'Liberia' },\n { value: 'LY', label: 'Libya' },\n { value: 'LI', label: 'Liechtenstein' },\n { value: 'LT', label: 'Lithuania' },\n { value: 'LU', label: 'Luxembourg' },\n { value: 'MO', label: 'Macao' },\n { value: 'MK', label: 'Macedonia, the former Yugoslav Republic of' },\n { value: 'MG', label: 'Madagascar' },\n { value: 'MW', label: 'Malawi' },\n { value: 'MY', label: 'Malaysia' },\n { value: 'MV', label: 'Maldives' },\n { value: 'ML', label: 'Mali' },\n { value: 'MT', label: 'Malta' },\n { value: 'MH', label: 'Marshall Islands' },\n { value: 'MQ', label: 'Martinique' },\n { value: 'MR', label: 'Mauritania' },\n { value: 'MU', label: 'Mauritius' },\n { value: 'YT', label: 'Mayotte' },\n { value: 'MX', label: 'Mexico' },\n { value: 'FM', label: 'Micronesia, Federated States of' },\n { value: 'MD', label: 'Moldova, Republic of' },\n { value: 'MC', label: 'Monaco' },\n { value: 'MN', label: 'Mongolia' },\n { value: 'ME', label: 'Montenegro' },\n { value: 'MS', label: 'Montserrat' },\n { value: 'MA', label: 'Morocco' },\n { value: 'MZ', label: 'Mozambique' },\n { value: 'MM', label: 'Myanmar' },\n { value: 'NA', label: 'Namibia' },\n { value: 'NR', label: 'Nauru' },\n { value: 'NP', label: 'Nepal' },\n { value: 'NL', label: 'Netherlands' },\n { value: 'NC', label: 'New Caledonia' },\n { value: 'NZ', label: 'New Zealand' },\n { value: 'NI', label: 'Nicaragua' },\n { value: 'NE', label: 'Niger' },\n { value: 'NG', label: 'Nigeria' },\n { value: 'NU', label: 'Niue' },\n { value: 'NF', label: 'Norfolk Island' },\n { value: 'MP', label: 'Northern Mariana Islands' },\n { value: 'NO', label: 'Norway' },\n { value: 'OM', label: 'Oman' },\n { value: 'PK', label: 'Pakistan' },\n { value: 'PW', label: 'Palau' },\n { value: 'PS', label: 'Palestinian Territory, Occupied' },\n { value: 'PA', label: 'Panama' },\n { value: 'PG', label: 'Papua New Guinea' },\n { value: 'PY', label: 'Paraguay' },\n { value: 'PE', label: 'Peru' },\n { value: 'PH', label: 'Philippines' },\n { value: 'PN', label: 'Pitcairn' },\n { value: 'PL', label: 'Poland' },\n { value: 'PT', label: 'Portugal' },\n { value: 'PR', label: 'Puerto Rico' },\n { value: 'QA', label: 'Qatar' },\n { value: 'RE', label: 'Réunion' },\n { value: 'RO', label: 'Romania' },\n { value: 'RU', label: 'Russian Federation' },\n { value: 'RW', label: 'Rwanda' },\n { value: 'BL', label: 'Saint Barthélemy' },\n { value: 'SH', label: 'Saint Helena, Ascension and Tristan da Cunha' },\n { value: 'KN', label: 'Saint Kitts and Nevis' },\n { value: 'LC', label: 'Saint Lucia' },\n { value: 'MF', label: 'Saint Martin (French part)' },\n { value: 'PM', label: 'Saint Pierre and Miquelon' },\n { value: 'VC', label: 'Saint Vincent and the Grenadines' },\n { value: 'WS', label: 'Samoa' },\n { value: 'SM', label: 'San Marino' },\n { value: 'ST', label: 'Sao Tome and Principe' },\n { value: 'SA', label: 'Saudi Arabia' },\n { value: 'SN', label: 'Senegal' },\n { value: 'RS', label: 'Serbia' },\n { value: 'SC', label: 'Seychelles' },\n { value: 'SL', label: 'Sierra Leone' },\n { value: 'SG', label: 'Singapore' },\n { value: 'SX', label: 'Sint Maarten (Dutch part)' },\n { value: 'SK', label: 'Slovakia' },\n { value: 'SI', label: 'Slovenia' },\n { value: 'SB', label: 'Solomon Islands' },\n { value: 'SO', label: 'Somalia' },\n { value: 'ZA', label: 'South Africa' },\n { value: 'GS', label: 'South Georgia and the South Sandwich Islands' },\n { value: 'SS', label: 'South Sudan' },\n { value: 'ES', label: 'Spain' },\n { value: 'LK', label: 'Sri Lanka' },\n { value: 'SD', label: 'Sudan' },\n { value: 'SR', label: 'Suriname' },\n { value: 'SJ', label: 'Svalbard and Jan Mayen' },\n { value: 'SZ', label: 'Swaziland' },\n { value: 'SE', label: 'Sweden' },\n { value: 'CH', label: 'Switzerland' },\n { value: 'SY', label: 'Syrian Arab Republic' },\n { value: 'TW', label: 'Taiwan, Province of China' },\n { value: 'TJ', label: 'Tajikistan' },\n { value: 'TZ', label: 'Tanzania, United Republic of' },\n { value: 'TH', label: 'Thailand' },\n { value: 'TL', label: 'Timor-Leste' },\n { value: 'TG', label: 'Togo' },\n { value: 'TK', label: 'Tokelau' },\n { value: 'TO', label: 'Tonga' },\n { value: 'TT', label: 'Trinidad and Tobago' },\n { value: 'TN', label: 'Tunisia' },\n { value: 'TR', label: 'Turkey' },\n { value: 'TM', label: 'Turkmenistan' },\n { value: 'TC', label: 'Turks and Caicos Islands' },\n { value: 'TV', label: 'Tuvalu' },\n { value: 'UG', label: 'Uganda' },\n { value: 'UA', label: 'Ukraine' },\n { value: 'AE', label: 'United Arab Emirates' },\n { value: 'US', label: 'United States' },\n { value: 'UM', label: 'United States Minor Outlying Islands' },\n { value: 'UY', label: 'Uruguay' },\n { value: 'UZ', label: 'Uzbekistan' },\n { value: 'VU', label: 'Vanuatu' },\n { value: 'VE', label: 'Venezuela, Bolivarian Republic of' },\n { value: 'VN', label: 'Viet Nam' },\n { value: 'VG', label: 'Virgin Islands, British' },\n { value: 'VI', label: 'Virgin Islands, U.S.' },\n { value: 'WF', label: 'Wallis and Futuna' },\n { value: 'EH', label: 'Western Sahara' },\n { value: 'YE', label: 'Yemen' },\n { value: 'ZM', label: 'Zambia' },\n { value: 'ZW', label: 'Zimbabwe' },\n]\n","import React, { useRef } from 'react'\nimport { Field, FieldProps } from 'formik'\nimport { checkError } from '../../utils/form'\nimport { cx } from 'linaria'\nimport { InputProps } from '../Input'\nimport { formatCardExpires, validateCardExpires } from './card-helpers'\n\nexport type CardExpiresInputProps = Pick<\n InputProps,\n 'name' | 'labelText' | 'id' | 'dataTest' | 'required' | 'disabled' | 'className'\n>\n\nexport const CardExpiresInput = ({\n name,\n labelText,\n id,\n dataTest = '',\n required = true,\n disabled = false,\n className = '',\n}: CardExpiresInputProps) => (\n <Field name={name} validate={required ? validateCardExpires : null}>\n {({ field, meta }: FieldProps<string | number>) => {\n const hasError = checkError(meta)\n const inputClassName = hasError ? 'input is-danger' : 'input is-primary'\n const defaultValue = ''\n const inputRef = useRef(null)\n\n return (\n <div className={cx('field', className)}>\n <div className=\"control\">\n <label className={`label inline-block ${required ? 'required-label' : ''}`} htmlFor={id}>\n {labelText}\n </label>\n <input\n ref={inputRef}\n disabled={disabled}\n data-test={dataTest}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"expiryDate\"\n maxLength={7}\n id={id}\n placeholder=\"MM / YY\"\n className={cx(inputClassName)}\n {...field}\n value={formatCardExpires(String(field.value), inputRef) || defaultValue}\n />\n </div>\n {hasError && (\n <div className=\"has-text-danger\" data-test=\"input-error\">\n {meta.error}\n </div>\n )}\n </div>\n )\n }}\n </Field>\n)\n","import React, { Dispatch, SetStateAction, useEffect, useRef } from 'react'\nimport { Field, FieldProps } from 'formik'\nimport { checkError } from '../../utils/form'\nimport { cx } from 'linaria'\nimport { InputProps } from '../Input'\nimport { FaCreditCard, FaCcVisa, FaCcMastercard, FaCcAmex } from 'react-icons/fa'\nimport { CardType, formatCardNumber, getCardType, handleValidateCard } from './card-helpers'\n\nexport type CardInputProps = Pick<\n InputProps,\n 'name' | 'labelText' | 'id' | 'dataTest' | 'required' | 'disabled' | 'className'\n> & {\n whiteListTestCards?: string[]\n setCardType?: Dispatch<SetStateAction<CardType>>\n cardType?: CardType\n}\n\nexport const CardInput = ({\n name,\n labelText,\n id,\n dataTest = '',\n required = true,\n disabled = false,\n className = '',\n whiteListTestCards = [],\n cardType = 'unknown',\n setCardType,\n}: CardInputProps) => (\n <Field name={name} validate={required ? handleValidateCard(whiteListTestCards) : null}>\n {({ field, meta }: FieldProps<string | number>) => {\n const hasError = checkError(meta)\n const inputClassName = hasError ? 'input is-danger' : 'input is-primary'\n const defaultValue = ''\n const inputRef = useRef(null)\n\n useEffect(() => {\n if (setCardType) {\n const cardTypeFromField = getCardType(field.value as string)\n setCardType(cardTypeFromField)\n }\n }, [setCardType, field.value])\n\n return (\n <div className={cx('field', className)}>\n <div className=\"control has-icons-right\">\n <label className={`label inline-block ${required ? 'required-label' : ''}`} htmlFor={id}>\n {labelText}\n </label>\n <input\n ref={inputRef}\n disabled={disabled}\n data-test={dataTest}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"cardNumber\"\n maxLength={cardType === 'amex' ? 17 : 19}\n id={id}\n placeholder=\"xxxx xxxx xxxx xxxx\"\n className={cx(inputClassName)}\n {...field}\n value={formatCardNumber(String(field.value), inputRef) || defaultValue}\n />\n <span className=\"icon is-right mt-4\">\n {cardType === 'visa' ? (\n <FaCcVisa />\n ) : cardType === 'mastercard' ? (\n <FaCcMastercard />\n ) : cardType === 'amex' ? (\n <FaCcAmex />\n ) : (\n <FaCreditCard />\n )}\n </span>\n </div>\n {hasError && (\n <div className=\"has-text-danger\" data-test=\"input-error\">\n {meta.error}\n </div>\n )}\n </div>\n )\n }}\n </Field>\n)\n","import { styled } from 'linaria/react'\n\nexport const FadeIn = styled.div`\n @keyframes fade-in {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n animation-duration: 1s;\n animation-fill-mode: both;\n animation-delay: 0.2s;\n animation-name: fade-in;\n`\n\nexport default FadeIn\n","import { FetcherParams } from '../../types/core'\n\nexport class FetchError extends Error {\n public name: string\n public status: number\n\n constructor(public message: string, public response?: Response) {\n super(message)\n\n Object.setPrototypeOf(this, new.target.prototype) // restore prototype chain\n this.name = (this.constructor as any).name\n this.status = (this.constructor as any).status\n this.message = message\n\n if (Error.captureStackTrace && typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor)\n }\n\n this.response = response\n }\n}\n\nexport const genErr = async (res: Response, { method, url }: Partial<FetcherParams<any>>) => {\n const genErrResponse = async () => {\n try {\n const response = await res.json()\n return response\n } catch (err) {\n return res\n }\n }\n\n const errRes = await genErrResponse()\n const error = new FetchError(\n `Foundations API error: Status: ${res.status} Method: ${method} Path: ${url} ${JSON.stringify(errRes)}`,\n )\n error.status = res.status\n error.response = errRes\n return error\n}\n/**\n * allow fetch from raw url string (instead of api - base domal, url - path)\n */\nexport const fetcherWithRawUrl = async <T, B>({\n url,\n method,\n body,\n headers,\n}: Omit<FetcherParams<B>, 'api'>): Promise<any | FetchError> => {\n const res = await fetch(url, {\n headers,\n method,\n body: JSON.stringify(body),\n } as RequestInit)\n\n if (res.status < 400) {\n const jsonRes = await res.json()\n return jsonRes as T\n }\n\n const err = await genErr(res, { url, method })\n throw err\n}\n\n/**\n * return headers of responose\n */\nexport const fetcherWithReturnHeader = async <B>({\n api,\n url,\n method,\n body,\n headers,\n}: FetcherParams<B>): Promise<Headers | FetchError> => {\n const path = `${api}${url}`\n\n const res = await fetch(path, {\n headers,\n method,\n body: JSON.stringify(body),\n } as RequestInit)\n\n if (res.status < 400) {\n return res.headers\n }\n\n const err = await genErr(res, { url, method })\n throw err\n}\n\nexport const fetcherWithBlob = async <B>({\n api,\n url,\n method,\n body,\n headers,\n}: FetcherParams<B>): Promise<Blob | FetchError> => {\n const path = `${api}${url}`\n\n const res = await fetch(path, {\n headers,\n method,\n body: JSON.stringify(body),\n } as RequestInit)\n\n if (res.status < 400) {\n try {\n const blob = await res.blob()\n return blob\n } catch (err) {\n const error = new FetchError(\"Can't convert response to blob. Error:\", err.message)\n console.error(error.message)\n throw error\n }\n }\n\n const err = await genErr(res, { url, method })\n throw err\n}\n\nexport const fetcher = async <T, B>({\n api,\n url,\n method,\n body,\n headers,\n}: FetcherParams<B>): Promise<any | FetchError> => {\n const path = `${api}${url}`\n\n const res = await fetch(path, {\n headers,\n method,\n body: JSON.stringify(body),\n } as RequestInit)\n\n if (res.status < 400) {\n try {\n const jsonVal = await res.json()\n return jsonVal as T\n } catch (err) {\n return res.ok\n }\n }\n\n const err = await genErr(res, { url, method })\n throw err\n}\n","import dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\n\ndayjs.extend(utc)\n\nexport const DATE_TIME_FORMAT = {\n RFC3339: 'YYYY-MM-DDTHH:mm:ssZ',\n DATE_FORMAT: 'DD MMM YYYY',\n DATE_TIME_FORMAT: 'DD MMM YYYY HH:mm',\n YYYY_MM_DD: 'YYYY-MM-DD',\n YYYY_MM: 'YYYY-MM',\n MMMM_YYYY: 'MMMM YYYY',\n}\n\nexport function getTime(date: dayjs.ConfigType, is24HourTime: boolean = false) {\n return dayjs(date).format(is24HourTime ? 'HH:mm' : 'hh:mm A')\n}\n\nexport function getDate(date: dayjs.ConfigType, format: string | undefined = DATE_TIME_FORMAT.DATE_FORMAT) {\n return dayjs(date).format(format)\n}\n\nexport function isSameDay(date: dayjs.ConfigType) {\n const toDate = dayjs()\n return dayjs(date).isSame(toDate, 'day')\n}\n\nexport function closestTo(dateCompare: dayjs.ConfigType, datesArray: Array<dayjs.ConfigType>) {\n const timeCompare = dayjs(dateCompare).valueOf()\n\n if (isNaN(timeCompare)) {\n return new Date(NaN)\n }\n\n let result: any\n let minDistance: any\n datesArray.forEach(function (date) {\n const currentTime = dayjs(date).valueOf()\n\n if (isNaN(currentTime)) {\n result = new Date(NaN)\n minDistance = NaN\n return\n }\n\n const distance = currentTime - timeCompare\n if (distance > 0 && (result == null || distance < minDistance)) {\n result = date\n minDistance = distance\n }\n })\n\n return result\n}\n\nexport function toUTCTime(value: dayjs.ConfigType, format: string | undefined = DATE_TIME_FORMAT.RFC3339): string {\n if (!value) {\n return ''\n }\n const date = dayjs(value)\n return date.utc().format(format)\n}\n\nexport function toLocalTime(\n value: dayjs.ConfigType,\n format: string | undefined = DATE_TIME_FORMAT.DATE_TIME_FORMAT,\n): string {\n const date = dayjs(value)\n return date.local().format(format)\n}\n","import React from 'react'\nimport Dialog from 'rc-dialog'\nimport { cx } from 'linaria'\nimport { modalContainer, modalCentered, modalNoPadding, modalResponsiveContainer, modalNoHeader } from './__styles__'\nimport { IDialogPropTypes } from 'rc-dialog/lib/IDialogPropTypes'\n\nexport interface ModalHeaderV2Props {\n children: React.ReactNode\n}\n\nexport const ModalHeaderV2: React.FC<ModalHeaderV2Props> = ({ children }) => {\n return <h4 className=\"modal-card-title is-4 pt-2 pb-2\">{children}</h4>\n}\n\nexport interface ModalPropsV2 extends IDialogPropTypes {\n isCentered?: boolean\n isPadding?: boolean\n isResponsive?: boolean\n hasHeader?: boolean\n}\n\nexport const ModalV2: React.FC<ModalPropsV2> = ({\n children,\n className,\n wrapClassName,\n destroyOnClose = true,\n isCentered = false,\n isResponsive = false,\n isPadding = true,\n title,\n hasHeader = true,\n afterClose,\n ...restProps\n}) => {\n return (\n <Dialog\n {...restProps}\n title={<ModalHeaderV2>{title}</ModalHeaderV2>}\n closeIcon={<span className=\"delete\" aria-label=\"close\" onClick={afterClose} />}\n destroyOnClose={destroyOnClose}\n className={cx(modalContainer, isResponsive && modalResponsiveContainer, !hasHeader && modalNoHeader, className)}\n wrapClassName={cx(isCentered && modalCentered, !isPadding && modalNoPadding, wrapClassName)}\n >\n {children}\n </Dialog>\n )\n}\n\nexport default React.memo(ModalV2)\n","import * as React from 'react'\nimport { ButtonProps, Button } from '../Button/index'\nimport { DynamicLinkParams, navigateDynamicApp } from './dynamic-link-gen'\n\nexport interface AcLinkParams {\n dynamicLinkParams: DynamicLinkParams\n navigateParentWindow?: Window\n}\n\nexport interface AcButtonParams {\n dynamicLinkParams: DynamicLinkParams\n buttonProps: ButtonProps\n navigateParentWindow?: Window\n}\n\nexport const AcLink: React.FC<AcLinkParams> = ({ dynamicLinkParams, navigateParentWindow, children }) => {\n const onClick = (event: React.MouseEvent) => {\n event.preventDefault()\n navigateDynamicApp(dynamicLinkParams, navigateParentWindow)\n }\n\n return (\n <a\n className={`dynamic-link ${\n dynamicLinkParams.appMode === 'DESKTOP' ? 'desktop' : dynamicLinkParams.webRoute ? 'web' : ''\n }`}\n onClick={onClick}\n href=\"#\"\n >\n {children}\n </a>\n )\n}\n\nexport const AcButton: React.FC<AcButtonParams> = ({\n buttonProps,\n dynamicLinkParams,\n navigateParentWindow,\n children,\n}) => {\n return (\n <Button onClick={() => navigateDynamicApp(dynamicLinkParams, navigateParentWindow)} {...buttonProps}>\n {children}\n </Button>\n )\n}\n\nexport * from './utils'\n","import React from 'react'\nimport { cx } from 'linaria'\nimport { breadcrumbSeparator } from './__styles__/styles'\n\nexport interface BreadcrumbSeparatorProps {\n children?: React.ReactNode\n style?: React.CSSProperties\n className?: string\n}\n\nexport const BreadcrumbSeparator: React.FC<BreadcrumbSeparatorProps> = ({\n children,\n className,\n style,\n}: BreadcrumbSeparatorProps) => {\n return (\n <span style={style} className={cx(breadcrumbSeparator, className)}>\n {children || '/'}\n </span>\n )\n}\n\nexport default BreadcrumbSeparator\n","import React from 'react'\nimport { FileInput, FileInputProps } from '../FileInput'\n\nexport const CameraImageInput = (props: FileInputProps) => {\n const { inputProps, ...rest } = props\n return (\n <FileInput\n {...rest}\n inputProps={{\n ...inputProps,\n capture: 'camera',\n }}\n />\n )\n}\n","import React, { useState } from 'react'\nimport { Grid, GridItem } from '../Layout'\nimport { H5 } from '../Typography'\nimport { Input } from '../Input'\nimport { SelectBox } from '../SelectBox'\nimport { COUNTRY_OPTIONS } from './card-country-options'\nimport { CardExpiresInput } from './card-expires-input'\nimport { CardType, handleValidateSecureCode } from './card-helpers'\nimport { CardInput } from './card-input'\n\nexport interface CardInputGroupProps {\n hasBillingAddress: boolean\n whiteListTestCards?: string[]\n}\n\nexport const CardInputGroup: React.FC<CardInputGroupProps> = ({ hasBillingAddress, whiteListTestCards }) => {\n const [cardType, setCardType] = useState<CardType>('unknown')\n return (\n <>\n {hasBillingAddress && (\n <>\n <H5>Billing Details</H5>\n <Grid>\n <GridItem>\n <Input\n id=\"customerFirstName\"\n type=\"text\"\n placeholder=\"Your first name here\"\n name=\"customerFirstName\"\n labelText=\"First Name\"\n required\n />\n </GridItem>\n <GridItem>\n <Input\n id=\"customerLastName\"\n type=\"text\"\n placeholder=\"Your second name here\"\n name=\"customerLastName\"\n labelText=\"Second Name\"\n required\n />\n </GridItem>\n </Grid>\n <Grid>\n <GridItem>\n <Input\n id=\"address1\"\n type=\"text\"\n placeholder=\"Your address first line\"\n name=\"address1\"\n labelText=\"Address First Line\"\n required\n />\n </GridItem>\n <GridItem>\n <Input id=\"city\" type=\"text\" placeholder=\"Your city here\" name=\"city\" labelText=\"Town / City\" required />\n </GridItem>\n </Grid>\n <Grid>\n <GridItem>\n <Input\n id=\"postalCode\"\n type=\"text\"\n placeholder=\"Your postcode here\"\n name=\"postalCode\"\n labelText=\"Postcode\"\n required\n />\n </GridItem>\n <GridItem>\n <SelectBox id=\"country\" name=\"country\" options={COUNTRY_OPTIONS} labelText=\"Country\" required />\n </GridItem>\n </Grid>\n <Grid>\n <GridItem>\n <Input id=\"email\" type=\"email\" placeholder=\"example@mail.com\" name=\"email\" labelText=\"Email\" required />\n </GridItem>\n <GridItem></GridItem>\n </Grid>\n </>\n )}\n <>\n <H5>Card Details</H5>\n <Grid>\n <GridItem>\n <CardInput\n id=\"cardNumber\"\n name=\"cardNumber\"\n labelText=\"Card Number\"\n cardType={cardType}\n setCardType={setCardType}\n whiteListTestCards={whiteListTestCards}\n />\n </GridItem>\n <GridItem>\n <Input\n id=\"cardholderName\"\n type=\"text\"\n placeholder=\"Cardholder name here\"\n name=\"cardholderName\"\n labelText=\"Cardholder Name\"\n required\n />\n </GridItem>\n </Grid>\n <Grid>\n <GridItem>\n <CardExpiresInput id=\"expiryDate\" name=\"expiryDate\" labelText=\"Expires\" required />\n </GridItem>\n <GridItem>\n <Input\n id=\"securityCode\"\n type=\"text\"\n placeholder=\"CSV\"\n name=\"securityCode\"\n labelText=\"Security Code\"\n validate={handleValidateSecureCode(cardType)}\n maxLength={cardType === 'amex' ? 4 : 3}\n required\n />\n </GridItem>\n </Grid>\n </>\n </>\n )\n}\n","import * as React from 'react'\nimport Select, { Option, SelectProps } from 'rc-select'\nimport { CustomTagProps } from 'rc-select/lib/interface/generator'\nimport { Field, FieldProps, FormikProps, FieldInputProps } from 'formik'\nimport CustomTag from './custom-tag'\nimport { dropdownSelectFieldValidateRequire } from '../../utils/validators'\nimport { checkError } from '../../utils/form'\n\nexport interface DropdownSelectProps extends SelectProps {\n id: string\n labelText?: string\n name: string\n placeholder?: string\n options: SelectOption[]\n required?: boolean\n subText?: string\n // fixed to current node\n fixedPosition?: boolean\n hasLabel?: boolean\n}\n\nexport interface SelectOption {\n label: string\n value: string\n description?: string\n link?: string\n}\n\nexport const DropdownSelect: React.FC<DropdownSelectProps> = ({\n id,\n labelText,\n name,\n placeholder,\n options,\n required = false,\n subText,\n mode = 'tags',\n fixedPosition = false,\n hasLabel = true,\n ...restProps\n}) => {\n const handleRenderTags = (props: CustomTagProps) => {\n const { value, onClose } = props\n const option = options.find((option) => option.value === value) as SelectOption\n const optionResult = option ?? { value, label: value, description: value, link: '' }\n return (\n <CustomTag\n label={optionResult?.label}\n description={optionResult?.description || ''}\n link={optionResult?.link || ''}\n onClose={onClose}\n />\n )\n }\n\n const handleChangeOption = (field) => (value) => {\n field.onChange({ target: { value: value, name: field.name } })\n }\n\n const handleFieldTouched = (form: FormikProps<any>, field: FieldInputProps<String | String[]>) => () => {\n form.setFieldTouched(field.name)\n }\n\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const getPopupContainer =\n fixedPosition && containerRef.current ? () => containerRef.current as HTMLDivElement : undefined\n\n return (\n <>\n <div className=\"field\">\n <div className=\"control\">\n <Field name={name} validate={required ? dropdownSelectFieldValidateRequire : null}>\n {({ field, meta, form }: FieldProps<string | string[]>) => {\n const hasError = checkError(meta)\n return (\n <div className=\"field field-dropdown-select\">\n {hasLabel && <label className={`label ${required ? 'required-label' : ''}`}>{labelText}</label>}\n {subText && <label className=\"subtext mb-2\">{subText}</label>}\n <Select\n id={id}\n placeholder={placeholder}\n value={field.value || []}\n className=\"is-primary input\"\n mode={mode}\n tagRender={handleRenderTags}\n onChange={handleChangeOption(field)}\n onBlur={handleFieldTouched(form, field)}\n getPopupContainer={getPopupContainer}\n dropdownStyle={{ zIndex: 999 }}\n {...restProps}\n >\n {options?.map((option: SelectOption) => (\n <Option key={option.value} value={option.value}>\n {option.label}\n </Option>\n ))}\n </Select>\n {hasError && (\n <div className=\"has-text-danger\" data-test=\"input-error\">\n {meta.error}\n </div>\n )}\n </div>\n )\n }}\n </Field>\n </div>\n </div>\n\n <div ref={containerRef} />\n </>\n )\n}\n\nexport default DropdownSelect\n","import * as React from 'react'\nimport { LayoutProps } from '../Layout'\nimport { cx } from 'linaria'\n\nexport const FormHeading: React.FC<LayoutProps> = ({ children, className }) => (\n <div className={cx('form-heading', className)}>{children}</div>\n)\n\nexport const FormSubHeading: React.FC<LayoutProps> = ({ children, className }) => (\n <div className={cx('form-subheading', className)}>{children}</div>\n)\n\nexport const FormSection: React.FC<LayoutProps> = ({ children, className }) => (\n <div className={cx('form-section', className)}>{children}</div>\n)\n","import * as React from 'react'\nimport { parse } from 'himalaya'\nimport renderer from './utils'\nimport { Content } from '../Layout'\n\nexport interface HTMLRenderProps {\n html: string\n diffing?: boolean\n className?: string\n}\n\nexport const HTMLRender: React.FC<HTMLRenderProps> = ({\n html,\n diffing = false,\n className = 'html-render',\n}: HTMLRenderProps) => {\n const jsonElements = parse(html)\n return <Content className={className}>{renderer(jsonElements, diffing)}</Content>\n}\n","import * as React from 'react'\n\nexport type Variant = 'info' | 'warning'\n\nexport interface HelperProps {\n variant?: Variant\n children?: React.ReactNode\n closeButton?: boolean\n onCloseClick?: (e: React.MouseEvent<HTMLButtonElement>) => void\n}\n\nexport const Helper: React.FC<HelperProps> = ({\n variant = 'info',\n children = '',\n closeButton = false,\n onCloseClick,\n}) => {\n const helperColor = variant === 'warning' ? 'helper-warning' : 'helper-info'\n return (\n <div className={`notification helper-wrap ${helperColor}`}>\n {closeButton && <button className=\"delete\" onClick={onCloseClick}></button>}\n {children}\n </div>\n )\n}\n","import * as React from 'react'\n\n/* JB v2 suggestions\n * IcomListProps is a typo, should be IconListProps\n */\n\nexport interface IcomListProps {\n items: IconListItem[]\n textClassName?: string\n listClassName?: string\n iconClassName?: string\n}\n\nexport interface IconListItem {\n icon: React.ReactNode\n text: React.ReactNode | string\n}\n\nexport const IconList: React.FC<IcomListProps> = ({\n items,\n iconClassName = '',\n listClassName = '',\n textClassName = '',\n}) => (\n <ul className={`icon-list ${iconClassName}`}>\n {items.map((item: IconListItem, index: number) => (\n <li className={`icon-list-item ${listClassName}`} key={index}>\n {item.icon}\n <span className={`icon-list-text ${textClassName}`}>{item.text}</span>\n </li>\n ))}\n </ul>\n)\n","import * as React from 'react'\nimport PortalContainer from './portal-container'\nimport { PortalContext } from './portal-context'\n\nexport interface PortalProviderProps {\n children: React.ReactNode\n}\n\nexport const PortalProvider: React.FunctionComponent<PortalProviderProps> = ({ children }) => {\n const [portals, setPortals] = React.useState<{ [key: string]: React.ComponentType<any> }>({})\n\n const showPortal = React.useCallback(\n (key: string, modal: React.ComponentType<any>) => {\n setPortals((prevPortals) => ({\n ...prevPortals,\n [key]: modal,\n }))\n },\n [portals],\n )\n\n const hidePortal = React.useCallback(\n (key: string) => {\n setPortals((prevPortals) => {\n const newPortals = { ...prevPortals }\n delete newPortals[key]\n return newPortals\n })\n },\n [portals],\n )\n\n return (\n <PortalContext.Provider value={{ showPortal, hidePortal }}>\n <>{children}</>\n <PortalContainer portals={portals} />\n </PortalContext.Provider>\n )\n}\n","import * as React from 'react'\n\nexport const ReapitLogo: React.FC<{ className?: string }> = ({ className }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"28.5 30 40 49\" width=\"40px\" height=\"49px\" className={className}>\n <title>Reapit_House_RGB</title>\n <g id=\"House\">\n <polygon style={{ fill: '#262f69' }} points=\"57.03 78.42 48.72 58.21 28.54 49.81 28.54 78.42 57.03 78.42\" />\n <polygon\n style={{ fill: '#0061a8' }}\n points=\"68.93 78.42 68.93 67.29 68.93 66.57 48.7 58.22 57.03 78.42 68.93 78.42\"\n />\n <polygon style={{ fill: '#7bc9eb' }} points=\"28.54 49.81 48.7 58.22 40.38 38.05 28.54 49.81\" />\n <polygon\n style={{ fill: '#23a4de' }}\n points=\"68.93 49.81 48.76 29.66 45.63 32.78 40.37 38.06 48.7 58.22 68.93 66.57 68.93 49.81\"\n />\n </g>\n </svg>\n)\n","import * as React from 'react'\nimport { Field, FieldProps } from 'formik'\nimport { cx } from 'linaria'\nimport { checkError } from '../../utils/form'\n\nexport interface TextAreaProps {\n placeholder?: string\n id: string\n labelText?: string\n name: string\n dataTest?: string\n validate?: (value: string) => string | null\n required?: boolean\n}\n\nexport const textareaPrimary = 'textarea is-primary'\nexport const textareaError = 'textarea is-danger'\n\nexport const TextArea = ({\n name,\n labelText,\n id,\n dataTest,\n placeholder = '',\n required = false,\n validate,\n}: TextAreaProps) => (\n <Field name={name} validate={required ? validate : null}>\n {({ field, meta }: FieldProps<string>) => {\n const hasError = checkError(meta)\n const className = cx(hasError ? textareaError : textareaPrimary)\n const labelClassname = cx('label mb-2', required && 'required-label')\n return (\n <div className=\"field\">\n <div className=\"control\">\n {labelText && (\n <label className={labelClassname} htmlFor={id}>\n {labelText}\n </label>\n )}\n <textarea data-test={dataTest || ''} id={id} placeholder={placeholder} className={className} {...field} />\n </div>\n {hasError && (\n <div data-test=\"input-error\" className=\"has-text-danger\">\n {meta.error}\n </div>\n )}\n </div>\n )\n }}\n </Field>\n)\n","import React from 'react'\nimport { CardBodyWrap, CardHeading, CardImageWrap, CardSubHeading, CardSubHeadingAdditional } from './__styles__/index'\n\nexport interface TileProps {\n heading: React.ReactNode\n subHeading?: React.ReactNode\n subHeadingAdditional?: React.ReactNode\n hightlight?: boolean\n icon?: React.ReactNode\n image?: React.ReactNode\n menu?: React.ReactNode\n footerItems?: React.ReactNode[]\n onClick?: () => void\n dataTest?: string\n}\n\nexport const Tile: React.FC<TileProps> = ({\n heading,\n icon,\n image,\n menu,\n children,\n hightlight,\n subHeading,\n subHeadingAdditional,\n footerItems,\n onClick,\n dataTest,\n}) => {\n return (\n <div\n className={`card ${hightlight ? 'hightlight' : ''} ${onClick ? 'is-clickable' : ''}`}\n onClick={onClick}\n data-test={dataTest || ''}\n >\n <div className=\"card-content\">\n <div className=\"media\">\n {icon ? (\n <CardImageWrap>\n <div className=\"media-left\">\n <div className=\"media-icon\">{icon}</div>\n </div>\n </CardImageWrap>\n ) : image ? (\n <CardImageWrap>\n <div className=\"media-left\">\n <div className=\"media-image\">{image}</div>\n </div>\n </CardImageWrap>\n ) : null}\n <div className=\"media-content\">\n <CardHeading>{heading}</CardHeading>\n <CardSubHeading className=\"text-ellipsis-5\">{subHeading}</CardSubHeading>\n <CardSubHeadingAdditional>{subHeadingAdditional}</CardSubHeadingAdditional>\n </div>\n {menu && <div className=\"media-right\">{menu}</div>}\n </div>\n {children && <CardBodyWrap>{children}</CardBodyWrap>}\n </div>\n {footerItems && footerItems.length ? (\n <div className=\"card-footer\">\n {footerItems.map((item: React.ReactNode, index: number) => (\n <span className=\"card-footer-item\" key={index}>\n {item}\n </span>\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n","import * as React from 'react'\nimport { Button } from '../Button'\n\n/**\n * TODO: Expand component to accept types info and success actions\n * just need to add appropriate actions and adjust the btn-danger\n * class to primary and success\n */\n\nexport interface ErrorData {\n readonly status?: number\n readonly message?: string\n readonly type: 'COMPONENT' | 'SERVER'\n}\n\nexport interface ToastProps {\n serverError: ErrorData | null\n componentError: ErrorData | null\n errorClearedServer: () => void\n errorClearedComponent: () => void\n}\n\nexport const Toast: React.FC<ToastProps> = ({\n serverError,\n componentError,\n errorClearedServer,\n errorClearedComponent,\n}) => {\n const error = componentError || serverError || null\n const isVisible = Boolean(error)\n const errorClearHandler = error && error.type === 'SERVER' ? errorClearedServer : errorClearedComponent\n if (isVisible) {\n setTimeout(errorClearHandler, 5000)\n }\n\n return (\n <div data-test=\"toast-wrapper\" className={`toast ${isVisible ? 'visible' : ''}`} onClick={errorClearHandler}>\n <Button type=\"reset\" variant=\"danger\" fullWidth>\n {error && error.message}\n </Button>\n </div>\n )\n}\n","import { cx } from 'linaria'\nimport * as React from 'react'\nimport { Button } from '../Button'\n\nexport type ToastVariant = 'primary' | 'secondary' | 'danger' | 'info'\n\nexport interface ToastMessageProps {\n visible?: boolean\n displayDuration?: number\n message: string\n variant: ToastVariant\n onCloseToast: () => void\n preventClose?: boolean\n hasNavBar?: boolean\n}\n\nexport const ToastMessage: React.FC<ToastMessageProps> = ({\n visible = false,\n displayDuration = 3000,\n preventClose = false,\n hasNavBar = false,\n message,\n onCloseToast,\n variant,\n}) => {\n React.useEffect(() => {\n if (visible && !preventClose) {\n const timeout = setTimeout(onCloseToast, displayDuration)\n return () => {\n clearTimeout(timeout)\n }\n }\n }, [visible, preventClose])\n\n return (\n <div\n data-test=\"toast-wrapper\"\n className={cx('toast', visible && 'visible', hasNavBar && 'has-nav-bar')}\n onClick={onCloseToast}\n >\n <Button type=\"reset\" variant={variant} fullWidth>\n {message}\n </Button>\n </div>\n )\n}\n","import { ContactModel, IdentityCheckModel } from '@reapit/foundations-ts-definitions'\n\nexport const isCompletedProfile = (contact?: ContactModel | null) => {\n const isValidProfile =\n contact?.title &&\n contact?.surname &&\n contact?.forename &&\n contact?.dateOfBirth &&\n (contact?.homePhone || contact?.workPhone || contact?.mobilePhone)\n return !!isValidProfile\n}\n\nexport const isCompletedPrimaryID = (identityCheck?: IdentityCheckModel | null) => {\n const isValidIdentityCheck =\n identityCheck?.identityDocument1?.details &&\n identityCheck?.identityDocument1?.documentId &&\n identityCheck?.identityDocument1?.expiry &&\n identityCheck?.identityDocument1?.typeId\n return !!isValidIdentityCheck\n}\n\nexport const isCompletedSecondaryID = (identityCheck?: IdentityCheckModel | null) => {\n const isValidIdentityCheck =\n identityCheck?.identityDocument2?.details &&\n identityCheck?.identityDocument2?.documentId &&\n identityCheck?.identityDocument2?.expiry &&\n identityCheck?.identityDocument2?.typeId\n return !!isValidIdentityCheck\n}\n\nexport const isCompletedAddress = (contact?: ContactModel | null) => {\n const isValidPrimaryAddress =\n !!contact?.primaryAddress?.line1 &&\n !!contact?.primaryAddress?.line3 &&\n !!contact?.primaryAddress?.postcode &&\n !!contact?.metadata?.primaryAddress?.year &&\n !!contact?.metadata?.primaryAddress?.month &&\n !!contact?.metadata?.primaryAddress?.documentType &&\n !!contact?.metadata?.primaryAddress?.documentImage\n return !!isValidPrimaryAddress\n}\n\nexport const isCompletedDeclarationRisk = (contact: ContactModel | null) => {\n const isValidContactWithDecrationRisk =\n contact?.metadata?.declarationRisk?.reason &&\n contact?.metadata?.declarationRisk?.type &&\n (contact?.metadata?.declarationRisk?.declarationForm || contact?.metadata?.declarationRisk?.riskAssessmentForm)\n\n return !!isValidContactWithDecrationRisk\n}\n\nexport const isCompletedAgentCheck = (identityCheck: IdentityCheckModel | null) => {\n const isValidAgentCheck =\n identityCheck?.metadata?.referralType &&\n identityCheck?.metadata?.timeSelection &&\n identityCheck?.metadata?.clientType &&\n identityCheck?.metadata?.placeMeet &&\n identityCheck?.metadata?.isUKResident\n return !!isValidAgentCheck\n}\n","export const isNumberOnly = (string) => {\n const re = /^\\d+$/\n return re.test(string)\n}\n","export const isTextAndNumberOnly = (value?: string): boolean => {\n if (!value) return false\n const re = /^[a-zA-Z0-9|\\s]+$/\n return re.test(value)\n}\n","/* eslint-disable */\n\nexport const telephoneRegex = /((?:\\+|00)[17](?: |\\-)?|(?:\\+|00)[1-9]\\d{0,2}(?: |\\-)?|(?:\\+|00)1\\-\\d{3}(?: |\\-)?)?(0\\d|\\([0-9]{3}\\)|[1-9]{0,3})(?:((?: |\\-)[0-9]{2}){4}|((?:[0-9]{2}){4})|((?: |\\-)[0-9]{3}(?: |\\-)[0-9]{4})|([0-9]{7}))/g\nexport const letterNumberSpaceRegex = /^[a-zA-Z0-9|\\s]+$/\n","import { isEmptyObject } from '../validators/validate-object'\n\nexport const setQueryParams = (params: Object) => {\n if (isEmptyObject(params)) return ''\n return Object.keys(params)\n .filter((key) => params[key] !== undefined && params[key] !== null && params[key] !== '')\n .map((key) => {\n if (Array.isArray(params[key])) {\n return params[key].map((value: any) => `${key}=${value}`).join('&')\n }\n return `${key}=${params[key]}`\n })\n .join('&')\n}\n"],"names":["React","portals","undefined","mountNode","setMountNode","document","body","ReactDOM","Object","keys","map","key","noop","PortalContext","showPortal","hidePortal","count","generatePortalKey","usePortal","component","deps","context","isShown","setShown","portal","EntityType","EntityParams","AppParams","Grid","children","isMultiLine","isVerticalCentered","isMobile","dataTest","onClick","className","cx","GridItem","Section","hasPadding","hasMargin","hasBackground","style","isFlex","isCentered","isAlignedEnd","isAlignedStart","isFlexColumn","isFullHeight","hasBorder","hasBoxShadow","Content","generatePagination","currentPage","pageCount","range","i","Math","max","min","push","unshift","Button","type","variant","disabled","loading","fullWidth","theme","DynamicAppConstants","genDynamicLink","entityType","entityCode","queryParams","entityParams","code","params","query","queryParamsToQueryString","DESKTOP_URL","reduce","acc","current","index","queryString","join","getDynamicLink","dynamicLinkParams","webRoute","appMode","navigateDynamicApp","navigateParentWindow","postMessageOrigin","dynamicLink","postMessageOriginString","process","env","MARKETPLACE_URL","window","postMessage","location","href","storageAvailable","storage","x","setItem","removeItem","e","DOMException","name","length","GLOBAL_KEY","LOCALSTORAGE_KEY","getMarketplaceGlobalsByKey","setMarketplaceGlobalsByKey","keyValueObject","existingObject","JSON","parse","localStorage","getItem","globalsObject","_typeof","stringify","reload","console","log","clearMarkeplaceGlobals","restoreGlobalObjectFromLS","localStorageObject","getActiveItemKey","menu","pathname","activeItem","find","item","isExactRoot","url","isNotRootAndHasCommonPrefix","startsWith","LinkItem","activeItemRef","Link","ref","to","callback","Menu","modeProp","mode","defaultActiveKey","currentActiveKey","ownMode","activeKey","setIsActive","element","scrollIntoView","icon","title","CardHeading","CardSubHeading","CardSubHeadingAdditional","CardBodyWrap","CardImageWrap","combineAddress","address","addressCombined","buildingNumber","concat","buildingName","line1","line2","line3","line4","postcode","country","SnackbarSuccessIcon","width","height","viewBox","fill","xmlns","d","SnackbarInfoIcon","SnackbarErrorIcon","defaultGetContainer","notificationInstance","defaultDuration","defaultTop","defaultBottom","defaultPlacement","getPlacementStyle","placement","top","bottom","left","right","getNotificationInstance","args","getContainer","closeIcon","outerPrefixCls","prefixCls","cacheKey","cacheInstance","Promise","resolve","then","instance","closeIconToRender","Notification","newInstance","notification","getRCNoticeProps","duration","Icon","content","message","closable","onClose","open","notice","close","forEach","removeNotice","config","options","destroy","useNotification","innerInstance","useRCNotification","add","noticeProps","holderCallback","hookNotify","holder","hookAPI","createUseNotification","renderMarkers","googleMaps","markerCallBack","coordinates","coordinate","label","text","String","fontSize","fontWeight","marker","Marker","position","lat","lng","infoWindow","InfoWindow","event","addListener","getElementById","addEventListener","id","getCurrentLocation","coords","latitude","longitude","handleRequestDirectionServiceResponse","currentLocation","onLoadedDirection","directionsRenderer","destinationAddress","response","status","setMap","routes","route","legs","leg","end_address","setDirections","error","renderDirection","destinationPoint","directionsService","travelMode","origin","LatLng","destination","setZoomAndCenter","bounds","center","zoom","markers","setZoom","setCenter","LONDON_LAT_LNG","extend","getPosition","fitBounds","getCenter","renderDirectionAndMarkers","markersRef","directionsRendererRef","googleMapsRef","mapRef","directionsServiceRef","boundsRef","navigator","geolocation","getCurrentPosition","clearMap","onMarkerClick","onDrawingMarkerClick","onMarkerComplete","onDrawingMarkerComplete","onPolygonClick","onDrawingPolygonClick","polygon","onPolygonComplete","onDrawingPolygonComplete","initMapDrawingManager","drawingManager","drawingManagerRef","createGoogleMapDrawingManager","drawingOptions","drawing","DrawingManager","drawingMode","OverlayType","MARKER","drawingControl","drawingControlOptions","ControlPosition","TOP_CENTER","drawingModes","polygonOptions","fillOpacity","strokeWeight","editable","zIndex","handleOnLoaded","libraries","onLoaded","LatLngBounds","DirectionsService","DirectionsRenderer","indexOf","renderMap","mapContainerStyles","restProps","GoogleMap","handleUseEffect","memo","apiKey","useRef","useEffect","ReactGoogleMapLoader","render","checkError","meta","touched","validateBase","values","validator","errMessage","currentErrors","errors","keyAsString","toString","minLengthValidator","str","maxLengthValidator","isEmail","email","test","fieldValidateRequire","value","dropdownSelectFieldValidateRequire","trim","isEmpty","uriValidator","uri","PASSWORD_PATTERN","isValidPassword","password","isEmptyObject","dayjs","customParseFormat","useState","CustomInput","onChange","onBlur","rest","inputValue","setInputValue","isBackspaceKeyPressed","setIsBackspaceKeyPressed","placeholder","inputElement","target","castedInputElement","oldStart","selectionStart","textFieldValue","splitTextFieldValue","split","filter","char","transformedTextFieldValue","maskChar","shift","parsedTransformedTextFieldValue","isValid","setTimeout","selectionEnd","onKeyDown","inputChar","fromCharCode","keyCode","metaKey","ctrlKey","includes","match","preventDefault","displayName","Loader","expanderColumn","columnProps","Cell","row","canExpand","getToggleRowExpandedProps","isExpanded","FaMinusSquare","FaPlusSquare","addExpandableColumnToColumnsIfExpandableIsTrue","columns","expandable","base64Regex","RegExp","isBase64","base64Str","base64Value","handleChangeCroppedImage","field","croppedImage","setFileName","inputFile","clearFile","evt","FileInput","labelText","accept","allowClear","testProps","inputProps","required","isNarrowWidth","onFilenameClick","afterLoadedFile","fileUrl","fileInputContainerClassName","Field","hasError","initialValue","hasFile","containerClassName","handleClearFile","htmlFor","files","file","reader","FileReader","readAsDataURL","onload","base64","result","waitUntilDataReaderLoadResolver","onerror","rel","SelectBox","helpText","validate","calculatedClassName","hidden","WizardContext","createContext","WizardContextProvider","Provider","useWizardContext","useContext","RenderWizardContext","WizardRenderContextProvider","useRenderWizardContext","Wizard","isLoading","visible","afterClose","leftFooterRender","rightFooterRender","steps","Children","toArray","props","internalCurrent","setInternalCurrent","isFirst","isLast","currentIndex","findIndex","goNext","goPrev","goTo","stepId","display","flexDirection","MdClose","Step","Component","onNavigate","onSubmit","Formik","initialValues","form","rightRender","Form","Alert","role","renderAdditionalField","additionalField","Input","rightIcon","maxLength","helperText","inputClassName","handleOnCheckboxChange","isExistedInArray","Array","isArray","nextValue","checked","isImageType","warn","getTypeFromBase64","ImageInput","setMessage","validateType","afterLoadedImage","fileType","selectTab","tabConfig","onTabClick","tabIdentifier","useMemo","ModalFooter","footerItems","ModalBody","ModalHeader","Modal","size","renderChildren","HeaderComponent","tapOutsideToDissmiss","generatedModalBackgroundId","random","substring","handleClickOutside","handleHidePortal","removeEventListener","handleKeypressHidePortal","H3","isHeadingSection","H4","H5","H6","SubTitleH6","infoText","infoType","defaultActions","Editor","actions","containerClass","defaultContent","actionbarClass","buttonClass","contentClass","onPaste","containerEl","init","html","styleWithCSS","defaultParagraphSeparator","classes","actionbar","button","getElementsByClassName","setAttribute","innerHTML","handleTextAreaOnChange","handleTextAreaOnBlur","helpers","setTouched","handleTextAreaOnPaste","stopPropagation","clipboardData","pastedData","getData","queryCommandSupported","execCommand","getAnchorAttrs","attributes","dynamicHref","renderer","domContent","diffing","domItem","rendererModule","sortContentType","DOMParser","parseFromString","documentElement","textContent","sortTags","getChildren","domTag","child","getAttributes","reactPropsAttributes","from","tagName","Filler","percentage","ProgressBar","validPercentage","MyReactDataSheet","ReactDataSheet","usePrevious","getMaxRowAndCol","data","maxRow","maxCol","numberOfCurrentRowColumn","parseCsvFile","Papa","complete","results","unparseDataToCsvString","parseResult","unparse","convertToCompatibleData","parsedResult","rowArray","every","convertDataToCsv","changedCellsGenerate","newData","oldData","maxColOld","maxRowOld","maxColNew","changedCells","rowIndex","colIndex","oldCell","_oldData$rowIndex","newCell","_newData$rowIndex","col","generateDataWithReadOnlyAndIsValidated","allowOnlyOneValidationErrorPerRow","dataWithIsGeneratedAndReadOnly","validatedDataGenerate","validateFunction","invalidatedRowIndexSet","generateInvalidatedRowIndexSet","generateDataWithReadOnly","isInvalidatedRow","has","cell","fixedReadOnly","readOnly","isInvalidatedCell","isValidated","isInvalidatedRowSet","Set","validateMatrix","calculateNumberOfInvalidRows","invalidIndies","hashMap","createDataWithInvalidRowsRemoved","dataWithInvalidRowsRemoved","currentRowValid","currentRow","valueRenderer","onDoubleClickCell","payload","setSelected","onDoubleClickDefault","maxRowIndex","isReadOnly","isFirstRow","start","j","end","onSelectCells","handleContextMenu","setContextMenuProp","clientX","clientY","handleAddNewRow","setData","lastRow","newEmptyRow","handleOnChangeInput","setUploadData","maxUploadRow","compatibleData","header","restCompatibleData","totalRow","slicedData","slice","setUploadDataCallback","validatedData","exceedMaxRow","isModalOpen","handleDownload","csvData","dataBlob","Blob","FileSaver","saveAs","Date","hideContextMenu","prev","handleCloseUploadModal","handleProcessValidRows","shouldProcess","uploadDataPartial","handleContextClick","selected","onCellsChanged","currentRowIndex","currentColIndex","oldRow","clearRow","oldCol","clearCol","removeRow","removeCol","dataMenu","items","ContextMenu","contextMenuProp","measuredRef","getBoundingClientRect","windowWidth","innerWidth","windowHeight","innerHeight","elementRightPosition","elementBottomPosition","contextMenuTopPosition","contextMenuLeftPosition","offScreenDistance","handleRenderMenuInsideViewPort","ModalUpload","uploadData","ctx","UploadButton","onChangeInput","uploadRef","click","DownloadButton","DownloadSampleButton","headers","AddRowButton","addNewRow","getErrorsFromData","renderErrorElements","initialUploadData","c","Error","useHelpGuideContext","HelpGuideContextProvider","generateNumbers","total","VerticalTimeline","onSelect","circleRef","lineRef","activeRef","numbers","circlePosY","offsetTop","offsetHeight","LI_MARGIN","caculateCircleRef","transform","matchMedia","matches","lineHeight","nextElementSibling","caculateLineRef","calculateElement","setWindowWidth","onResize","HorizontalTimeline","circlePosX","widthActiveItem","parseInt","getComputedStyle","offsetLeft","offsetWidth","lineWidth","marginBetween","marginRight","nextSibling","Fade","nodeRef","CSSTransition","classNames","defaultProps","in","timeout","handleGoNext","setCurrentStep","currentStep","setIsExit","handleGoPrev","handleGoTo","stepIndex","renderTimeline","isMobileScreen","HelpGuide","isExit","unmountOnExit","subHeading","graphic","heading","CustomTag","link","Tooltip","overlay","description","BreadcrumbItem","separator","isCurrent","links","renderLinks","isValidElement","defaultItemRenderer","paths","isLastItem","breadcrumbName","paramsKeys","paramsRegex","replace","replacement","getBreadcrumbName","generateDefaultCrop","aspect","unit","generateBase64FromCanvas","canvas","completedCrop","toDataURL","calculateOutputDimensions","cropRatio","resizeDimensions","originWidth","originHeight","outputWidth","outputHeight","onLoadHandler","imgRef","img","onChangeHandler","setCrop","crop","onCompleteHandler","setCompletedCrop","onCropClickHandler","previewCanvasRef","onCropClick","onCloseHandler","setVisible","setUpImg","setCroppedImage","base64Data","passedFunctions","renderChildrenWithProps","childrenWithProps","ImageCropper","upImg","defaultCrop","image","naturalWidth","naturalHeight","scaleX","scaleY","getContext","drawImage","y","drawCanvasAfterCrop","onChangeUpImage","isImageCropped","Boolean","ReactCrop","ruleOfThirds","src","onImageLoaded","onComplete","isAmex","cardString","isVisa","isMasterCard","firstTwoDigits","Number","firstFourDigits","getCardType","formatCardNumber","cardNumber","input","trimmedCardNum","partitions","setSelectionRange","unformatCard","formattedCard","formatCardExpires","validateCard","whiteListTestCards","requiredError","cardType","unformattedCard","whiteListTestCard","card","cardLength","isNaN","validateSecureCode","codeLength","validateCardExpires","now","fomattedValue","isBefore","handleValidateCard","handleValidateSecureCode","COUNTRY_OPTIONS","CardExpiresInput","inputRef","inputMode","autoComplete","CardInput","setCardType","cardTypeFromField","FaCcVisa","FaCcMastercard","FaCcAmex","FaCreditCard","FadeIn","FetchError","setPrototypeOf","prototype","_this","constructor","captureStackTrace","genErr","res","method","genErrResponse","json","errRes","fetcherWithRawUrl","fetch","fetcherWithReturnHeader","path","api","fetcherWithBlob","blob","_context5","fetcher","ok","utc","DATE_TIME_FORMAT","RFC3339","DATE_FORMAT","YYYY_MM_DD","YYYY_MM","MMMM_YYYY","ModalHeaderV2","ModalV2","wrapClassName","destroyOnClose","isResponsive","isPadding","hasHeader","Dialog","buttonProps","crumbs","itemRender","getPath","genForRoutes","childrenArr","isFragment","cloneElement","hasSpacing","capture","hasBillingAddress","reactDatePickerProps","useCustomInput","popperPlacement","dateFormat","parsedDayJsValue","fieldValue","parseDate","startOf","format","toDate","ReactDatePicker","customInput","subText","fixedPosition","hasLabel","handleRenderTags","option","optionResult","handleChangeOption","handleFieldTouched","setFieldTouched","containerRef","getPopupContainer","Select","tagRender","dropdownStyle","Option","fillRule","clipRule","flexColumn","centerContent","isScrollable","isPageContainer","jsonElements","closeButton","onCloseClick","iconClassName","listClassName","textClassName","clipPath","pageNumber","pageSize","totalCount","maxPage","ceil","paginator","pg","setPortals","modal","prevPortals","newPortals","PortalContainer","setFieldValue","state","isHorizontal","radioGridClassName","radioGridItemClassName","points","initialData","hasUploadButton","hasDownloadButton","hasAddButton","afterDataChanged","afterCellsChanged","afterUploadDataValidated","CustomDownButton","hasDownloadSampleButton","sampleHeaders","prevData","cellRenderer","defaultStyle","onDoubleClick","CustomComponent","customStyle","restCell","maxColIndex","ignorePropKeys","domProps","accumulator","cellRenderProps","customCellRenderer","changes","changesArray","splice","colIndexToRemove","handleCellsChanged","handleSetContextMenu","bind","handleInitialDataChanged","handleAfterDataChanged","currentData","overflow","onContextMenu","striped","scrollable","bordered","maxHeight","formatColumns","useTable","useExpanded","getTableProps","headerGroups","footerGroups","rows","prepareRow","hasFooter","some","Footer","renderTable","headerGroup","getHeaderGroupProps","getHeaderProps","getRowProps","cells","column","getCellProps","footerGroup","getFooterGroupProps","getFooterProps","tabConfigs","active","displayText","labelClassname","allowPasteRichText","useField","subHeadingAdditional","hightlight","errorClearedServer","errorClearedComponent","componentError","serverError","isVisible","errorClearHandler","displayDuration","preventClose","hasNavBar","onCloseToast","clearTimeout","completedCount","dateCompare","datesArray","minDistance","timeCompare","valueOf","NaN","date","currentTime","distance","entity","toBlob","URL","createObjectURL","anchor","createElement","download","revokeObjectURL","is24HourTime","defineProperty","getOwnPropertyDescriptor","writable","userAgent","toLowerCase","contact","primaryAddress","_contact$primaryAddre","_contact$primaryAddre2","_contact$primaryAddre3","metadata","_contact$metadata","_contact$metadata$pri","year","_contact$metadata2","_contact$metadata2$pr","month","_contact$metadata3","_contact$metadata3$pr","documentType","_contact$metadata4","_contact$metadata4$pr","documentImage","identityCheck","referralType","_identityCheck$metada2","timeSelection","_identityCheck$metada3","clientType","_identityCheck$metada4","placeMeet","_identityCheck$metada5","isUKResident","declarationRisk","reason","_contact$metadata6","_contact$metadata6$de","declarationForm","_contact$metadata8","_contact$metadata8$de","riskAssessmentForm","identityDocument1","details","_identityCheck$identi2","documentId","_identityCheck$identi3","expiry","_identityCheck$identi4","typeId","surname","forename","dateOfBirth","homePhone","workPhone","mobilePhone","identityDocument2","_identityCheck$identi6","_identityCheck$identi7","_identityCheck$identi8","string","isSame","cellData","local"],"mappings":"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"}