@incodetech/web 2.0.0-alpha.2 → 2.0.0-alpha.4

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 (273) hide show
  1. package/dist/{styles/core.css → base.css} +53 -57
  2. package/dist/email/email.es.js +1 -1
  3. package/dist/email/styles.css +11 -11
  4. package/dist/flow/styles.css +688 -1
  5. package/dist/{incodeModule-BF5MX9GT.js → incodeModule-Ct9jp5k6.js} +22 -19
  6. package/dist/index.es.js +18 -18
  7. package/dist/phone/phone.es.js +1 -1
  8. package/dist/phone/styles.css +31 -31
  9. package/dist/selfie/selfie.es.js +16 -16
  10. package/dist/selfie/styles.css +0 -51
  11. package/dist/themes/dark.css +652 -0
  12. package/dist/types/dark.d.ts +1 -0
  13. package/dist/types/light.d.ts +1 -0
  14. package/dist/types/themes/light.d.ts +1 -0
  15. package/package.json +12 -6
  16. package/.turbo/turbo-build.log +0 -58
  17. package/.turbo/turbo-coverage.log +0 -23
  18. package/.turbo/turbo-format.log +0 -6
  19. package/.turbo/turbo-lint$colon$fix.log +0 -6
  20. package/.turbo/turbo-lint.log +0 -6
  21. package/.turbo/turbo-test.log +0 -1033
  22. package/.turbo/turbo-typecheck.log +0 -5
  23. package/coverage/base.css +0 -224
  24. package/coverage/block-navigation.js +0 -87
  25. package/coverage/email/email.tsx.html +0 -850
  26. package/coverage/email/emailInput.tsx.html +0 -340
  27. package/coverage/email/index.html +0 -131
  28. package/coverage/favicon.png +0 -0
  29. package/coverage/flow/flow.tsx.html +0 -961
  30. package/coverage/flow/flowCompleted.tsx.html +0 -448
  31. package/coverage/flow/flowInit.ts.html +0 -367
  32. package/coverage/flow/flowStart.tsx.html +0 -208
  33. package/coverage/flow/index.html +0 -221
  34. package/coverage/flow/preloadFlow.ts.html +0 -598
  35. package/coverage/flow/unsupportedModule.tsx.html +0 -202
  36. package/coverage/flow/useFlowInitialization.ts.html +0 -469
  37. package/coverage/flow/useModuleLoader.ts.html +0 -361
  38. package/coverage/hooks/index.html +0 -116
  39. package/coverage/hooks/useManager.ts.html +0 -205
  40. package/coverage/index.html +0 -401
  41. package/coverage/permissions/boldWithArrow.tsx.html +0 -208
  42. package/coverage/permissions/denied.tsx.html +0 -172
  43. package/coverage/permissions/deniedAndroid.tsx.html +0 -253
  44. package/coverage/permissions/deniedDesktop.tsx.html +0 -277
  45. package/coverage/permissions/deniedIOS.tsx.html +0 -304
  46. package/coverage/permissions/deniedInstructions.tsx.html +0 -142
  47. package/coverage/permissions/iconWrapper.tsx.html +0 -130
  48. package/coverage/permissions/index.html +0 -251
  49. package/coverage/permissions/learnMore.tsx.html +0 -340
  50. package/coverage/permissions/numberedStep.tsx.html +0 -127
  51. package/coverage/permissions/permissions.tsx.html +0 -289
  52. package/coverage/phone/index.html +0 -116
  53. package/coverage/phone/phoneInput.tsx.html +0 -832
  54. package/coverage/prettify.css +0 -1
  55. package/coverage/prettify.js +0 -2
  56. package/coverage/selfie/index.html +0 -131
  57. package/coverage/selfie/selfie.tsx.html +0 -334
  58. package/coverage/selfie/tutorial.tsx.html +0 -214
  59. package/coverage/shared/baseTutorial/baseTutorial.tsx.html +0 -250
  60. package/coverage/shared/baseTutorial/index.html +0 -131
  61. package/coverage/shared/baseTutorial/replaceBaseTutorial.ts.html +0 -289
  62. package/coverage/shared/button/button.tsx.html +0 -226
  63. package/coverage/shared/button/index.html +0 -116
  64. package/coverage/shared/componentRoot/incodeComponent.tsx.html +0 -121
  65. package/coverage/shared/componentRoot/index.html +0 -116
  66. package/coverage/shared/countries/countries.ts.html +0 -502
  67. package/coverage/shared/countries/index.html +0 -116
  68. package/coverage/shared/icons/chevronDown.tsx.html +0 -151
  69. package/coverage/shared/icons/index.html +0 -131
  70. package/coverage/shared/icons/successIcon.tsx.html +0 -163
  71. package/coverage/shared/loader/index.html +0 -116
  72. package/coverage/shared/loader/loadingIcon.tsx.html +0 -286
  73. package/coverage/shared/otpInput/index.html +0 -116
  74. package/coverage/shared/otpInput/otpInput.tsx.html +0 -808
  75. package/coverage/shared/page/index.html +0 -146
  76. package/coverage/shared/page/page.tsx.html +0 -358
  77. package/coverage/shared/page/pageUiConfig.ts.html +0 -277
  78. package/coverage/shared/page/verifiedByIncode.tsx.html +0 -310
  79. package/coverage/shared/spacer/index.html +0 -116
  80. package/coverage/shared/spacer/spacer.tsx.html +0 -349
  81. package/coverage/shared/spinner/index.html +0 -116
  82. package/coverage/shared/spinner/spinner.tsx.html +0 -280
  83. package/coverage/shared/title/index.html +0 -116
  84. package/coverage/shared/title/title.tsx.html +0 -121
  85. package/coverage/shared/uiConfig/index.html +0 -116
  86. package/coverage/shared/uiConfig/uiConfig.ts.html +0 -193
  87. package/coverage/shared/webComponent/incodeModule.ts.html +0 -172
  88. package/coverage/shared/webComponent/index.html +0 -131
  89. package/coverage/shared/webComponent/registerIncodeElement.ts.html +0 -130
  90. package/coverage/sort-arrow-sprite.png +0 -0
  91. package/coverage/sorter.js +0 -210
  92. package/coverage/styles/cn.tsx.html +0 -148
  93. package/coverage/styles/fetchTheme.ts.html +0 -349
  94. package/coverage/styles/index.html +0 -131
  95. package/dev/README.md +0 -163
  96. package/dev/getToken.ts +0 -36
  97. package/dev/headless.html +0 -875
  98. package/dev/index.html +0 -366
  99. package/dev/main-headless.tsx +0 -1332
  100. package/dev/main-orchestrated-flow.tsx +0 -1158
  101. package/dev/main-preact.tsx +0 -323
  102. package/dev/main-simplified.tsx +0 -123
  103. package/dev/main-web-component.tsx +0 -256
  104. package/dev/main.tsx +0 -332
  105. package/dev/manual.html +0 -27
  106. package/dev/orchestrated-flow.html +0 -64
  107. package/dev/simplified.html +0 -64
  108. package/dev/tiktok-logo.svg +0 -7
  109. package/dist/asset-manifest.json +0 -18
  110. package/src/defineCustomElement.tsx +0 -30
  111. package/src/email/email.test.tsx +0 -368
  112. package/src/email/email.tsx +0 -255
  113. package/src/email/emailInput.test.tsx +0 -264
  114. package/src/email/emailInput.tsx +0 -85
  115. package/src/email/styles.css +0 -59
  116. package/src/flow/flow.test.tsx +0 -796
  117. package/src/flow/flow.tsx +0 -292
  118. package/src/flow/flowCompleted.css +0 -30
  119. package/src/flow/flowCompleted.test.tsx +0 -331
  120. package/src/flow/flowCompleted.tsx +0 -121
  121. package/src/flow/flowInit.test.ts +0 -264
  122. package/src/flow/flowInit.ts +0 -94
  123. package/src/flow/flowStart.css +0 -58
  124. package/src/flow/flowStart.test.tsx +0 -49
  125. package/src/flow/flowStart.tsx +0 -41
  126. package/src/flow/incode-logo.svg +0 -8
  127. package/src/flow/index.ts +0 -7
  128. package/src/flow/preloadFlow.test.ts +0 -421
  129. package/src/flow/preloadFlow.ts +0 -171
  130. package/src/flow/styles.css +0 -9
  131. package/src/flow/unsupportedModule.css +0 -21
  132. package/src/flow/unsupportedModule.tsx +0 -39
  133. package/src/flow/useFlowInitialization.test.tsx +0 -292
  134. package/src/flow/useFlowInitialization.ts +0 -128
  135. package/src/flow/useModuleLoader.test.tsx +0 -212
  136. package/src/flow/useModuleLoader.ts +0 -92
  137. package/src/hooks/index.ts +0 -1
  138. package/src/hooks/useManager.test.ts +0 -91
  139. package/src/hooks/useManager.ts +0 -40
  140. package/src/i18n/index.ts +0 -3
  141. package/src/i18n/instance.ts +0 -16
  142. package/src/i18n/setup.ts +0 -184
  143. package/src/i18n/useTranslation.ts +0 -42
  144. package/src/index.ts +0 -27
  145. package/src/permissions/assets/android-dots-icon.svg +0 -7
  146. package/src/permissions/assets/android-settings-icon.svg +0 -16
  147. package/src/permissions/assets/android-toggle-icon.svg +0 -20
  148. package/src/permissions/assets/bank-card-icon.svg +0 -14
  149. package/src/permissions/assets/camera-icon.svg +0 -12
  150. package/src/permissions/assets/camera-ios.svg +0 -53
  151. package/src/permissions/assets/check-icon.svg +0 -8
  152. package/src/permissions/assets/chrome-icon.svg +0 -43
  153. package/src/permissions/assets/password-icon.svg +0 -11
  154. package/src/permissions/assets/permissions-img.svg +0 -51
  155. package/src/permissions/assets/safari-icon.svg +0 -37
  156. package/src/permissions/assets/settings-icon.svg +0 -33
  157. package/src/permissions/assets/toggle-icon.svg +0 -19
  158. package/src/permissions/assets/warning-icon.svg +0 -6
  159. package/src/permissions/boldWithArrow.css +0 -9
  160. package/src/permissions/boldWithArrow.tsx +0 -41
  161. package/src/permissions/denied.css +0 -37
  162. package/src/permissions/denied.tsx +0 -29
  163. package/src/permissions/deniedAndroid.tsx +0 -56
  164. package/src/permissions/deniedDesktop.css +0 -9
  165. package/src/permissions/deniedDesktop.tsx +0 -64
  166. package/src/permissions/deniedIOS.tsx +0 -73
  167. package/src/permissions/deniedInstructions.tsx +0 -19
  168. package/src/permissions/iconWrapper.css +0 -9
  169. package/src/permissions/iconWrapper.tsx +0 -15
  170. package/src/permissions/learnMore.css +0 -37
  171. package/src/permissions/learnMore.tsx +0 -85
  172. package/src/permissions/numberedStep.css +0 -13
  173. package/src/permissions/numberedStep.tsx +0 -14
  174. package/src/permissions/permissions.css +0 -13
  175. package/src/permissions/permissions.tsx +0 -68
  176. package/src/phone/phone.tsx +0 -246
  177. package/src/phone/phoneInput.test.tsx +0 -275
  178. package/src/phone/phoneInput.tsx +0 -249
  179. package/src/phone/styles.css +0 -158
  180. package/src/selfie/cameraButton.css +0 -13
  181. package/src/selfie/cameraButton.tsx +0 -35
  182. package/src/selfie/capture.css +0 -57
  183. package/src/selfie/capture.tsx +0 -232
  184. package/src/selfie/errorModal.tsx +0 -218
  185. package/src/selfie/errorModalContent.css +0 -33
  186. package/src/selfie/errorModalContent.tsx +0 -44
  187. package/src/selfie/faceOutline.css +0 -5
  188. package/src/selfie/faceOutline.tsx +0 -22
  189. package/src/selfie/loadingBorder.css +0 -12
  190. package/src/selfie/loadingBorder.tsx +0 -77
  191. package/src/selfie/manualCaptureButton.css +0 -13
  192. package/src/selfie/manualCaptureButton.tsx +0 -35
  193. package/src/selfie/noMoreAttemptsModal.tsx +0 -44
  194. package/src/selfie/notification.css +0 -9
  195. package/src/selfie/notification.tsx +0 -36
  196. package/src/selfie/retryErrorModal.tsx +0 -56
  197. package/src/selfie/selfie.test.tsx +0 -458
  198. package/src/selfie/selfie.tsx +0 -83
  199. package/src/selfie/selfieTutorial.json +0 -2626
  200. package/src/selfie/styles.css +0 -1
  201. package/src/selfie/tutorial.test.tsx +0 -200
  202. package/src/selfie/tutorial.tsx +0 -43
  203. package/src/setup.ts +0 -33
  204. package/src/shared/baseTutorial/baseTutorial.css +0 -21
  205. package/src/shared/baseTutorial/baseTutorial.test.tsx +0 -184
  206. package/src/shared/baseTutorial/baseTutorial.tsx +0 -55
  207. package/src/shared/baseTutorial/replaceBaseTutorial.test.ts +0 -267
  208. package/src/shared/baseTutorial/replaceBaseTutorial.ts +0 -68
  209. package/src/shared/button/button.css +0 -55
  210. package/src/shared/button/button.test.tsx +0 -101
  211. package/src/shared/button/button.tsx +0 -47
  212. package/src/shared/componentRoot/incodeComponent.tsx +0 -12
  213. package/src/shared/countries/countries.test.ts +0 -75
  214. package/src/shared/countries/countries.ts +0 -139
  215. package/src/shared/countries/index.ts +0 -6
  216. package/src/shared/icons/chevronDown.tsx +0 -22
  217. package/src/shared/icons/index.ts +0 -2
  218. package/src/shared/icons/successIcon.css +0 -5
  219. package/src/shared/icons/successIcon.test.tsx +0 -40
  220. package/src/shared/icons/successIcon.tsx +0 -26
  221. package/src/shared/loader/loadingIcon.css +0 -28
  222. package/src/shared/loader/loadingIcon.tsx +0 -67
  223. package/src/shared/lottie/lottie.tsx +0 -108
  224. package/src/shared/otpInput/otpInput.css +0 -85
  225. package/src/shared/otpInput/otpInput.test.tsx +0 -356
  226. package/src/shared/otpInput/otpInput.tsx +0 -241
  227. package/src/shared/page/incode-logo.svg +0 -3
  228. package/src/shared/page/page.css +0 -47
  229. package/src/shared/page/page.test.tsx +0 -97
  230. package/src/shared/page/page.tsx +0 -91
  231. package/src/shared/page/pageUiConfig.test.ts +0 -112
  232. package/src/shared/page/pageUiConfig.ts +0 -64
  233. package/src/shared/page/verifiedByIncode.css +0 -5
  234. package/src/shared/page/verifiedByIncode.tsx +0 -75
  235. package/src/shared/spacer/spacer.css +0 -149
  236. package/src/shared/spacer/spacer.test.tsx +0 -143
  237. package/src/shared/spacer/spacer.tsx +0 -88
  238. package/src/shared/spinner/index.ts +0 -2
  239. package/src/shared/spinner/spinner.css +0 -28
  240. package/src/shared/spinner/spinner.test.tsx +0 -82
  241. package/src/shared/spinner/spinner.tsx +0 -65
  242. package/src/shared/title/title.css +0 -7
  243. package/src/shared/title/title.tsx +0 -12
  244. package/src/shared/uiConfig/uiConfig.ts +0 -36
  245. package/src/shared/webComponent/incodeModule.ts +0 -29
  246. package/src/shared/webComponent/registerIncodeElement.ts +0 -15
  247. package/src/styles/__mocks__/fetchTheme.ts +0 -19
  248. package/src/styles/applyTheme.ts +0 -37
  249. package/src/styles/cn.test.tsx +0 -57
  250. package/src/styles/cn.tsx +0 -21
  251. package/src/styles/core.css +0 -12
  252. package/src/styles/fetchTheme.test.ts +0 -390
  253. package/src/styles/fetchTheme.ts +0 -88
  254. package/src/styles/generatePalette.ts +0 -111
  255. package/src/styles/reset.css +0 -65
  256. package/src/styles/resolveCssVariableToHex.ts +0 -28
  257. package/src/styles/tailwind.css +0 -291
  258. package/src/styles/themeTypes.ts +0 -18
  259. package/src/styles/tokens/colors.css +0 -190
  260. package/src/styles/tokens/components.css +0 -174
  261. package/src/styles/tokens/index.css +0 -4
  262. package/src/styles/tokens/primitives.css +0 -129
  263. package/src/styles/tokens/semantic.css +0 -51
  264. package/src/svg.d.ts +0 -4
  265. package/src/types/assets.d.ts +0 -1
  266. package/src/types/custom-elements.d.ts +0 -104
  267. package/tsconfig.json +0 -22
  268. package/vite.config.ts +0 -260
  269. package/vitest.config.ts +0 -40
  270. package/vitest.setup.ts +0 -16
  271. /package/dist/{styles/tokens.css → themes/light.css} +0 -0
  272. /package/dist/types/{core.d.ts → base.d.ts} +0 -0
  273. /package/dist/types/{styles/core.d.ts → themes/dark.d.ts} +0 -0
@@ -1,92 +0,0 @@
1
- import type { FC } from 'preact/compat';
2
- import { useEffect, useRef, useState } from 'preact/hooks';
3
- import { LAZY_UI_MODULES } from './flowInit';
4
-
5
- type ModuleLoaderState =
6
- | { status: 'idle' }
7
- | { status: 'loading'; moduleKey: string }
8
- | {
9
- status: 'loaded';
10
- moduleKey: string;
11
- Component: FC<Record<string, unknown>>;
12
- }
13
- | { status: 'unsupported'; moduleKey: string }
14
- | { status: 'error'; moduleKey: string; error: string };
15
-
16
- type UseModuleLoaderOptions = {
17
- moduleKey: string | undefined;
18
- onModuleLoading?: (moduleKey: string) => void;
19
- onModuleLoaded?: (moduleKey: string) => void;
20
- onError?: (error: string) => void;
21
- };
22
-
23
- export function useModuleLoader(
24
- options: UseModuleLoaderOptions,
25
- ): ModuleLoaderState {
26
- const { moduleKey, onModuleLoading, onModuleLoaded, onError } = options;
27
- const [state, setState] = useState<ModuleLoaderState>({ status: 'idle' });
28
-
29
- useEffect(() => {
30
- if (!moduleKey) {
31
- setState({ status: 'idle' });
32
- return;
33
- }
34
-
35
- const loader = LAZY_UI_MODULES[moduleKey as keyof typeof LAZY_UI_MODULES];
36
-
37
- if (!loader) {
38
- setState({ status: 'unsupported', moduleKey });
39
- return;
40
- }
41
-
42
- setState({ status: 'loading', moduleKey });
43
- onModuleLoading?.(moduleKey);
44
-
45
- let cancelled = false;
46
-
47
- loader()
48
- .then((Component) => {
49
- if (!cancelled) {
50
- setState({ status: 'loaded', moduleKey, Component });
51
- onModuleLoaded?.(moduleKey);
52
- }
53
- })
54
- .catch((error) => {
55
- if (!cancelled) {
56
- const errorMessage =
57
- error instanceof Error ? error.message : 'Failed to load module';
58
- setState({ status: 'error', moduleKey, error: errorMessage });
59
- onError?.(`Failed to load ${moduleKey}: ${errorMessage}`);
60
- }
61
- });
62
-
63
- return () => {
64
- cancelled = true;
65
- };
66
- }, [moduleKey, onModuleLoading, onModuleLoaded, onError]);
67
-
68
- return state;
69
- }
70
-
71
- export function usePrefetchNextModule(
72
- steps: string[],
73
- currentStepIndex: number,
74
- ): void {
75
- const prefetchedRef = useRef<Set<string>>(new Set());
76
-
77
- useEffect(() => {
78
- if (currentStepIndex < steps.length - 1) {
79
- const nextStep = steps[currentStepIndex + 1];
80
- if (nextStep && !prefetchedRef.current.has(nextStep)) {
81
- prefetchedRef.current.add(nextStep);
82
- const loader =
83
- LAZY_UI_MODULES[nextStep as keyof typeof LAZY_UI_MODULES];
84
- if (loader) {
85
- loader().catch(() => {
86
- prefetchedRef.current.delete(nextStep);
87
- });
88
- }
89
- }
90
- }
91
- }, [steps, currentStepIndex]);
92
- }
@@ -1 +0,0 @@
1
- export { useManager } from './useManager';
@@ -1,91 +0,0 @@
1
- import { renderHook } from '@testing-library/preact';
2
- import { describe, expect, it, vi } from 'vitest';
3
- import { useManager } from './useManager';
4
-
5
- type MockManager = {
6
- getState: () => { status: string };
7
- subscribe: (listener: (state: { status: string }) => void) => () => void;
8
- load?: () => void;
9
- };
10
-
11
- describe('useManager', () => {
12
- it('returns initial state from manager', () => {
13
- const mockState = { status: 'idle' };
14
- const mockManager: MockManager = {
15
- getState: () => mockState,
16
- subscribe: vi.fn(() => vi.fn()),
17
- };
18
-
19
- const { result } = renderHook(() => useManager(() => mockManager));
20
-
21
- expect(result.current[0]).toBe(mockState);
22
- expect(result.current[1]).toBe(mockManager);
23
- });
24
-
25
- it('calls manager.load when autoLoad is true', () => {
26
- const mockLoad = vi.fn();
27
- const mockManager: MockManager = {
28
- getState: () => ({ status: 'idle' }),
29
- subscribe: vi.fn(() => vi.fn()),
30
- load: mockLoad,
31
- };
32
-
33
- renderHook(() => useManager(() => mockManager, { autoLoad: true }));
34
-
35
- expect(mockLoad).toHaveBeenCalledTimes(1);
36
- });
37
-
38
- it('does not call manager.load when autoLoad is false', () => {
39
- const mockLoad = vi.fn();
40
- const mockManager: MockManager = {
41
- getState: () => ({ status: 'idle' }),
42
- subscribe: vi.fn(() => vi.fn()),
43
- load: mockLoad,
44
- };
45
-
46
- renderHook(() => useManager(() => mockManager, { autoLoad: false }));
47
-
48
- expect(mockLoad).not.toHaveBeenCalled();
49
- });
50
-
51
- it('does not call load when manager does not have load method', () => {
52
- const mockManager: MockManager = {
53
- getState: () => ({ status: 'idle' }),
54
- subscribe: vi.fn(() => vi.fn()),
55
- };
56
-
57
- const { result } = renderHook(() => useManager(() => mockManager));
58
-
59
- expect(result.current[0]).toEqual({ status: 'idle' });
60
- expect(result.current[1]).toBe(mockManager);
61
- });
62
-
63
- it('subscribes to manager state updates', () => {
64
- const mockUnsubscribe = vi.fn();
65
- const mockSubscribe = vi.fn(() => mockUnsubscribe);
66
- const mockManager: MockManager = {
67
- getState: () => ({ status: 'idle' }),
68
- subscribe: mockSubscribe,
69
- };
70
-
71
- renderHook(() => useManager(() => mockManager));
72
-
73
- expect(mockSubscribe).toHaveBeenCalledTimes(1);
74
- expect(mockSubscribe).toHaveBeenCalledWith(expect.any(Function));
75
- });
76
-
77
- it('unsubscribes on unmount', () => {
78
- const mockUnsubscribe = vi.fn();
79
- const mockSubscribe = vi.fn(() => mockUnsubscribe);
80
- const mockManager: MockManager = {
81
- getState: () => ({ status: 'idle' }),
82
- subscribe: mockSubscribe,
83
- };
84
-
85
- const { unmount } = renderHook(() => useManager(() => mockManager));
86
-
87
- unmount();
88
-
89
- expect(mockUnsubscribe).toHaveBeenCalledTimes(1);
90
- });
91
- });
@@ -1,40 +0,0 @@
1
- import { useEffect, useState } from 'preact/hooks';
2
-
3
- type UseManagerOptions = {
4
- autoLoad?: boolean;
5
- };
6
-
7
- type InferState<T> = T extends { getState: () => infer S } ? S : never;
8
-
9
- /**
10
- * Hook for subscribing to manager state updates
11
- * @param factory - Factory function that creates the manager instance
12
- * @param options - Configuration options
13
- * @returns Tuple of [state, manager]
14
- */
15
- export function useManager<
16
- TManager extends {
17
- getState: () => TState;
18
- subscribe: (listener: (state: TState) => void) => () => void;
19
- load?: () => void;
20
- },
21
- TState = InferState<TManager>,
22
- >(
23
- factory: () => TManager,
24
- options: UseManagerOptions = {},
25
- ): [TState, TManager] {
26
- const { autoLoad = true } = options;
27
- const [manager] = useState(factory);
28
- const [state, setState] = useState<TState>(
29
- () => manager.getState() as TState,
30
- );
31
-
32
- useEffect(() => {
33
- if (autoLoad && manager.load) {
34
- manager.load();
35
- }
36
- return manager.subscribe(setState as (state: TState) => void);
37
- }, [manager, autoLoad]);
38
-
39
- return [state, manager];
40
- }
package/src/i18n/index.ts DELETED
@@ -1,3 +0,0 @@
1
- export { getI18nInstance, setI18nInstance } from './instance';
2
- export { createI18n, type I18nOptions } from './setup';
3
- export { useTranslation } from './useTranslation';
@@ -1,16 +0,0 @@
1
- import type { i18n } from 'i18next';
2
- import { createI18n } from './setup';
3
-
4
- let i18nInstance: i18n | null = null;
5
-
6
- export function setI18nInstance(instance: i18n) {
7
- i18nInstance = instance;
8
- }
9
-
10
- export function getI18nInstance(): i18n {
11
- if (!i18nInstance) {
12
- // Lazily initialize with defaults if not explicitly set up
13
- i18nInstance = createI18n();
14
- }
15
- return i18nInstance;
16
- }
package/src/i18n/setup.ts DELETED
@@ -1,184 +0,0 @@
1
- import i18n from 'i18next';
2
- import LanguageDetector from 'i18next-browser-languagedetector';
3
- import HttpBackend from 'i18next-http-backend';
4
-
5
- const supportedLngs = [
6
- 'en',
7
- 'en-DG',
8
- 'es',
9
- 'es-ES',
10
- 'sr',
11
- 'sr-Latn',
12
- 'fr',
13
- 'pt-BR',
14
- 'pt',
15
- 'bn',
16
- 'zh',
17
- 'hi',
18
- 'id',
19
- 'ms',
20
- 'tr',
21
- 'vi',
22
- 'ht',
23
- 'it',
24
- 'de',
25
- 'nl',
26
- 'tl-PH',
27
- 'pl',
28
- 'hu',
29
- 'ro',
30
- 'hmn',
31
- 'so',
32
- 'ca',
33
- 'af-ZA',
34
- 'ar',
35
- 'ar-EG',
36
- 'ar-AE',
37
- 'zh-CN',
38
- 'zh-TW',
39
- 'zh-HANT',
40
- 'cs-CZ',
41
- 'da-DK',
42
- 'fi-FI',
43
- 'fr-CA',
44
- 'el-GR',
45
- 'he',
46
- 'ja',
47
- 'ja-JP',
48
- 'ko-KP',
49
- 'nb-NO',
50
- 'fa-IR',
51
- 'pt-PT',
52
- 'ru-RU',
53
- 'sr-YU',
54
- 'es-419',
55
- 'es-MX',
56
- 'sv-SE',
57
- 'th-TH',
58
- 'uk-UA',
59
- 'am',
60
- 'az',
61
- 'bs',
62
- 'my',
63
- 'ceb',
64
- 'cs',
65
- 'et',
66
- 'ka',
67
- 'el',
68
- 'jv',
69
- 'kk',
70
- 'km',
71
- 'ko',
72
- 'ky',
73
- 'lo',
74
- 'lv',
75
- 'lt',
76
- 'mk',
77
- 'mn',
78
- 'ne',
79
- 'ru',
80
- 'sk',
81
- 'sl',
82
- 'sw',
83
- 'tl',
84
- 'th',
85
- 'uk',
86
- 'ur',
87
- 'uz',
88
- 'hr',
89
- ];
90
-
91
- const camelToStartCase = (text: string) => {
92
- const result = text.replace(/([A-Z])/g, ' $1');
93
- return result.charAt(0).toUpperCase() + result.slice(1);
94
- };
95
-
96
- const keyToStartCase = (key: string): string => {
97
- const splitKey = key.split('.');
98
- const missingKey = splitKey[splitKey.length - 1];
99
- return camelToStartCase(missingKey || 'missing key');
100
- };
101
-
102
- const languageDetector = new LanguageDetector();
103
- languageDetector.addDetector({
104
- name: 'navigatorOnlyLanguage',
105
- lookup() {
106
- if (typeof navigator === 'undefined') {
107
- return 'en';
108
- }
109
- const languageFromBrowser = navigator.language;
110
- if (supportedLngs.includes(languageFromBrowser)) {
111
- return languageFromBrowser;
112
- }
113
- return languageFromBrowser.split('-')[0];
114
- },
115
- });
116
-
117
- const loadPath =
118
- 'https://api.i18nexus.com/project_resources/translations/{{lng}}/{{ns}}.json?api_key=cg41dUINoxdp8BaHDQLJhA';
119
-
120
- type TranslationValue = string | Record<string, unknown>;
121
- type LanguageTranslations = Record<string, TranslationValue>;
122
- type Translations = Partial<Record<string, LanguageTranslations>>;
123
-
124
- export type I18nOptions = {
125
- lang?: string;
126
- translations?: Translations;
127
- };
128
-
129
- function applyOverrides(i18nInstance: typeof i18n, translations: Translations) {
130
- for (const [langCode, value] of Object.entries(translations)) {
131
- if (value) {
132
- i18nInstance.addResourceBundle(langCode, 'default', value, true, true);
133
- }
134
- }
135
- }
136
-
137
- export function createI18n(options: I18nOptions = {}) {
138
- const { lang, translations } = options;
139
- const i18nInstance = i18n.createInstance();
140
-
141
- i18nInstance
142
- .use(HttpBackend)
143
- .use(languageDetector)
144
- .init({
145
- lng: lang,
146
- fallbackLng: 'en',
147
- supportedLngs,
148
- ns: ['default'],
149
- defaultNS: 'default',
150
- partialBundledLanguages: true,
151
- keySeparator: '.',
152
- interpolation: {
153
- escapeValue: false,
154
- },
155
- backend: {
156
- loadPath,
157
- },
158
- detection: {
159
- order: [
160
- 'querystring',
161
- 'cookie',
162
- 'localStorage',
163
- 'sessionStorage',
164
- 'navigatorOnlyLanguage',
165
- 'htmlTag',
166
- 'path',
167
- 'subdomain',
168
- ],
169
- lookupQuerystring: 'lang',
170
- },
171
- initImmediate: false,
172
- parseMissingKeyHandler: keyToStartCase,
173
- });
174
-
175
- if (translations) {
176
- applyOverrides(i18nInstance, translations);
177
-
178
- i18nInstance.on('loaded', () => {
179
- applyOverrides(i18nInstance, translations);
180
- });
181
- }
182
-
183
- return i18nInstance;
184
- }
@@ -1,42 +0,0 @@
1
- import type { i18n, TFunction } from 'i18next';
2
- import { useEffect, useState } from 'preact/hooks';
3
- import { getI18nInstance } from './instance';
4
-
5
- type UseTranslationReturn = {
6
- t: TFunction;
7
- ready: boolean;
8
- i18n: i18n;
9
- };
10
-
11
- export function useTranslation(): UseTranslationReturn {
12
- const i18nInstance = getI18nInstance();
13
- const [, forceUpdate] = useState(0);
14
- const [ready, setReady] = useState(i18nInstance.isInitialized);
15
-
16
- useEffect(() => {
17
- const handleLanguageChanged = () => {
18
- forceUpdate((n) => n + 1);
19
- };
20
-
21
- const handleInitialized = () => {
22
- setReady(true);
23
- forceUpdate((n) => n + 1);
24
- };
25
-
26
- i18nInstance.on('languageChanged', handleLanguageChanged);
27
- i18nInstance.on('initialized', handleInitialized);
28
- i18nInstance.on('loaded', handleLanguageChanged);
29
-
30
- return () => {
31
- i18nInstance.off('languageChanged', handleLanguageChanged);
32
- i18nInstance.off('initialized', handleInitialized);
33
- i18nInstance.off('loaded', handleLanguageChanged);
34
- };
35
- }, [i18nInstance]);
36
-
37
- return {
38
- t: i18nInstance.t.bind(i18nInstance),
39
- ready,
40
- i18n: i18nInstance,
41
- };
42
- }
package/src/index.ts DELETED
@@ -1,27 +0,0 @@
1
- export type {
2
- FlowCompletedProps,
3
- IncodeFlowProps,
4
- PreloadHandle,
5
- SpinnerConfig,
6
- } from './flow';
7
- export {
8
- FlowCompleted,
9
- FlowStart,
10
- IncodeFlow,
11
- preloadIncodeFlow,
12
- } from './flow';
13
- export { useManager } from './hooks';
14
- export { useTranslation } from './i18n';
15
- export { setup } from './setup';
16
- export type { UiConfig } from './shared/uiConfig/uiConfig';
17
- export { setUiConfig } from './shared/uiConfig/uiConfig';
18
-
19
- // Web Component element types for typed DOM access
20
- export type {
21
- FlowCompletedElement,
22
- IncodeEmailElement,
23
- IncodeFlowElement,
24
- IncodeModuleProps,
25
- IncodePhoneElement,
26
- IncodeSelfieElement,
27
- } from './types/custom-elements';
@@ -1,7 +0,0 @@
1
- <svg width="38" height="38" viewBox="0 0 38 38" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <rect width="38" height="38" rx="8" fill="white" />
3
- <path
4
- d="M19 24C20.3807 24 21.5 25.1193 21.5 26.5C21.5 27.8807 20.3807 29 19 29C17.6193 29 16.5 27.8807 16.5 26.5C16.5 25.1193 17.6193 24 19 24ZM19 17C20.3807 17 21.5 18.1193 21.5 19.5C21.5 20.8807 20.3807 22 19 22C17.6193 22 16.5 20.8807 16.5 19.5C16.5 18.1193 17.6193 17 19 17ZM19 10C20.3807 10 21.5 11.1193 21.5 12.5C21.5 13.8807 20.3807 15 19 15C17.6193 15 16.5 13.8807 16.5 12.5C16.5 11.1193 17.6193 10 19 10Z"
5
- fill="#646464" />
6
- </svg>
7
-
@@ -1,16 +0,0 @@
1
- <svg width="38" height="38" viewBox="0 0 38 38" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path
3
- d="M30.2222 0H7.77778C3.48223 0 0 3.48903 0 7.79297V30.207C0 34.511 3.48223 38 7.77778 38H30.2222C34.5178 38 38 34.511 38 30.207V7.79297C38 3.48903 34.5178 0 30.2222 0Z"
4
- fill="white" />
5
- <g clip-path="url(#clip0_12232_5207)">
6
- <path
7
- d="M26.1401 19.94C26.1801 19.64 26.2001 19.33 26.2001 19C26.2001 18.68 26.1801 18.36 26.1301 18.06L28.1601 16.48C28.3401 16.34 28.3901 16.07 28.2801 15.87L26.3601 12.55C26.2401 12.33 25.9901 12.26 25.7701 12.33L23.3801 13.29C22.8801 12.91 22.3501 12.59 21.7601 12.35L21.4001 9.81002C21.3601 9.57002 21.1601 9.40002 20.9201 9.40002H17.0801C16.8401 9.40002 16.6501 9.57002 16.6101 9.81002L16.2501 12.35C15.6601 12.59 15.1201 12.92 14.6301 13.29L12.2401 12.33C12.0201 12.25 11.7701 12.33 11.6501 12.55L9.74011 15.87C9.62011 16.08 9.66011 16.34 9.86011 16.48L11.8901 18.06C11.8401 18.36 11.8001 18.69 11.8001 19C11.8001 19.31 11.8201 19.64 11.8701 19.94L9.84011 21.52C9.66011 21.66 9.61011 21.93 9.72011 22.13L11.6401 25.45C11.7601 25.67 12.0101 25.74 12.2301 25.67L14.6201 24.71C15.1201 25.09 15.6501 25.41 16.2401 25.65L16.6001 28.19C16.6501 28.43 16.8401 28.6 17.0801 28.6H20.9201C21.1601 28.6 21.3601 28.43 21.3901 28.19L21.7501 25.65C22.3401 25.41 22.8801 25.09 23.3701 24.71L25.7601 25.67C25.9801 25.75 26.2301 25.67 26.3501 25.45L28.2701 22.13C28.3901 21.91 28.3401 21.66 28.1501 21.52L26.1401 19.94ZM19.0001 22.6C17.0201 22.6 15.4001 20.98 15.4001 19C15.4001 17.02 17.0201 15.4 19.0001 15.4C20.9801 15.4 22.6001 17.02 22.6001 19C22.6001 20.98 20.9801 22.6 19.0001 22.6Z"
8
- fill="#646464" />
9
- </g>
10
- <defs>
11
- <clipPath id="clip0_12232_5207">
12
- <rect width="24" height="24" fill="white" transform="translate(7 7)" />
13
- </clipPath>
14
- </defs>
15
- </svg>
16
-
@@ -1,20 +0,0 @@
1
- <svg width="38" height="38" viewBox="0 0 38 38" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <g clip-path="url(#clip0_12232_5215)">
3
- <g clip-path="url(#clip1_12232_5215)">
4
- <rect width="38" height="38" fill="white" />
5
- <rect width="38" height="38" fill="white" />
6
- <rect x="6" y="11" width="26" height="16" rx="8" fill="#006AFF" />
7
- <rect x="14" y="9" width="20" height="20" rx="10" fill="#65558F" fill-opacity="0.08" />
8
- <rect x="18" y="13" width="12" height="12" rx="6" fill="white" />
9
- </g>
10
- </g>
11
- <defs>
12
- <clipPath id="clip0_12232_5215">
13
- <rect width="38" height="38" rx="8.40969" fill="white" />
14
- </clipPath>
15
- <clipPath id="clip1_12232_5215">
16
- <rect width="38" height="38" fill="white" />
17
- </clipPath>
18
- </defs>
19
- </svg>
20
-
@@ -1,14 +0,0 @@
1
- <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <g id="Bank Carrd check - Iconly Pro">
3
- <path id="Vector" fill-rule="evenodd" clip-rule="evenodd"
4
- d="M22.7166 5.13574H9.28856C5.72856 5.13574 3.33789 7.63841 3.33789 11.3624V11.4691C3.33789 11.69 3.51697 11.8691 3.73789 11.8691H28.2686C28.4894 11.8691 28.6686 11.69 28.6686 11.4691V11.3624C28.6686 7.63841 26.2766 5.13574 22.7166 5.13574Z"
5
- fill="#60667C" />
6
- <path id="Vector_2" fill-rule="evenodd" clip-rule="evenodd"
7
- d="M3.33105 19.2977C3.33105 19.5995 3.65712 19.7977 3.94672 19.7129C5.07919 19.3811 6.36578 19.6628 7.26439 20.5501L7.58103 20.8668C7.73744 21.0232 7.9911 21.0231 8.14723 20.8664L11.5977 17.4035C12.9044 16.1101 15.011 16.0968 16.3177 17.4035C17.611 18.7101 17.6243 20.8168 16.3177 22.1235L12.7713 25.6811C12.5199 25.9333 12.6985 26.3635 13.0546 26.3635H22.7177C26.2777 26.3635 28.6643 23.8568 28.6643 20.1368V14.2701C28.6643 14.0493 28.4853 13.8701 28.2643 13.8701H3.73104C3.51013 13.8701 3.33105 14.0493 3.33105 14.2701V19.2977Z"
8
- fill="#60667C" />
9
- <path id="Vector_3" fill-rule="evenodd" clip-rule="evenodd"
10
- d="M14.6674 19.0557C14.2754 18.6637 13.642 18.6664 13.2527 19.0557L7.86199 24.4544L5.60999 22.2024C5.21932 21.8117 4.58599 21.8117 4.19532 22.2024C3.80599 22.593 3.80599 23.2264 4.19532 23.617L7.15532 26.577C7.34332 26.7637 7.59665 26.869 7.86199 26.869C8.12865 26.869 8.38199 26.7637 8.56999 26.577L14.6674 20.4704C15.058 20.0797 15.058 19.445 14.6674 19.0557Z"
11
- fill="#60667C" />
12
- </g>
13
- </svg>
14
-
@@ -1,12 +0,0 @@
1
- <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <g id="Camera - Iconly Pro">
3
- <g id="Iconly/Bold/Camera">
4
- <g id="Camera">
5
- <path id="Vector"
6
- d="M19.1337 4C20.427 4.01332 21.4803 4.67925 22.0937 5.87791C22.252 6.19423 22.4728 6.65622 22.7041 7.14356L22.9832 7.73286L23.1203 8.0222L23.2537 8.31521C23.307 8.40844 23.4003 8.47503 23.5203 8.47503C26.7203 8.47503 29.3337 11.0855 29.3337 14.2819V22.1931C29.3337 25.3896 26.7203 28 23.5203 28H8.48033C5.26699 28 2.66699 25.3896 2.66699 22.1931V14.2819C2.66699 11.0855 5.26699 8.47503 8.48033 8.47503C8.58699 8.47503 8.69366 8.42175 8.73366 8.31521L8.81366 8.15538C9.18699 7.36959 9.64033 6.41066 9.90699 5.87791C10.5203 4.67925 11.5603 4.01332 12.8537 4H19.1337ZM16.0003 12.5372C14.6003 12.5372 13.2803 13.0832 12.2803 14.0821C11.2937 15.081 10.747 16.3862 10.7603 17.7714C10.7603 19.1698 11.307 20.475 12.2937 21.4739C13.2937 22.4595 14.6003 23.0056 16.0003 23.0056C17.4403 23.0056 18.747 22.4195 19.6937 21.4739C20.6403 20.5283 21.227 19.2231 21.2403 17.7714C21.2403 16.3862 20.6937 15.0677 19.707 14.0688C18.7203 13.0832 17.4003 12.5372 16.0003 12.5372ZM16.0003 14.535C16.867 14.535 17.6803 14.8679 18.2937 15.4806C18.907 16.0932 19.2403 16.9057 19.2403 17.7714C19.227 19.556 17.787 21.0078 16.0003 21.0078C15.1337 21.0078 14.3203 20.6748 13.707 20.0622C13.0937 19.4495 12.7603 18.6371 12.7603 17.7714V17.758C12.747 16.919 13.0803 16.1065 13.6937 15.4939C14.3203 14.8679 15.1337 14.535 16.0003 14.535ZM23.4803 12.2175C22.8137 12.2175 22.2803 12.7636 22.2803 13.4295C22.2803 14.0954 22.8137 14.6282 23.4803 14.6282C24.147 14.6282 24.6937 14.0954 24.6937 13.4295C24.6937 12.7636 24.147 12.2175 23.4803 12.2175Z"
7
- fill="#60667C" />
8
- </g>
9
- </g>
10
- </g>
11
- </svg>
12
-
@@ -1,53 +0,0 @@
1
- <svg width="38" height="38" viewBox="0 0 38 38" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <g clip-path="url(#clip0_6851_3788)">
3
- <g clip-path="url(#clip1_6851_3788)">
4
- <rect width="38" height="38" fill="white" />
5
- <rect width="38" height="38" fill="url(#paint0_linear_6851_3788)" />
6
- <path
7
- d="M21.5031 7.81104H16.2853C15.7254 7.81104 15.1884 8.03346 14.7925 8.42937L13.0374 10.1845C12.7999 10.422 12.4777 10.5555 12.1417 10.5555H9.7953C8.14003 10.5555 7.3124 10.5555 6.68017 10.8776C6.12404 11.161 5.6719 11.6131 5.38854 12.1692C5.06641 12.8015 5.06641 13.6291 5.06641 15.2844V24.6155C5.06641 26.2707 5.06641 27.0984 5.38854 27.7306C5.6719 28.2867 6.12404 28.7389 6.68017 29.0222C7.3124 29.3444 8.14003 29.3444 9.7953 29.3444H28.2042C29.8595 29.3444 30.6871 29.3444 31.3193 29.0222C31.8754 28.7389 32.3276 28.2867 32.6109 27.7306C32.9331 27.0984 32.9331 26.2707 32.9331 24.6155V15.2844C32.9331 13.6291 32.9331 12.8015 32.6109 12.1692C32.3276 11.6131 31.8754 11.161 31.3193 10.8776C30.6871 10.5555 29.8595 10.5555 28.2042 10.5555H25.6466C25.3107 10.5555 24.9885 10.422 24.751 10.1845L22.9958 8.42937C22.5999 8.03346 22.063 7.81104 21.5031 7.81104Z"
8
- fill="url(#paint1_linear_6851_3788)" />
9
- <circle cx="28.4996" cy="14.7778" r="1.26667" fill="#FCCA00" />
10
- <g filter="url(#filter0_d_6851_3788)">
11
- <path fill-rule="evenodd" clip-rule="evenodd"
12
- d="M18.9998 26.1778C22.4976 26.1778 25.3332 23.3422 25.3332 19.8444C25.3332 16.3466 22.4976 13.5111 18.9998 13.5111C15.502 13.5111 12.6665 16.3466 12.6665 19.8444C12.6665 23.3422 15.502 26.1778 18.9998 26.1778ZM19 24.911C21.7982 24.911 24.0666 22.6426 24.0666 19.8443C24.0666 17.0461 21.7982 14.7777 19 14.7777C16.2017 14.7777 13.9333 17.0461 13.9333 19.8443C13.9333 22.6426 16.2017 24.911 19 24.911Z"
13
- fill="url(#paint2_linear_6851_3788)" />
14
- </g>
15
- </g>
16
- </g>
17
- <defs>
18
- <filter id="filter0_d_6851_3788" x="11.8221" y="13.5111" width="14.3554" height="14.3555"
19
- filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
20
- <feFlood flood-opacity="0" result="BackgroundImageFix" />
21
- <feColorMatrix in="SourceAlpha" type="matrix"
22
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha" />
23
- <feOffset dy="0.844444" />
24
- <feGaussianBlur stdDeviation="0.422222" />
25
- <feComposite in2="hardAlpha" operator="out" />
26
- <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" />
27
- <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_6851_3788" />
28
- <feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_6851_3788" result="shape" />
29
- </filter>
30
- <linearGradient id="paint0_linear_6851_3788" x1="19" y1="0" x2="19" y2="38"
31
- gradientUnits="userSpaceOnUse">
32
- <stop stop-color="#E5E4EB" />
33
- <stop offset="1" stop-color="#8F8E92" />
34
- </linearGradient>
35
- <linearGradient id="paint1_linear_6851_3788" x1="18.9997" y1="7.81104" x2="18.9997" y2="29.3444"
36
- gradientUnits="userSpaceOnUse">
37
- <stop stop-color="#2D2D2D" />
38
- <stop offset="1" stop-color="#2D2C2E" />
39
- </linearGradient>
40
- <linearGradient id="paint2_linear_6851_3788" x1="18.9998" y1="13.5111" x2="18.9998" y2="26.1778"
41
- gradientUnits="userSpaceOnUse">
42
- <stop stop-color="#C4C3C7" />
43
- <stop offset="1" stop-color="#AAA9B0" />
44
- </linearGradient>
45
- <clipPath id="clip0_6851_3788">
46
- <rect width="38" height="38" rx="8.40969" fill="white" />
47
- </clipPath>
48
- <clipPath id="clip1_6851_3788">
49
- <rect width="38" height="38" fill="white" />
50
- </clipPath>
51
- </defs>
52
- </svg>
53
-
@@ -1,8 +0,0 @@
1
- <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <g id="Check badge - Iconly Pro">
3
- <path id="Vector" fill-rule="evenodd" clip-rule="evenodd"
4
- d="M20.7779 14.0773L15.3473 19.5106C15.1593 19.6986 14.9046 19.8039 14.6393 19.8039C14.3739 19.8039 14.1193 19.6986 13.9326 19.5106L11.2967 16.8706C10.9073 16.4786 10.9073 15.8453 11.298 15.4546C11.69 15.0653 12.322 15.0666 12.7127 15.4559L14.6406 17.3879L19.3633 12.6625C19.7539 12.2719 20.3873 12.2719 20.7779 12.6625C21.1686 13.0532 21.1686 13.6866 20.7779 14.0773ZM27.6046 13.4479L26.6726 12.5159C26.2473 12.0892 26.0139 11.5212 26.0139 10.9199V9.58655C26.0139 7.60122 24.3979 5.98655 22.4139 5.98655H21.0779C20.4739 5.98655 19.9073 5.75322 19.4833 5.32922L18.5353 4.38255C17.1259 2.98522 14.8433 2.99188 13.4446 4.39722L12.5153 5.32922C12.0873 5.75455 11.5207 5.98788 10.918 5.98788H9.58333C7.622 5.98922 6.022 7.56788 5.986 9.52255C5.98465 9.54388 5.98333 9.56522 5.98333 9.58788V10.9172C5.98333 11.5199 5.75 12.0865 5.32467 12.5119L4.38067 13.4573C4.37933 13.4613 4.37533 13.4626 4.37267 13.4653C2.97933 14.8759 2.99133 17.1586 4.39533 18.5493L5.32733 19.4839C5.75133 19.9093 5.986 20.4746 5.986 21.0773V22.4173C5.986 24.4013 7.59933 26.0159 9.58333 26.0159H10.9153C11.5193 26.0173 12.086 26.2506 12.51 26.6733L13.4606 27.6213C14.1379 28.2946 15.0366 28.6653 15.9926 28.6653H16.0086C16.9699 28.6613 17.8713 28.2826 18.5459 27.6039L19.4806 26.6706C19.9006 26.2519 20.4819 26.0119 21.0753 26.0119H22.4166C24.3966 26.0119 26.0113 24.3999 26.0153 22.4173V21.0799C26.0153 20.4786 26.2486 19.9119 26.6713 19.4866L27.6193 18.5386C29.0193 17.1306 29.0113 14.8466 27.6046 13.4479Z"
5
- fill="#60667C" />
6
- </g>
7
- </svg>
8
-