@smartcomply/web-sdk 1.0.0 → 1.0.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.
- package/dist/client/Config.d.ts +8 -0
- package/dist/client/HttpClient.d.ts +13 -0
- package/dist/components/MainSDKFlow.d.ts +6 -0
- package/dist/components/steps/IdentityForm.d.ts +10 -0
- package/dist/components/steps/LivenessFlow.d.ts +13 -0
- package/dist/components/steps/LivenessPreCheck.d.ts +8 -0
- package/dist/components/steps/LoadingScreen.d.ts +6 -0
- package/dist/components/steps/SuccessConfirmation.d.ts +6 -0
- package/dist/components/steps/UploadingScreen.d.ts +6 -0
- package/dist/components/steps/WelcomeScreen.d.ts +8 -0
- package/dist/components/ui/Dropdown.d.ts +14 -0
- package/dist/components/ui/SessionTimeout.d.ts +4 -0
- package/dist/components/ui/toast/ToastContainer.d.ts +1 -0
- package/dist/components/ui/toast/index.d.ts +15 -0
- package/dist/index.d.ts +4 -34
- package/dist/index.js +84 -17
- package/dist/main.d.ts +13 -0
- package/dist/utils/constants.d.ts +8 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/livenessHelpers.d.ts +3 -0
- package/dist/utils/types.d.ts +76 -0
- package/dist/vite.svg +1 -0
- package/dist/web-sdk.css +1 -0
- package/package.json +15 -6
- package/dist/index.cjs +0 -17
- package/dist/index.d.cts +0 -34
- package/dist/loading-5HD36QXU.svg +0 -14
- package/dist/shield-checkmark-JBZCUXJC.png +0 -0
- package/dist/success-GHUHNWON.svg +0 -4
- package/dist/trash-KETR47RP.svg +0 -7
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HttpClient } from './client/HttpClient';
|
|
2
|
+
import { SDKConfig } from './client/Config';
|
|
3
|
+
export default class SmartComply {
|
|
4
|
+
private http;
|
|
5
|
+
private config;
|
|
6
|
+
private root;
|
|
7
|
+
private containerId;
|
|
8
|
+
constructor(config: SDKConfig);
|
|
9
|
+
getConfig(): SDKConfig;
|
|
10
|
+
getHttp(): HttpClient;
|
|
11
|
+
launch(): void;
|
|
12
|
+
destroy: () => void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Channel, ServiceUse } from './types';
|
|
2
|
+
export declare const SERVICE_USES: Record<string, ServiceUse>;
|
|
3
|
+
export declare const CHANNEL_IDS: Channel;
|
|
4
|
+
export declare const SELECT_STYLES = "\n sc:block sc:w-full sc:px-2 sc:py-1.5 sc:rounded-lg\n sc:border sc:border-gray-300\n sc:text-gray-700 sc:text-sm\n sc:transition-all\n sc:hover:border-gray-400 sc:capitalize";
|
|
5
|
+
export declare const OPTION_STYLES = "\n sc:block sc:w-full sc:px-2 sc:py-1.5 sc:rounded-lg\n sc:border sc:border-gray-300\n sc:text-gray-700 sc:text-sm\n sc:transition-all\n sc:hover:border-gray-400 sc:capitalize";
|
|
6
|
+
export declare const INPUT_STYLES = "\n sc:block sc:bg-white sc:w-full sc:px-2 sc:py-1.5 sc:rounded-lg\n sc:border sc:border-gray-300\n sc:shadow-sm\n sc:text-gray-700 sc:text-sm\n sc:transition-all\n sc:hover:border-gray-400";
|
|
7
|
+
export declare const ACTIONS: string[];
|
|
8
|
+
export declare const CENTERED_STEPS: string[];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ClassNameValue } from 'tailwind-merge';
|
|
2
|
+
import { TSDKTheme } from './types';
|
|
3
|
+
import { DropdownOption } from '../components/ui/Dropdown';
|
|
4
|
+
export declare const SDK_THEMES: Record<string, TSDKTheme>;
|
|
5
|
+
/**
|
|
6
|
+
* gets theme with safe fallback
|
|
7
|
+
*/
|
|
8
|
+
export declare const getSDKTheme: (themeKey?: string) => TSDKTheme;
|
|
9
|
+
export declare function cn(...inputs: ClassNameValue[]): string;
|
|
10
|
+
export declare const convertToOptions: (options: string[]) => DropdownOption[];
|
|
11
|
+
export declare function pickRandom(arr: string[], n: number): string[];
|
|
12
|
+
export declare const extractFaceFromUpload: (file: File) => Promise<Blob | null>;
|
|
13
|
+
export declare function blobToFile(blob: Blob, fileName: string, type?: string): File;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export type SDKCountry = "global" | "nigeria" | "kenya";
|
|
2
|
+
export type SDKVerificationType = "data_verification" | "document_verification";
|
|
3
|
+
export type SDK = {
|
|
4
|
+
date_created: string;
|
|
5
|
+
date_updated: string;
|
|
6
|
+
id: number;
|
|
7
|
+
verification_type: SDKVerificationType[];
|
|
8
|
+
brand_name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
theme: string;
|
|
11
|
+
redirect_url: string;
|
|
12
|
+
channels: Record<SDKCountry, string[]>;
|
|
13
|
+
};
|
|
14
|
+
export type SDKPayload = {
|
|
15
|
+
id?: number;
|
|
16
|
+
verification_type: SDKVerificationType[];
|
|
17
|
+
brand_name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
theme: string;
|
|
20
|
+
redirect_url: string;
|
|
21
|
+
channels: Record<SDKCountry, string[]>;
|
|
22
|
+
};
|
|
23
|
+
export type TSDKTheme = {
|
|
24
|
+
primaryColor: string;
|
|
25
|
+
secondaryColor: string;
|
|
26
|
+
buttonText: string;
|
|
27
|
+
borderRadius: string;
|
|
28
|
+
focus: string;
|
|
29
|
+
};
|
|
30
|
+
export type IDConfirmationFormPayload = {
|
|
31
|
+
identifier: string;
|
|
32
|
+
identifier_type: string;
|
|
33
|
+
country: string;
|
|
34
|
+
};
|
|
35
|
+
export type APIResponse<T> = {
|
|
36
|
+
data: T;
|
|
37
|
+
status: string;
|
|
38
|
+
message?: string;
|
|
39
|
+
};
|
|
40
|
+
export type ServiceUse = {
|
|
41
|
+
key: SDKVerificationType;
|
|
42
|
+
title: string;
|
|
43
|
+
preview: string;
|
|
44
|
+
subtitle: string;
|
|
45
|
+
};
|
|
46
|
+
export type ChannelID = Record<string, {
|
|
47
|
+
title: string;
|
|
48
|
+
key: string;
|
|
49
|
+
}>;
|
|
50
|
+
export type Channel = Record<string, ChannelID>;
|
|
51
|
+
export type LivenessEntry = {
|
|
52
|
+
id: number;
|
|
53
|
+
session: string;
|
|
54
|
+
result: Record<string, any>;
|
|
55
|
+
verification_metadata: Record<string, any>;
|
|
56
|
+
metadata: {
|
|
57
|
+
ip_address: string;
|
|
58
|
+
user_agent: string;
|
|
59
|
+
};
|
|
60
|
+
date_created: string;
|
|
61
|
+
date_updated: string;
|
|
62
|
+
failure_reason: string;
|
|
63
|
+
challenge_actions: string[];
|
|
64
|
+
video_url: string | null;
|
|
65
|
+
autoshot_url: string | null;
|
|
66
|
+
document_url: string | null;
|
|
67
|
+
identifier: string;
|
|
68
|
+
identifier_type: string;
|
|
69
|
+
};
|
|
70
|
+
export type LivenessEntryPayload = {
|
|
71
|
+
session: string;
|
|
72
|
+
challenge_actions: string[];
|
|
73
|
+
autoshot_file: Blob;
|
|
74
|
+
video_file: Blob;
|
|
75
|
+
id_file: Blob;
|
|
76
|
+
};
|
package/dist/vite.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
package/dist/web-sdk.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import"https://fonts.googleapis.com/css2?family=Lexend:wght@400;500;600;700&display=swap";@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial}}}@layer components;@layer theme{:root,:host{--sc-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--sc-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--sc-color-red-600:oklch(57.7% .245 27.325);--sc-color-green-600:oklch(62.7% .194 149.214);--sc-color-gray-50:#f8fafc;--sc-color-gray-100:#f1f5f9;--sc-color-gray-200:#e2e8f0;--sc-color-gray-300:#cbd5e1;--sc-color-gray-400:#94a3b8;--sc-color-gray-500:#64748b;--sc-color-gray-600:#475569;--sc-color-gray-700:#334155;--sc-color-white:#fff;--sc-spacing:.25rem;--sc-container-md:28rem;--sc-text-xs:.75rem;--sc-text-xs--line-height:calc(1/.75);--sc-text-sm:.875rem;--sc-text-sm--line-height:calc(1.25/.875);--sc-text-lg:1.125rem;--sc-text-lg--line-height:calc(1.75/1.125);--sc-text-xl:1.25rem;--sc-text-xl--line-height:calc(1.75/1.25);--sc-text-2xl:1.5rem;--sc-text-2xl--line-height:calc(2/1.5);--sc-font-weight-normal:400;--sc-font-weight-medium:500;--sc-font-weight-semibold:600;--sc-font-weight-bold:700;--sc-radius-lg:.5rem;--sc-radius-xl:.75rem;--sc-radius-3xl:1.5rem;--sc-ease-out:cubic-bezier(0,0,.2,1);--sc-ease-in-out:cubic-bezier(.4,0,.2,1);--sc-animate-spin:spin 1s linear infinite;--sc-animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--sc-default-font-family:var(--sc-font-sans);--sc-default-mono-font-family:var(--sc-font-mono);--sc-color-error-6:#f43f5e;--sc-color-secondary-5:#ffc87f}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--sc-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--sc-default-font-feature-settings,normal);font-variation-settings:var(--sc-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--sc-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--sc-default-mono-font-feature-settings,normal);font-variation-settings:var(--sc-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:currentColor}::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.sc\:pointer-events-none{pointer-events:none}.sc\:absolute{position:absolute}.sc\:fixed{position:fixed}.sc\:relative{position:relative}.sc\:inset-0{inset:calc(var(--sc-spacing)*0)}.sc\:top-0{top:calc(var(--sc-spacing)*0)}.sc\:top-6{top:calc(var(--sc-spacing)*6)}.sc\:bottom-0{bottom:calc(var(--sc-spacing)*0)}.sc\:bottom-6{bottom:calc(var(--sc-spacing)*6)}.sc\:left-1\/2{left:50%}.sc\:z-1{z-index:1}.sc\:z-10{z-index:10}.sc\:z-50{z-index:50}.sc\:m-0{margin:calc(var(--sc-spacing)*0)}.sc\:mx-auto{margin-inline:auto}.sc\:mt-1{margin-top:calc(var(--sc-spacing)*1)}.sc\:mt-3{margin-top:calc(var(--sc-spacing)*3)}.sc\:mt-8{margin-top:calc(var(--sc-spacing)*8)}.sc\:mb-1{margin-bottom:calc(var(--sc-spacing)*1)}.sc\:ml-2{margin-left:calc(var(--sc-spacing)*2)}.sc\:block{display:block}.sc\:flex{display:flex}.sc\:hidden{display:none}.sc\:inline-block{display:inline-block}.sc\:aspect-\[3\/4\]{aspect-ratio:3/4}.sc\:h-2{height:calc(var(--sc-spacing)*2)}.sc\:h-4{height:calc(var(--sc-spacing)*4)}.sc\:h-12{height:calc(var(--sc-spacing)*12)}.sc\:h-\[80\%\]{height:80%}.sc\:h-\[90\%\]{height:90%}.sc\:h-\[400px\]{height:400px}.sc\:h-full{height:100%}.sc\:max-h-60{max-height:calc(var(--sc-spacing)*60)}.sc\:min-h-screen{min-height:100vh}.sc\:w-4{width:calc(var(--sc-spacing)*4)}.sc\:w-12{width:calc(var(--sc-spacing)*12)}.sc\:w-\[35\%\]{width:35%}.sc\:w-\[80\%\]{width:80%}.sc\:w-auto{width:auto}.sc\:w-full{width:100%}.sc\:max-w-\[55\%\]{max-width:55%}.sc\:max-w-\[80\%\]{max-width:80%}.sc\:max-w-\[90\%\]{max-width:90%}.sc\:max-w-\[500px\]{max-width:500px}.sc\:max-w-md{max-width:var(--sc-container-md)}.sc\:flex-1{flex:1}.sc\:-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.sc\:rotate-180{rotate:180deg}.sc\:animate-pulse{animation:var(--sc-animate-pulse)}.sc\:animate-spin{animation:var(--sc-animate-spin)}.sc\:cursor-pointer{cursor:pointer}.sc\:list-disc{list-style-type:disc}.sc\:flex-col{flex-direction:column}.sc\:items-center{align-items:center}.sc\:items-start{align-items:flex-start}.sc\:justify-between{justify-content:space-between}.sc\:justify-center{justify-content:center}.sc\:justify-end{justify-content:flex-end}.sc\:justify-start{justify-content:flex-start}.sc\:gap-1{gap:calc(var(--sc-spacing)*1)}.sc\:gap-1\.5{gap:calc(var(--sc-spacing)*1.5)}.sc\:gap-2{gap:calc(var(--sc-spacing)*2)}.sc\:gap-3{gap:calc(var(--sc-spacing)*3)}.sc\:gap-4{gap:calc(var(--sc-spacing)*4)}:where(.sc\:space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--sc-spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--sc-spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.sc\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--sc-spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--sc-spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.sc\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--sc-spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--sc-spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.sc\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--sc-spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--sc-spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.sc\:space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--sc-spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--sc-spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.sc\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--sc-spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--sc-spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.sc\:overflow-auto{overflow:auto}.sc\:overflow-hidden{overflow:hidden}.sc\:overflow-visible{overflow:visible}.sc\:overflow-y-auto{overflow-y:auto}.sc\:rounded-3xl{border-radius:var(--sc-radius-3xl)}.sc\:rounded-full{border-radius:3.40282e38px}.sc\:rounded-lg{border-radius:var(--sc-radius-lg)}.sc\:rounded-xl{border-radius:var(--sc-radius-xl)}.sc\:border{border-style:var(--tw-border-style);border-width:1px}.sc\:border-4{border-style:var(--tw-border-style);border-width:4px}.sc\:border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.sc\:border-dashed{--tw-border-style:dashed;border-style:dashed}.sc\:border-\[\#CBD5E1\]{border-color:#cbd5e1}.sc\:border-gray-200{border-color:var(--sc-color-gray-200)}.sc\:border-gray-300{border-color:var(--sc-color-gray-300)}.sc\:bg-\[\#262A2F\]{background-color:#262a2f}.sc\:bg-\[\#F8F8F8\]{background-color:#f8f8f8}.sc\:bg-\[rgba\(0\,0\,0\,0\.6\)\]{background-color:#0009}.sc\:bg-gray-50{background-color:var(--sc-color-gray-50)}.sc\:bg-gray-100{background-color:var(--sc-color-gray-100)}.sc\:bg-green-600{background-color:var(--sc-color-green-600)}.sc\:bg-red-600{background-color:var(--sc-color-red-600)}.sc\:bg-secondary-5{background-color:var(--sc-color-secondary-5)}.sc\:bg-white{background-color:var(--sc-color-white)}.sc\:stroke-\[\#62DF98\]{stroke:#62df98}.sc\:stroke-error-6\/60{stroke:var(--sc-color-error-6)}@supports (color:color-mix(in lab,red,red)){.sc\:stroke-error-6\/60{stroke:color-mix(in oklab,var(--sc-color-error-6)60%,transparent)}}.sc\:stroke-white\/50{stroke:var(--sc-color-white)}@supports (color:color-mix(in lab,red,red)){.sc\:stroke-white\/50{stroke:color-mix(in oklab,var(--sc-color-white)50%,transparent)}}.sc\:object-cover{-o-object-fit:cover;object-fit:cover}.sc\:p-2{padding:calc(var(--sc-spacing)*2)}.sc\:p-4{padding:calc(var(--sc-spacing)*4)}.sc\:px-2{padding-inline:calc(var(--sc-spacing)*2)}.sc\:px-4{padding-inline:calc(var(--sc-spacing)*4)}.sc\:px-10{padding-inline:calc(var(--sc-spacing)*10)}.sc\:py-1\.5{padding-block:calc(var(--sc-spacing)*1.5)}.sc\:py-2{padding-block:calc(var(--sc-spacing)*2)}.sc\:py-3{padding-block:calc(var(--sc-spacing)*3)}.sc\:py-4{padding-block:calc(var(--sc-spacing)*4)}.sc\:py-6{padding-block:calc(var(--sc-spacing)*6)}.sc\:py-24\!{padding-block:calc(var(--sc-spacing)*24)!important}.sc\:pt-2{padding-top:calc(var(--sc-spacing)*2)}.sc\:pt-3{padding-top:calc(var(--sc-spacing)*3)}.sc\:pb-2{padding-bottom:calc(var(--sc-spacing)*2)}.sc\:text-center{text-align:center}.sc\:text-left{text-align:left}.sc\:font-\[monospace\]{font-family:monospace}.sc\:text-2xl{font-size:var(--sc-text-2xl);line-height:var(--tw-leading,var(--sc-text-2xl--line-height))}.sc\:text-lg{font-size:var(--sc-text-lg);line-height:var(--tw-leading,var(--sc-text-lg--line-height))}.sc\:text-sm{font-size:var(--sc-text-sm);line-height:var(--tw-leading,var(--sc-text-sm--line-height))}.sc\:text-xl{font-size:var(--sc-text-xl);line-height:var(--tw-leading,var(--sc-text-xl--line-height))}.sc\:text-xs{font-size:var(--sc-text-xs);line-height:var(--tw-leading,var(--sc-text-xs--line-height))}.sc\:text-\[14px\]{font-size:14px}.sc\:font-bold{--tw-font-weight:var(--sc-font-weight-bold);font-weight:var(--sc-font-weight-bold)}.sc\:font-medium{--tw-font-weight:var(--sc-font-weight-medium);font-weight:var(--sc-font-weight-medium)}.sc\:font-normal{--tw-font-weight:var(--sc-font-weight-normal);font-weight:var(--sc-font-weight-normal)}.sc\:font-semibold{--tw-font-weight:var(--sc-font-weight-semibold);font-weight:var(--sc-font-weight-semibold)}.sc\:break-all{word-break:break-all}.sc\:text-error-6{color:var(--sc-color-error-6)}.sc\:text-gray-400{color:var(--sc-color-gray-400)}.sc\:text-gray-500{color:var(--sc-color-gray-500)}.sc\:text-gray-500\!{color:var(--sc-color-gray-500)!important}.sc\:text-gray-600{color:var(--sc-color-gray-600)}.sc\:text-gray-700{color:var(--sc-color-gray-700)}.sc\:text-white{color:var(--sc-color-white)}.sc\:capitalize{text-transform:capitalize}.sc\:opacity-25{opacity:.25}.sc\:opacity-75{opacity:.75}.sc\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.sc\:shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.sc\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.sc\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.sc\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.sc\:duration-200{--tw-duration:.2s;transition-duration:.2s}.sc\:duration-300{--tw-duration:.3s;transition-duration:.3s}.sc\:duration-500{--tw-duration:.5s;transition-duration:.5s}.sc\:ease-in-out{--tw-ease:var(--sc-ease-in-out);transition-timing-function:var(--sc-ease-in-out)}.sc\:ease-out{--tw-ease:var(--sc-ease-out);transition-timing-function:var(--sc-ease-out)}@media(hover:hover){.sc\:hover\:rounded-3xl:hover{border-radius:var(--sc-radius-3xl)}.sc\:hover\:border-gray-100:hover{border-color:var(--sc-color-gray-100)}.sc\:hover\:border-gray-400:hover{border-color:var(--sc-color-gray-400)}.sc\:hover\:\!bg-transparent:hover{background-color:#0000!important}}.sc\:disabled\:opacity-50:disabled{opacity:.5}@media not all and (min-width:450px){.sc\:max-\[450px\]\:\!w-\[calc\(100vw_-_2rem\)\]{width:calc(100vw - 2rem)!important}}@media not all and (min-width:40rem){.sc\:max-sm\:w-\[80vw\]{width:80vw}}@media(min-width:40rem){.sc\:sm\:px-10{padding-inline:calc(var(--sc-spacing)*10)}}@media(min-width:48rem){.sc\:md\:right-8{right:calc(var(--sc-spacing)*8)}.sc\:md\:bottom-6{bottom:calc(var(--sc-spacing)*6)}.sc\:md\:flex{display:flex}.sc\:md\:justify-between{justify-content:space-between}.sc\:md\:justify-start{justify-content:flex-start}.sc\:md\:bg-transparent\!{background-color:#0000!important}.sc\:md\:text-xl{font-size:var(--sc-text-xl);line-height:var(--tw-leading,var(--sc-text-xl--line-height))}}@media(hover:hover){.sc\:\[\&_li\]\:hover\:bg-transparent\! li:hover{background-color:#0000!important}}.bg-background{background-color:var(--color-background)}.bg-foreground{background-color:var(--color-foreground)}.bg-accent{background-color:var(--color-accent)}.bg-accent-foreground{background-color:var(--color-accent-foreground)}.bg-popover{background-color:var(--color-popover)}.bg-popover-foreground{background-color:var(--color-popover-foreground)}.bg-border{background-color:var(--color-border)}.bg-input-bg{background-color:var(--color-input-bg)}.bg-input-foreground{background-color:var(--color-input-foreground)}.bg-label{background-color:var(--color-label)}.bg-card{background-color:var(--color-card)}.bg-ring{background-color:var(--color-ring)}.bg-placeholder{background-color:var(--color-placeholder)}.bg-caption{background-color:var(--color-caption)}.bg-disabled{background-color:var(--color-disabled)}.bg-caption-error{background-color:var(--color-caption-error)}.bg-menu-bg{background-color:var(--color-menu-bg)}.bg-tooltip-bg{background-color:var(--color-tooltip-bg)}.text-background{color:var(--color-background)}.text-foreground{color:var(--color-foreground)}.text-accent{color:var(--color-accent)}.text-accent-foreground{color:var(--color-accent-foreground)}.text-popover{color:var(--color-popover)}.text-popover-foreground{color:var(--color-popover-foreground)}.text-border{color:var(--color-border)}.text-input-bg{color:var(--color-input-bg)}.text-input-foreground{color:var(--color-input-foreground)}.text-label{color:var(--color-label)}.text-card{color:var(--color-card)}.text-ring{color:var(--color-ring)}.text-placeholder{color:var(--color-placeholder)}.text-caption{color:var(--color-caption)}.text-disabled{color:var(--color-disabled)}.text-caption-error{color:var(--color-caption-error)}.text-menu-bg{color:var(--color-menu-bg)}.text-tooltip-bg{color:var(--color-tooltip-bg)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.text-gray-50{color:var(--color-gray-50)}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.bg-primary-10{background-color:var(--color-primary-10)}.bg-primary-20{background-color:var(--color-primary-20)}.bg-primary-30{background-color:var(--color-primary-30)}.bg-primary-40{background-color:var(--color-primary-40)}.bg-primary-60{background-color:var(--color-primary-60)}.bg-primary-80{background-color:var(--color-primary-80)}.bg-primary-95{background-color:var(--color-primary-95)}.bg-primary-100{background-color:var(--color-primary-100)}.text-primary-10{color:var(--color-primary-10)}.text-primary-20{color:var(--color-primary-20)}.text-primary-30{color:var(--color-primary-30)}.text-primary-40{color:var(--color-primary-40)}.text-primary-60{color:var(--color-primary-60)}.text-primary-80{color:var(--color-primary-80)}.text-primary-95{color:var(--color-primary-95)}.text-primary-100{color:var(--color-primary-100)}.shadow-boxy{box-shadow:var(--shadow-boxy)}.shadow-subtle{box-shadow:var(--shadow-subtle)}.shadow-subtle2{box-shadow:var(--shadow-subtle2)}.shadow-2xl{box-shadow:var(--shadow-2xl)}.shadow-3xl{box-shadow:var(--shadow-3xl)}.font-semibold{font-family:Lexend;font-weight:600}.font-bold{font-family:Lexend;font-weight:700}.font-medium{font-family:Lexend;font-weight:500}}:host{all:initial;font-family:Lexend,sans-serif;font-weight:400;display:block}:root{color-scheme:light dark;color:#ffffffde;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--background:#f8fafc;--foreground:#334155;--primary:#202d66;--primary-foreground:#fff;--input-bg:#fff;--input-foreground:#475569;--label:#475569;--placeholder:#94a3b8;--caption:#64748b;--caption-error:#f43f5e;--disabled:#f1f5f9;--card:#fff;--card-foreground:oklch(98.5% 0 0);--popover:#fff;--popover-foreground:#475569;--menu-bg:#f1f5f9;--accent:#e9eeff;--accent-foreground:#4d61b0;--secondary:#1e293b;--secondary-foreground:0 0% 100%;--muted:#64748b;--muted-foreground:#94a3b8;--border:#e2e8f0;--ring:#4d61b0;--destructive:#f43f5e;--destructive-foreground:#cc135f;--tooltip-bg:#212529;--shadow-boxy:0px 1px 2px 0px #0a0d120d;--shadow-subtle:0px 11.76px 22.06px 0px #00000014;--shadow-subtle2:0px 4px 8px 0px #9898980a;--shadow-2xl:0px 24px 48px -12px #0a0d122e;--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);background-color:#242424;font-family:Lexend,system-ui,Avenir,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}.sc-overlay{z-index:999999;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}a{color:#646cff;-webkit-text-decoration:inherit;text-decoration:inherit;font-weight:500}a:hover{color:#535bf2}body{place-items:center;min-width:320px;min-height:100vh;margin:0;display:flex}h1{font-size:3.2em;line-height:1.1}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
package/package.json
CHANGED
|
@@ -1,37 +1,45 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smartcomply/web-sdk",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.1",
|
|
5
5
|
"description": "Smartcomply Identity Verification SDK",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Tito Adeoye"
|
|
8
8
|
},
|
|
9
9
|
"type": "module",
|
|
10
10
|
"main": "dist/index.js",
|
|
11
|
-
"module": "dist/index.
|
|
11
|
+
"module": "dist/index.cjs",
|
|
12
12
|
"types": "dist/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"import": "./dist/index.js",
|
|
17
|
+
"require": "./dist/index.cjs"
|
|
18
|
+
},
|
|
19
|
+
"./styles.css": "./dist/index.css"
|
|
20
|
+
},
|
|
13
21
|
"files": [
|
|
14
22
|
"dist"
|
|
15
23
|
],
|
|
16
24
|
"scripts": {
|
|
17
|
-
"build": "
|
|
25
|
+
"build": "vite build",
|
|
18
26
|
"prepublishOnly": "npm run build"
|
|
19
27
|
},
|
|
20
28
|
"dependencies": {
|
|
21
29
|
"@mediapipe/tasks-vision": "^0.10.32",
|
|
22
30
|
"@tailwindcss/vite": "^4.1.18",
|
|
23
31
|
"clsx": "^2.1.1",
|
|
32
|
+
"preact": "^10.28.4",
|
|
24
33
|
"prettier-plugin-tailwindcss": "^0.7.2",
|
|
25
|
-
"react": "^19.2.0",
|
|
26
|
-
"react-dom": "^19.2.0",
|
|
27
|
-
"react-hot-toast": "^2.6.0",
|
|
28
34
|
"tailwind-merge": "^3.4.0",
|
|
29
35
|
"tailwindcss-animate": "^1.0.7",
|
|
30
36
|
"tsup": "^8.5.1",
|
|
37
|
+
"vite-plugin-dts": "^4.5.4",
|
|
31
38
|
"vite-tsconfig-paths": "^6.1.0"
|
|
32
39
|
},
|
|
33
40
|
"devDependencies": {
|
|
34
41
|
"@eslint/js": "^9.39.1",
|
|
42
|
+
"@tailwindcss/cli": "^4.2.0",
|
|
35
43
|
"@tailwindcss/postcss": "^4.2.0",
|
|
36
44
|
"@types/node": "^24.10.1",
|
|
37
45
|
"@types/react": "^19.2.7",
|
|
@@ -45,6 +53,7 @@
|
|
|
45
53
|
"postcss": "^8.5.6",
|
|
46
54
|
"shx": "^0.4.0",
|
|
47
55
|
"tailwindcss": "^4.1.18",
|
|
56
|
+
"terser": "^5.46.0",
|
|
48
57
|
"typescript": "~5.9.3",
|
|
49
58
|
"typescript-eslint": "^8.48.0",
|
|
50
59
|
"vite": "^7.3.1"
|
package/dist/index.cjs
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";var bt=Object.create;var oe=Object.defineProperty;var wt=Object.getOwnPropertyDescriptor;var xt=Object.getOwnPropertyNames;var kt=Object.getPrototypeOf,Ft=Object.prototype.hasOwnProperty;var Et=(t,e,r)=>e in t?oe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Tt=(t,e)=>{for(var r in e)oe(t,r,{get:e[r],enumerable:!0})},Pe=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of xt(e))!Ft.call(t,s)&&s!==r&&oe(t,s,{get:()=>e[s],enumerable:!(o=wt(e,s))||o.enumerable});return t};var W=(t,e,r)=>(r=t!=null?bt(kt(t)):{},Pe(e||!t||!t.__esModule?oe(r,"default",{value:t,enumerable:!0}):r,t)),St=t=>Pe(oe({},"__esModule",{value:!0}),t);var I=(t,e,r)=>Et(t,typeof e!="symbol"?e+"":e,r);var Bt={};Tt(Bt,{SmartComply:()=>J,default:()=>zt});module.exports=St(Bt);var nt=require("react-dom/client");function be(t,{insertAt:e}={}){if(!t||typeof document>"u")return;let r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",e==="top"&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=t:o.appendChild(document.createTextNode(t))}be(`/*! tailwindcss v4.2.0 | MIT License | https://tailwindcss.com */@layer properties;@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-gray-50: #F8FAFC;--color-gray-100: #F1F5F9;--color-gray-200: #E2E8F0;--color-gray-300: #CBD5E1;--color-gray-400: #94A3B8;--color-gray-500: #64748B;--color-gray-600: #475569;--color-gray-700: #334155;--color-gray-800: #A3AED0;--color-white: #FFFFFF;--spacing: .25rem;--container-md: 28rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--radius-lg: .5rem;--radius-xl: .75rem;--radius-3xl: 1.5rem;--shadow-2xl: var(--shadow-2xl);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--animate-spin: spin 1s linear infinite;--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono);--shadow-boxy: var(--shadow-boxy);--shadow-subtle: var(--shadow-subtle);--shadow-subtle2: var(--shadow-subtle2);--shadow-3xl: 0px 12px 24px 0px #4750760A;--color-background: var(--background);--color-foreground: var(--foreground);--color-accent: var(--accent);--color-accent-foreground: var(--accent-foreground);--color-popover: var(--popover);--color-popover-foreground: var(--popover-foreground);--color-border: var(--border);--color-input-bg: var(--input-bg);--color-input-foreground: var(--input-foreground);--color-label: var(--label);--color-card: var(--card);--color-ring: var(--ring);--color-placeholder: var(--placeholder);--color-caption: var(--caption);--color-disabled: var(--disabled);--color-caption-error: var(--accent-foreground);--color-menu-bg: var(--menu-bg);--color-tooltip-bg: var(--tooltip-bg);--color-error-6: #F43F5E;--color-primary-10: #011947;--color-primary-20: #002C72;--color-primary-30: #1D438F;--color-primary-40: #395BA9;--color-primary-60: #6E8EDF;--color-primary-80: #B1C5FF;--color-primary-95: #EEF0FF;--color-primary-100: #304499;--color-secondary-5: #FFC87F}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::-moz-placeholder{color:currentcolor;@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,currentcolor 50%,transparent)}}::placeholder{color:currentcolor;@supports (color: color-mix(in lab,red,red)){color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-6{bottom:calc(var(--spacing) * 6)}.z-1{z-index:1}.z-10{z-index:10}.container{width:100%;@media(width>=40rem){max-width:40rem}@media(width>=48rem){max-width:48rem}@media(width>=64rem){max-width:64rem}@media(width>=80rem){max-width:80rem}@media(width>=96rem){max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline-block{display:inline-block}.aspect-\\[3\\/4\\]{aspect-ratio:3/4}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-30{width:calc(var(--spacing) * 30);height:calc(var(--spacing) * 30)}.size-44{width:calc(var(--spacing) * 44);height:calc(var(--spacing) * 44)}.h-2{height:calc(var(--spacing) * 2)}.h-4{height:calc(var(--spacing) * 4)}.h-12{height:calc(var(--spacing) * 12)}.h-\\[80\\%\\]{height:80%}.h-\\[90\\%\\]{height:90%}.h-\\[400px\\]{height:400px}.h-full{height:100%}.max-h-60{max-height:calc(var(--spacing) * 60)}.min-h-screen{min-height:100vh}.w-4{width:calc(var(--spacing) * 4)}.w-12{width:calc(var(--spacing) * 12)}.w-\\[35\\%\\]{width:35%}.w-\\[80\\%\\]{width:80%}.w-full{width:100%}.max-w-\\[55\\%\\]{max-width:55%}.max-w-\\[80\\%\\]{max-width:80%}.max-w-\\[90\\%\\]{max-width:90%}.max-w-\\[500px\\]{max-width:500px}.max-w-md{max-width:var(--container-md)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.rotate-180{rotate:180deg}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.space-y-1{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-2{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-3{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-4{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-5{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}}.space-y-6{:where(&>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-dashed{--tw-border-style: dashed;border-style:dashed}.border-\\[\\#CBD5E1\\]{border-color:#cbd5e1}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.bg-\\[\\#262A2F\\]{background-color:#262a2f}.bg-\\[\\#F8F8F8\\]{background-color:#f8f8f8}.bg-\\[rgba\\(0\\,0\\,0\\,0\\.6\\)\\]{background-color:#0009}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-secondary-5{background-color:var(--color-secondary-5)}.bg-white{background-color:var(--color-white)}.stroke-\\[\\#62DF98\\]{stroke:#62df98}.stroke-error-6\\/60{stroke:color-mix(in srgb,#F43F5E 60%,transparent);@supports (color: color-mix(in lab,red,red)){stroke:color-mix(in oklab,var(--color-error-6) 60%,transparent)}}.stroke-white\\/50{stroke:color-mix(in srgb,#FFFFFF 50%,transparent);@supports (color: color-mix(in lab,red,red)){stroke:color-mix(in oklab,var(--color-white) 50%,transparent)}}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-10{padding-inline:calc(var(--spacing) * 10)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-24\\!{padding-block:calc(var(--spacing) * 24)!important}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.font-\\[monospace\\]{font-family:monospace}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.text-\\[14px\\]{font-size:14px}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight: var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-all{word-break:break-all}.text-error-6{color:var(--color-error-6)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-300{--tw-duration: .3s;transition-duration:.3s}.duration-500{--tw-duration: .5s;transition-duration:.5s}.ease-in-out{--tw-ease: var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease: var(--ease-out);transition-timing-function:var(--ease-out)}.hover\\:rounded-3xl{&:hover{@media(hover:hover){border-radius:var(--radius-3xl)}}}.hover\\:border-gray-100{&:hover{@media(hover:hover){border-color:var(--color-gray-100)}}}.hover\\:border-gray-400{&:hover{@media(hover:hover){border-color:var(--color-gray-400)}}}.hover\\:\\!bg-transparent{&:hover{@media(hover:hover){background-color:transparent!important}}}.focus\\:border-\\[\\#E8EAF6\\]{&:focus{border-color:#e8eaf6}}.focus\\:border-\\[\\#E8F5E9\\]{&:focus{border-color:#e8f5e9}}.focus\\:border-\\[\\#FFF8E1\\]{&:focus{border-color:#fff8e1}}.focus\\:ring-2{&:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\\:ring-\\[\\#E8EAF6\\]{&:focus{--tw-ring-color: #E8EAF6}}.focus\\:ring-\\[\\#E8F5E9\\]{&:focus{--tw-ring-color: #E8F5E9}}.focus\\:ring-\\[\\#FFF8E1\\]{&:focus{--tw-ring-color: #FFF8E1}}.focus\\:outline-none{&:focus{--tw-outline-style: none;outline-style:none}}.disabled\\:opacity-50{&:disabled{opacity:50%}}.max-\\[450px\\]\\:\\!w-\\[calc\\(100vw_-_2rem\\)\\]{@media(width<450px){width:calc(100vw - 2rem)!important}}.max-sm\\:w-\\[80vw\\]{@media(width<40rem){width:80vw}}.sm\\:px-\\[6\\%\\]{@media(width>=40rem){padding-inline:6%}}.md\\:right-8{@media(width>=48rem){right:calc(var(--spacing) * 8)}}.md\\:bottom-6{@media(width>=48rem){bottom:calc(var(--spacing) * 6)}}.md\\:flex{@media(width>=48rem){display:flex}}.md\\:justify-between{@media(width>=48rem){justify-content:space-between}}.md\\:justify-start{@media(width>=48rem){justify-content:flex-start}}.md\\:bg-transparent\\!{@media(width>=48rem){background-color:transparent!important}}.md\\:px-10{@media(width>=48rem){padding-inline:calc(var(--spacing) * 10)}}.md\\:text-xl{@media(width>=48rem){font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}}.\\[\\&_li\\]\\:hover\\:bg-transparent\\!{& li{&:hover{@media(hover:hover){background-color:transparent!important}}}}}@font-face{font-family:Lexend;src:url(./assets/fonts/Lexend-Regular.ttf)}@font-face{font-family:LexendMedium;src:url(./assets/fonts/Lexend-Medium.ttf)}@font-face{font-family:LexendSemibold;src:url(./assets/fonts/Lexend-SemiBold.ttf)}@font-face{font-family:LexendBold;src:url(./assets/fonts/Lexend-Bold.ttf)}:root{font-family:Lexend,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--background: #f8fafc;--foreground: #334155;--primary: #202d66;--primary-foreground: #ffffff;--input-bg: #ffffff;--input-foreground: #475569;--label: #475569;--placeholder: #94a3b8;--caption: #64748b;--caption-error: #f43f5e;--disabled: #f1f5f9;--card: #ffffff;--card-foreground: oklch(.985 0 0);--popover: #ffffff;--popover-foreground: #475569;--menu-bg: #f1f5f9;--accent: #e9eeff;--accent-foreground: #4d61b0;--secondary: #1e293b;--secondary-foreground: 0 0% 100%;--muted: #64748b;--muted-foreground: #94a3b8;--border: #e2e8f0;--ring: #4d61b0;--destructive: #f43f5e;--destructive-foreground: #cc135f;--tooltip-bg: #212529;--shadow-boxy: 0px 1px 2px 0px #0a0d120d;--shadow-subtle: 0px 11.76px 22.06px 0px #00000014;--shadow-subtle2: 0px 4px 8px 0px #9898980a;--shadow-2xl: 0px 24px 48px -12px #0a0d122e;--chart-1: oklch(.646 .222 41.116);--chart-2: oklch(.6 .118 184.704);--chart-3: oklch(.398 .07 227.392);--chart-4: oklch(.828 .189 84.429);--chart-5: oklch(.769 .188 70.08)}@layer utilities{.bg-background{background-color:var(--color-background)}.bg-foreground{background-color:var(--color-foreground)}.bg-accent{background-color:var(--color-accent)}.bg-accent-foreground{background-color:var(--color-accent-foreground)}.bg-popover{background-color:var(--color-popover)}.bg-popover-foreground{background-color:var(--color-popover-foreground)}.bg-border{background-color:var(--color-border)}.bg-input-bg{background-color:var(--color-input-bg)}.bg-input-foreground{background-color:var(--color-input-foreground)}.bg-label{background-color:var(--color-label)}.bg-card{background-color:var(--color-card)}.bg-ring{background-color:var(--color-ring)}.bg-placeholder{background-color:var(--color-placeholder)}.bg-caption{background-color:var(--color-caption)}.bg-disabled{background-color:var(--color-disabled)}.bg-caption-error{background-color:var(--color-caption-error)}.bg-menu-bg{background-color:var(--color-menu-bg)}.bg-tooltip-bg{background-color:var(--color-tooltip-bg)}.text-background{color:var(--color-background)}.text-foreground{color:var(--color-foreground)}.text-accent{color:var(--color-accent)}.text-accent-foreground{color:var(--color-accent-foreground)}.text-popover{color:var(--color-popover)}.text-popover-foreground{color:var(--color-popover-foreground)}.text-border{color:var(--color-border)}.text-input-bg{color:var(--color-input-bg)}.text-input-foreground{color:var(--color-input-foreground)}.text-label{color:var(--color-label)}.text-card{color:var(--color-card)}.text-ring{color:var(--color-ring)}.text-placeholder{color:var(--color-placeholder)}.text-caption{color:var(--color-caption)}.text-disabled{color:var(--color-disabled)}.text-caption-error{color:var(--color-caption-error)}.text-menu-bg{color:var(--color-menu-bg)}.text-tooltip-bg{color:var(--color-tooltip-bg)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.text-gray-50{color:var(--color-gray-50)}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.bg-primary-10{background-color:var(--color-primary-10)}.bg-primary-20{background-color:var(--color-primary-20)}.bg-primary-30{background-color:var(--color-primary-30)}.bg-primary-40{background-color:var(--color-primary-40)}.bg-primary-60{background-color:var(--color-primary-60)}.bg-primary-80{background-color:var(--color-primary-80)}.bg-primary-95{background-color:var(--color-primary-95)}.bg-primary-100{background-color:var(--color-primary-100)}.text-primary-10{color:var(--color-primary-10)}.text-primary-20{color:var(--color-primary-20)}.text-primary-30{color:var(--color-primary-30)}.text-primary-40{color:var(--color-primary-40)}.text-primary-60{color:var(--color-primary-60)}.text-primary-80{color:var(--color-primary-80)}.text-primary-95{color:var(--color-primary-95)}.text-primary-100{color:var(--color-primary-100)}.shadow-boxy{box-shadow:var(--shadow-boxy)}.shadow-subtle{box-shadow:var(--shadow-subtle)}.shadow-subtle2{box-shadow:var(--shadow-subtle2)}.shadow-2xl{box-shadow:var(--shadow-2xl)}.shadow-3xl{box-shadow:var(--shadow-3xl)}.font-semibold{font-family:LexendSemibold}.font-bold{font-family:LexendBold}.font-medium{font-family:LexendMedium}}.sc-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:999999}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse: 0;--tw-border-style: solid;--tw-font-weight: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-duration: initial;--tw-ease: initial}}}
|
|
2
|
-
`);var it=W(require("react"),1);var D=require("react");var Ue=require("react/jsx-runtime");function ue({selectedTheme:t}){return(0,Ue.jsx)("div",{className:"mx-auto animate-spin rounded-full h-12 w-12 border-b-2 ",style:{borderColor:t.primaryColor}})}var Ae=require("tailwind-merge"),je=W(require("clsx"),1),me=require("@mediapipe/tasks-vision"),He={default:{primaryColor:"#4d61b0",secondaryColor:"#E8EAF6",buttonText:"#FFFFFF",borderRadius:"4px",focus:"focus:outline-none focus:ring-2 focus:ring-[#E8EAF6] focus:border-[#E8EAF6]"},sunset_gold:{primaryColor:"#FFD700",secondaryColor:"#FFF8E1",buttonText:"#5D4037",borderRadius:"8px",focus:"focus:outline-none focus:ring-2 focus:ring-[#FFF8E1] focus:border-[#FFF8E1]"},midnight_blue:{primaryColor:"#1A237E",secondaryColor:"#E8EAF6",buttonText:"#FFFFFF",borderRadius:"4px",focus:"focus:outline-none focus:ring-2 focus:ring-[#E8EAF6] focus:border-[#E8EAF6]"},forest_emerald:{primaryColor:"#2E7D32",secondaryColor:"#E8F5E9",buttonText:"#FFFFFF",borderRadius:"12px",focus:"focus:outline-none focus:ring-2 focus:ring-[#E8F5E9] focus:border-[#E8F5E9]"}},ze=t=>He[t]||He.default;function k(...t){return(0,Ae.twMerge)((0,je.default)(t))}var Be=t=>t.map(e=>({label:e,value:e}));var Oe=async t=>{let e=await me.FilesetResolver.forVisionTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm"),r=await me.FaceLandmarker.createFromOptions(e,{baseOptions:{modelAssetPath:"https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/face_landmarker.task",delegate:"GPU"},runningMode:"IMAGE"}),o=new Image,s=URL.createObjectURL(t);o.src=s,await o.decode(),URL.revokeObjectURL(s);let n=r.detect(o);if(n.faceLandmarks&&n.faceLandmarks.length>0){let a=n.faceLandmarks[0],i=document.createElement("canvas"),p=i.getContext("2d"),E=a.map(h=>h.x*o.width),w=a.map(h=>h.y*o.height),S=Math.min(...E),g=Math.max(...E),N=Math.min(...w),x=Math.max(...w),u=g-S,b=x-N,T=u*.5;return i.width=224,i.height=224,p?.drawImage(o,S-T,N-T,u+T*2,b+T*2,0,0,224,224),r.close(),new Promise(h=>i.toBlob(h,"image/jpeg",.95))}return r.close(),null};function fe(t,e,r){return new File([t],e,{type:r||t.type,lastModified:Date.now()})}var Ke={data_verification:{key:"data_verification",title:"Data verification",subtitle:"Businesses that store, process, or transmit credit or debit card information maintain a secure environment.",preview:"Verify your identity with personal data"},document_verification:{key:"document_verification",title:"Document verification",subtitle:"Businesses that store, process, or transmit credit or debit card information maintain a secure environment.",preview:"Verify your identity with ID documents"}},we={global:{passport:{title:"Passport",key:"passport"}},kenya:{},nigeria:{bvn:{title:"Bank Verification Number (BVN)",key:"bvn"},nin:{title:"National Identity Number (NIN)",key:"nin"},passport:{title:"Nigeria Passport",key:"passport"}}};var $e=`
|
|
3
|
-
block bg-white w-full px-2 py-1.5 rounded-lg
|
|
4
|
-
border border-gray-300
|
|
5
|
-
shadow-sm
|
|
6
|
-
text-gray-700 text-sm
|
|
7
|
-
transition-all
|
|
8
|
-
hover:border-gray-400`;var Ge=["liveness-intro","liveness-check","success-confirmation"];var _=require("react/jsx-runtime");function xe({config:t,selectedTheme:e,onNext:r}){return(0,_.jsxs)("section",{className:"space-y-4",children:[(0,_.jsxs)("section",{className:"space-y-2",children:[(0,_.jsx)("h3",{className:"text-left text-2xl font-semibold text-gray-600",children:"Verify your identity"}),(0,_.jsx)("p",{className:"text-left text-sm text-gray-500",children:"Please note that you need to be on a well-connected network to complete this verification. You will undergo the following verification:"})]}),(0,_.jsx)("div",{className:"w-full space-y-5 pb-2 pt-3",children:Object.values(Ke).map(o=>t.verification_type?.includes(o.key)?(0,_.jsx)("button",{className:k("flex w-full items-start justify-start gap-2 rounded-3xl px-4 py-3","pointer-events-none border border-gray-200"),children:(0,_.jsxs)("div",{className:"space-y-1",children:[(0,_.jsx)("p",{className:k("text-md text-left font-semibold","text-gray-600"),children:o.title}),(0,_.jsx)("p",{className:k("text-left text-sm text-gray-500"),children:o.preview})]})},o.key):null)}),(0,_.jsx)("button",{onClick:r,className:k("text-md h-12 w-full rounded-xl text-center font-semibold text-white"),style:{background:e.primaryColor},children:"Continue"})]})}var j=require("react");var A=require("react");var H=require("react/jsx-runtime");function ge({options:t,value:e,onChange:r,selectedTheme:o,placeholder:s}){let[n,a]=(0,A.useState)(!1),i=(0,A.useRef)(null),p=(0,A.useRef)(null),[E,w]=(0,A.useState)(0);(0,A.useEffect)(()=>{let g=N=>{p.current&&!p.current.contains(N.target)&&i.current&&!i.current.contains(N.target)&&a(!1)};return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[]),(0,A.useEffect)(()=>{i.current&&w(i.current.offsetWidth)},[i.current?.offsetWidth,n]);let S=t.find(g=>g.value===e)?.label||s||"Select";return(0,H.jsxs)("div",{className:"relative inline-block text-left w-full",children:[(0,H.jsxs)("button",{ref:i,onClick:()=>a(!n),className:k(`
|
|
9
|
-
w-full px-4 py-2 rounded-lg border border-gray-300
|
|
10
|
-
shadow-sm text-gray-700 text-sm
|
|
11
|
-
bg-white
|
|
12
|
-
flex justify-between items-center
|
|
13
|
-
capitalize
|
|
14
|
-
`,o.focus),children:[(0,H.jsx)("span",{children:S}),(0,H.jsx)("svg",{className:`w-4 h-4 ml-2 transition-transform duration-200 ${n?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,H.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),n&&(0,H.jsx)("div",{ref:p,className:"absolute z-10 mt-1 bg-white shadow-lg rounded-lg max-h-60 overflow-auto",style:{width:E},children:t.map(g=>(0,H.jsx)("div",{onClick:()=>{r(g.value),a(!1)},className:`
|
|
15
|
-
cursor-pointer px-4 py-2 text-sm text-gray-700 capitalize
|
|
16
|
-
${g.value===e?"font-semibold":""}
|
|
17
|
-
`,children:g.label},g.value))})]})}var P=W(require("react-hot-toast"),1);var qe="./trash-KETR47RP.svg";var l=require("react/jsx-runtime"),Qe=200;function ke({config:t,selectedTheme:e,onSubmit:r,handleIdUpdate:o,idFile:s}){let n=(0,j.useRef)(null),[a,i]=(0,j.useState)({identifier:"",identifier_type:"",country:""}),p=(0,j.useMemo)(()=>Object.keys(t.channels||{}),[t.channels]),E=(0,j.useMemo)(()=>{let u={};return(t?.channels?.[a.country]||[])?.forEach(T=>{let h=we?.[a?.country]?.[T]||null;h&&(u[T]=h)}),u},[t.channels,a.country]),w=(0,j.useMemo)(()=>we?.[a.country||""]?.[a?.identifier_type||""]||null,[a?.identifier_type]),S=(0,j.useMemo)(()=>Object.entries(E).map(u=>{let[b,T]=u;return{label:T.title,value:b}}),[E]),g=(u,b)=>{i(T=>({...T,[u]:b}))},N=()=>{n.current&&(n.current.value="",n.current.files=null),o(void 0,void 0)},x=async u=>{let b=u.target.files?.[0];if(!b)return;if(!["image/jpeg","image/png"].includes(b.type)){P.default.error("Only JPG and PNG files are allowed."),u.target.value="";return}if(b?.size>1024*Qe){P.default.error(`Max file size is ${Qe}kb`);return}N(),P.default.loading("Scanning document for photo...");try{let h=await Oe(b);if(!h){P.default.dismiss(),P.default.error("Could not find a clear face on this ID. Please upload a clearer image.");return}let R=new FileReader;R.onload=function(){let $=R.result},R.readAsDataURL(h);let L=`snapshot-${new Date().getTime()}.jpg`,B=new File([h],L,{type:"image/jpeg"});P.default.dismiss(),P.default.success("ID Photo extracted!"),o(b,B)}catch{P.default.dismiss(),P.default.error("Error processing document. Please upload a document with your face on it")}};return(0,l.jsxs)("section",{className:"space-y-6",children:[(0,l.jsxs)("section",{className:"space-y-2",children:[(0,l.jsx)("h3",{className:"text-left text-2xl font-semibold text-gray-600",children:"Verify your identity"}),(0,l.jsx)("p",{className:"text-left text-sm text-gray-500",children:"Identity verification. Please note that you need to be on a well-connected network to complete this verification."})]}),(0,l.jsxs)("div",{className:"mx-auto space-y-5",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-1 text-left",children:"Country"}),(0,l.jsx)(ge,{options:Be(p),onChange:u=>g("country",u),value:a.country,selectedTheme:e,placeholder:"Select country"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-1 text-left",children:"Verification Channel"}),(0,l.jsx)(ge,{options:S,onChange:u=>g("identifier_type",u),value:a.identifier_type,selectedTheme:e,placeholder:"Select verification channel"})]}),a.identifier_type?(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-1 text-left",children:w?.title||"Input"}),(0,l.jsx)("input",{ref:n,type:"text",placeholder:"Enter "+a.identifier_type,value:a.identifier,onChange:u=>g("identifier",u.target.value),className:k($e,e.focus)})]}):null,a?.identifier_type&&t?.verification_type?.includes("document_verification")?(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-1 text-left",children:"Upload identity document"}),(0,l.jsxs)("div",{className:"flex w-full cursor-pointer flex-col items-center justify-center gap-1 rounded-xl border-4 border-dashed border-[#CBD5E1] bg-[#F8F8F8] px-4 py-6",children:[(0,l.jsx)("input",{type:"file",name:"id-doc",id:"id-doc",hidden:!0,onChange:x},s?s.name:"empty"),(0,l.jsx)("label",{htmlFor:"id-doc",className:"text-center text-sm text-gray-600",children:"Click to upload"}),(0,l.jsx)("p",{className:"text-center text-sm font-normal text-gray-400",children:"Accepted file types: JPG, PNG"})]}),(0,l.jsx)("p",{className:"text-sm text-gray-600 font-semibold",children:"Max file size: 200KB"}),s&&(0,l.jsx)("aside",{className:"mt-3",children:(0,l.jsx)("ul",{children:(0,l.jsxs)("li",{className:"m-0 mb-1 flex justify-between gap-3 p-2 hover:rounded-3xl hover:border-1.5 hover:border-gray-100 hover:!bg-transparent",children:[(0,l.jsx)("div",{className:"flex flex-1 gap-3",children:(0,l.jsx)("div",{className:"flex flex-1 flex-col",children:(0,l.jsx)("p",{className:"break-all text-left text-[14px] font-normal text-gray-600",children:s?.name})})}),(0,l.jsx)("div",{className:"flex shrink-0 gap-2",children:(0,l.jsx)("button",{onClick:N,className:"text-lg font-semibold",children:(0,l.jsx)("img",{src:qe,className:"size-5 mx-auto shrink-0",alt:"delete"})})})]})})})]}):null]}),(0,l.jsx)("button",{onClick:()=>r(a.identifier,a.identifier_type,a.country),className:k("text-md h-12 w-full rounded-xl text-center font-semibold disabled:opacity-50"),disabled:!a?.country||!a?.identifier||!a?.identifier_type||!s&&t.verification_type.includes("document_verification"),style:{background:e.primaryColor,color:e.buttonText},children:"Continue"}),(0,l.jsx)("div",{className:"w-full h-12"})]})}var M=require("react/jsx-runtime");function Fe({selectedTheme:t,onStart:e}){return(0,M.jsxs)("section",{className:"mt-8 space-y-6",children:[(0,M.jsxs)("section",{className:"space-y-2",children:[(0,M.jsx)("h3",{className:"text-left text-2xl font-semibold text-gray-600",children:"Liveliness Check"}),(0,M.jsxs)("p",{className:"text-left text-sm text-gray-500",children:["Make sure you are in a well lit area, hold your phone at eye level and look straight into the camera."," "]})]}),(0,M.jsxs)("ul",{className:"mx-auto max-w-[80%] list-disc text-sm text-gray-600 [&_li]:hover:bg-transparent!",children:[(0,M.jsx)("li",{children:"Stay in a well lit area with your eyes clearly visible. "}),(0,M.jsx)("li",{children:"Remove anything covering your face like masks, glasses, hats."}),(0,M.jsx)("li",{children:"Follow the onscreen instruction for face capture."})]}),(0,M.jsx)("button",{onClick:e,className:k("text-md h-12 w-full rounded-xl text-center font-semibold "),style:{background:t.primaryColor,color:t.buttonText},children:"Take a selfie"})]})}var K=W(require("react-hot-toast"),1);var d=require("react"),ye=require("@mediapipe/tasks-vision");var Ct=[362,385,387,263,373,380],Dt=[33,160,158,133,153,144],Ve=t=>{let e=s=>{let n=s.map(E=>t[E]),a=Math.hypot(n[1].x-n[5].x,n[1].y-n[5].y),i=Math.hypot(n[2].x-n[4].x,n[2].y-n[4].y),p=Math.hypot(n[0].x-n[3].x,n[0].y-n[3].y);return(a+i)/(2*p)},r=e(Ct),o=e(Dt);return(r+o)/2<.18},Ee=t=>{let e=t[1].x,r=t[234].x,s=t[454].x-r,n=(e-r)/s;return n<.35?"LEFT":n>.65?"RIGHT":"CENTER"},Rt=13,It=14,_t=78,Lt=308,Ye=t=>{let e=t[Rt],r=t[It],o=t[_t],s=t[Lt],n=Math.hypot(e.x-r.x,e.y-r.y),a=Math.hypot(o.x-s.x,o.y-s.y);return n/a>.35};var We="http://localhost:8000";var V=class{constructor(e,r){I(this,"baseUrl");I(this,"timeout");I(this,"session");I(this,"onError");I(this,"destroy");this.baseUrl=We,this.timeout=e.timeout||45e3,this.session=e.session,this.onError=e.onError,this.destroy=r}async request(e,r,o,s){let n=new AbortController,a=setTimeout(()=>n.abort(),this.timeout);try{let i=o instanceof FormData,p=await fetch(`${this.baseUrl}${r}`,{method:e,headers:{Authorization:`Session ${this.session}`,...s||{},...i?{}:{"Content-Type":"application/json"}},body:o?i?o:JSON.stringify(o):void 0,signal:n.signal});if(!(p.headers.get("content-type")||"").includes("application/json"))throw new Error(`Unexpected response from ${r} (${p.status})`);let w;try{w=await p.json()}catch{w=null}if(!p.ok){let S=w?.message||w?.error||`Error: ${p.status}`;throw{status:p.status,message:S,data:w}}return w}catch(i){throw i.name==="AbortError"?this.onError?.({error:i,message:"Request timeout",code:"TIMEOUT_ERROR"}):i.status==403||i.status==401?(this.onError?.({error:i,message:"Session expired. Please restart the process",code:"AUTH_ERROR"}),console.error("Authentication failed. Session is no longer valid."),setTimeout(()=>{typeof this.destroy=="function"&&this.destroy()},2e3)):this.onError?.({error:i||i.data,message:"An error occured",code:"UNKNOWN_ERROR"}),i}finally{clearTimeout(a)}}post(e,r,o){return this.request("POST",e,r,o)}patch(e,r,o){return this.request("PATCH",e,r,o)}get(e){return this.request("GET",e)}};var ae=W(require("react-hot-toast"),1);var he=require("react"),z=require("react/jsx-runtime");function Te({onComplete:t,canClose:e}){let[r,o]=(0,he.useState)(0);return(0,he.useEffect)(()=>{let s;return r<99?s=setInterval(()=>{o(n=>{let a=Math.floor(Math.random()*10)+1,i=n+a;return i>=99?99:i})},500):r===99&&e&&(o(100),t&&t()),()=>clearInterval(s)},[r,e,t]),(0,z.jsxs)("div",{className:"mt-8 space-y-4",children:[(0,z.jsxs)("section",{className:"space-y-1",children:[(0,z.jsx)("h3",{className:"text-center animate-pulse text-2xl font-semibold text-gray-600",children:"Finalizing Verification..."}),(0,z.jsx)("p",{className:"text-center text-sm text-gray-600",children:"Please do not close this page"})]}),(0,z.jsx)("div",{className:"w-full max-w-[55%] mx-auto bg-gray-100 rounded-full h-2",children:(0,z.jsx)("div",{className:"bg-secondary-5 h-2 rounded-full transition-all duration-300 ease-out",style:{width:`${r}%`}})}),(0,z.jsxs)("p",{className:"text-center text-sm text-gray-600",children:[r,"%"]})]})}var Xe="./loading-5HD36QXU.svg";var F=require("react/jsx-runtime");var O=[{id:"CENTER",label:"Center your face in the oval",subtitle:"Position your face inside of the circle and take a photo."},{id:"BLINK",label:"Blink your eyes",subtitle:"While your face is centered, blink your eyes twice."},{id:"TURN_HEAD",label:"Turn your head",subtitle:"Slowly turn your head left or right"},{id:"OPEN_MOUTH",label:"Open your mouth",subtitle:"Open your mouth"}],Pt=({sdkInstance:t,updateStep:e,config:r,idFile:o,snapshotFile:s,identityFormData:n})=>{let a=(0,d.useRef)(null),i=(0,d.useRef)(null),p=(0,d.useRef)(0),E=(0,d.useRef)(0),w=(0,d.useRef)(null),S=(0,d.useRef)(null),g=(0,d.useRef)(null),N=(0,d.useRef)(!1),x=(0,d.useRef)(null),u=(0,d.useRef)(!1),[b,T]=(0,d.useState)(0),[h,R]=(0,d.useState)(!1),[L,B]=(0,d.useState)(!1),[$,G]=(0,d.useState)(),[ne,De]=(0,d.useState)(null),[ve,Re]=(0,d.useState)(),[st,ie]=(0,d.useState)(!1),[lt,se]=(0,d.useState)(!1),[ct,dt]=(0,d.useState)(!1),[q,pt]=(0,d.useState)(!1),[Y,le]=(0,d.useState)("neutral"),[ut,Ie]=(0,d.useState)(!1),ee=(0,d.useRef)(!1),U=(0,d.useRef)(null),ce=(0,d.useRef)([]),_e=()=>{S.current&&cancelAnimationFrame(S.current),w.current&&(w.current.getTracks().forEach(m=>m.stop()),w.current=null),a.current&&(a.current.srcObject=null)},de=()=>{ee.current||p.current>=O.length||(ee.current=!0,le("success"),g.current&&clearTimeout(g.current),setTimeout(()=>{if(p.current<O.length-1){let m=p.current+1;T(m),le("neutral"),ee.current=!1}else console.log("\u{1F38A} All actions done!"),mt()},2e3))},mt=async()=>{se(!0),_e();let m;ve||(m=await Le()),await ht(m)},ft=()=>{De(null),G(void 0),B(!1),R(!1),ie(!1),Ie(!1),T(0),Re(void 0)},gt=()=>new Promise(m=>{if(!a.current)return null;let C=document.createElement("canvas");C.width=a.current.videoWidth,C.height=a.current.videoHeight,C.getContext("2d")?.drawImage(a.current,0,0),C.toBlob(f=>{m(f)},"image/jpeg",.9)}),ht=async m=>{let C=m||ve;if(!x.current?.id||!C){ae.default.error("Invalid payload"),ft(),se(!1);return}let y=new V(t);try{se(!0);let f=new FormData;f.append("entry",x.current.id.toString()),f.append("session",t.session),f.append("video_file",C),(await y.post("/v1/liveness/submit/",f)).status=="success"&&dt(!0)}catch(f){let v=f?.message||f.response?.data?.message||"Submission failed";ae.default.error(v),t.onError?.({error:f,message:v,code:"SUBMISSION_ERROR"}),setTimeout(()=>{window.location.reload()},3e3)}};(0,d.useEffect)(()=>{if(!(!q||b>=O.length))return le("neutral"),g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{le("error")},5e3),()=>{g.current&&clearTimeout(g.current)}},[b,q]),(0,d.useEffect)(()=>{p.current=b},[b]),(0,d.useEffect)(()=>{if(ne||!$||st||N.current||!n)return;let m=new V(t);(async()=>{N.current=!0;try{let y=new FormData;y.append("sdk_config",r.id.toString()),y.append("autoshot_file",$),y.append("challenge_actions",JSON.stringify(O.filter(v=>v.id!=="CENTER").map(v=>v.id))),y.append("identifier",n.identifier),y.append("identifier_type",n.identifier_type),y.append("country",n?.country),r.verification_type.includes("document_verification")&&(y.append("id_file",o),y.append("snapshot_file",s)),ie(!0);let f=await m.post("/v1/liveness/create/",y);f.status=="success"&&f.data&&setTimeout(()=>{De(f.data),x.current=f.data,ie(!1)},1500)}catch(y){let f=y?.message||y.response?.data?.message||"An error occured. Please try again";ae.default.error(f),t.onError?.({error:y,message:f,code:"ENTRY_CREATION_ERROR"}),ie(!1),setTimeout(()=>{window.location.reload()},3e3)}})()},[ne,$]),(0,d.useEffect)(()=>{if(ut)return;Ie(!0);let m,C,y=async()=>{let v=await ye.FilesetResolver.forVisionTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm");m=await ye.FaceLandmarker.createFromOptions(v,{baseOptions:{modelAssetPath:"https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/face_landmarker.task",delegate:"GPU"},runningMode:"VIDEO",numFaces:1}),m&&!q&&pt(!0),C=await navigator.mediaDevices.getUserMedia({video:{facingMode:"user",width:{ideal:480},height:{ideal:640},frameRate:{ideal:15}}}),a.current&&(a.current.srcObject=C,a.current.onloadedmetadata=()=>{a.current?.play(),f()})},f=async()=>{if(!a.current||!m||Y==="success"||ee.current){S.current=requestAnimationFrame(f);return}let v=performance.now(),Q=m.detectForVideo(a.current,v);if(Q.faceLandmarks&&Q.faceLandmarks.length>0){let te=Q.faceLandmarks[0],pe=O[p.current];if(p.current==O.length)return;if(pe.id==="CENTER"){let re=te[1];if(re.x>.4&&re.x<.6&&re.y>.4&&re.y<.6){if(!u.current){u.current=!0;let Me=await gt();if(Me){let vt=fe(Me,`autoshot-${t.session}.jpg`,"image/jpeg");G(vt),B(!0)}else u.current=!1}u.current&&x.current&&!ee.current&&(U.current?.state!=="recording"&&yt(C),de())}}else pe.id==="BLINK"?Ve(te)?de():E.current=0:pe.id==="TURN_HEAD"?(Ee(te)==="LEFT"||Ee(te)==="RIGHT")&&de():pe.id==="OPEN_MOUTH"&&Ye(te)&&de()}S.current=requestAnimationFrame(f)};return y(),()=>{_e(),i.current&&clearTimeout(i.current),U.current?.state!=="inactive"&&U.current?.stop()}},[]);let yt=m=>{ce.current=[];let y=["video/webm;codecs=vp8","video/webm","video/mp4"].find(v=>MediaRecorder.isTypeSupported(v));if(!y){ae.default.error("Browser does not support recording");return}let f={mimeType:y,videoBitsPerSecond:25e4};try{U.current=new MediaRecorder(m,f)}catch{U.current=new MediaRecorder(m)}U.current.ondataavailable=v=>{v.data&&v.data.size>0&&ce.current.push(v.data)},U.current.onstop=()=>{let v=new Blob(ce.current,{type:"video/webm"});if(v.size>0){let Q=fe(v,`session-${t.session}.webm`,"video/webm");Re(Q)}},U.current.start(),i.current=setTimeout(()=>{Le()},2e4)},Le=async()=>{let m=U.current;return!m||m.state==="inactive"?ve||void 0:new Promise(C=>{i.current&&(clearTimeout(i.current),i.current=null);let y=()=>{m.removeEventListener("stop",y);let f=new Blob(ce.current,{type:"video/webm"}),v=fe(f,`session-${t.session}.webm`,"video/webm");w.current&&w.current.getTracks().forEach(Q=>Q.stop()),C(v)};m.addEventListener("stop",y),m.stop()})};return(0,F.jsx)(F.Fragment,{children:lt?(0,F.jsx)(Te,{canClose:ct,onComplete:()=>{t.onSuccess?.({data:{entryId:x.current?.id,identifier:x.current?.identifier,identifier_type:x.current?.identifier_type,video_url:x.current?.video_url,autoshot_url:x.current?.autoshot_url,document_url:x.current?.document_url||null},status:200,message:"Liveness captured successfully"}),e("success-confirmation"),se(!1)}}):(0,F.jsxs)("section",{className:"space-y-3 relative flex flex-col items-start justify-center p-4 h-[400px]",children:[(0,F.jsxs)("div",{className:"text-left",children:[(0,F.jsx)("h3",{className:"text-2xl font-bold text-gray-600 animate-pulse",children:q?b===0&&!ne&&L?"Synchronizing Session...":O[b]?.label:"Getting ready..."}),q&&ne?(0,F.jsx)("p",{className:"text-sm text-gray-500",children:O[b]?.subtitle}):null]}),(0,F.jsxs)("div",{className:k("relative w-full max-w-md aspect-[3/4] overflow-hidden rounded-3xl",q?"bg-[rgba(0,0,0,0.6)]":"bg-[#262A2F]"),children:[(0,F.jsx)("video",{ref:a,className:"absolute inset-0 w-full h-full object-cover mirror",muted:!0,playsInline:!0}),q?(0,F.jsx)("div",{className:"absolute inset-0 pointer-events-none flex items-center justify-center",children:(0,F.jsx)("svg",{viewBox:"0 0 100 100",className:"w-[80%] h-[80%] overflow-visible",children:(0,F.jsx)("ellipse",{cx:"50",cy:"50",rx:"35",ry:"45",fill:"none",strokeWidth:"3",className:k("transition-colors duration-500 ease-in-out",Y==="neutral"&&"stroke-white/50",Y==="success"&&"stroke-[#62DF98]",Y==="error"&&"stroke-error-6/60"),style:{filter:Y!=="neutral"?`drop-shadow(0 0 8px ${Y==="success"?"#22c55e":"#ef4444"})`:"none"}})})}):(0,F.jsxs)("div",{className:"absolute w-full h-full gap-1.5 pointer-events-none flex flex-col items-center justify-center",children:[(0,F.jsx)("img",{src:Xe,alt:"loading",className:"size-9 animate-spin"}),(0,F.jsx)("span",{className:"text-white text-sm text-center",children:"Loading camera"})]})]})]})})},Ze=Pt;var Je="./success-GHUHNWON.svg";var et=require("react"),X=require("react/jsx-runtime");function Se({redirect_url:t,destroy:e}){return(0,et.useEffect)(()=>{let r=setTimeout(()=>{t?window.location.assign(t):e()},3e3);return()=>clearTimeout(r)},[]),(0,X.jsxs)("section",{className:"mt-8 space-y-3",children:[(0,X.jsx)("img",{src:Je,className:"size-44 mx-auto shrink-0",alt:"success-icon"}),(0,X.jsx)("h3",{className:"text-center text-2xl font-semibold text-gray-600",children:"Identity verified"}),(0,X.jsx)("p",{className:"text-center text-sm text-gray-600",children:"We have successfully verified your identity. You can close this page now."})]})}var tt="./shield-checkmark-JBZCUXJC.png";var Z=require("react"),rt=W(require("react-hot-toast"),1),ot=require("react/jsx-runtime"),At=180;function Ne({destroy:t,onExpire:e}){let[r,o]=(0,Z.useState)(At),[s,n]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{let p=setInterval(()=>{o(E=>E>0?E-1:0)},1e3);return()=>clearInterval(p)},[]),(0,Z.useEffect)(()=>{if(r>0&&!s)return;rt.default.error("Time limit exceeded"),n(!1);let p=setTimeout(()=>{e?.(),t()},1500);return()=>clearTimeout(p)},[r,s]);let a=Math.floor(r/60),i=r%60;return(0,ot.jsxs)("p",{className:k("text-2xl font-bold font-[monospace]",r<60?"text-error-6":"text-gray-600"),children:[a,":",i.toString().padStart(2,"0")]})}var c=require("react/jsx-runtime"),jt=({sdkInstance:t})=>{let[e,r]=(0,D.useState)("loading"),[o,s]=(0,D.useState)(null),[n,a]=(0,D.useState)(),[i,p]=(0,D.useState)(),[E,w]=(0,D.useState)(),[S,g]=(0,D.useState)(!1),N=(0,D.useMemo)(()=>t.getConfig(),[t]),x=(0,D.useMemo)(()=>ze(o?.theme),[o?.theme]),u=(0,D.useMemo)(()=>({identity:1,"liveness-intro":2,"liveness-check":3})[e]||0,[e]),b=async(h,R,L)=>{if(!n&&o?.verification_type?.includes("document_verification")){K.default.error("Please upload ID");return}let B={session_id:N.session,onboarding_type:R,id_number:h,name_to_confirm:"",[R]:h};w({identifier:h,identifier_type:R,country:L});try{let G=await t.getHttp().post("/v1/onboarding/verify",B);G.status==="verified"&&(K.default.success(G.message||"Verification successful"),r("liveness-intro"))}catch($){let G=$?.message||"An error occured. Please try again";K.default.error(G)}},T=async(h,R)=>{a(h),p(R)};return(0,D.useEffect)(()=>{let h=t.getHttp();(async()=>{try{r("loading");let L=await h.get("/v1/sdk/initialize/");L.status=="success"&&L.data&&setTimeout(()=>{s(L.data),r("welcome")},1500)}catch(L){let B=L?.message||"An error occured. Please try again";K.default.error(B),r("")}})()},[]),o?(0,c.jsxs)("main",{id:"smartcomply-sdk-root",className:"sc-overlay overflow-y-auto flex h-full min-h-screen bg-gray-50",children:[(0,c.jsx)("div",{id:"liveness-container",className:""}),(0,c.jsx)(K.Toaster,{}),(0,c.jsxs)("div",{className:"fixed bg-gray-50 top-0 flex w-full items-center justify-between px-4 py-4 md:px-10",children:[(0,c.jsx)("section",{className:"flex items-center gap-4",children:(0,c.jsx)("h2",{className:"text-center text-lg font-semibold text-gray-600 md:text-xl",children:o?.brand_name?o?.brand_name:"Brand name"})}),(0,c.jsxs)("div",{className:"flex items-center justify-end gap-4",children:[S?(0,c.jsx)(Ne,{destroy:t.destroy,onExpire:N?.onExpire}):null,e==="welcome"||e==="loading"?null:(0,c.jsx)("p",{className:"relative text-center text-sm font-medium text-gray-400",children:u?`Step ${u} of 3`:"All Done"})]})]}),(0,c.jsxs)("div",{className:"fixed z-1 bg-gray-50 md:bg-transparent! bottom-0 flex w-full items-center justify-center px-10 py-4 md:bottom-6 md:right-8 md:justify-between",children:[(0,c.jsx)("span",{className:"hidden md:flex"}),(0,c.jsx)("p",{className:"relative pt-2 text-center text-xs font-medium text-gray-400",children:"Powered by Adhere"})]}),(0,c.jsx)("div",{className:"flex flex-1 items-start justify-center px-4 py-24! sm:px-[6%] md:justify-start h-full",children:(0,c.jsxs)("div",{className:k("w-full max-w-[500px] max-sm:w-[80vw] max-[450px]:!w-[calc(100vw_-_2rem)]",Ge.includes(e)?"mx-auto":""),children:[e==="loading"&&(0,c.jsx)(ue,{selectedTheme:x}),e==="welcome"&&(0,c.jsx)(xe,{config:o,onNext:()=>{r("identity"),g(!0)},selectedTheme:x}),e==="identity"&&(0,c.jsx)(ke,{config:o,onSubmit:b,selectedTheme:x,handleIdUpdate:T,idFile:n}),e==="liveness-intro"&&(0,c.jsx)(Fe,{config:o,onStart:()=>r("liveness-check"),selectedTheme:x}),e==="liveness-check"&&(0,c.jsx)(Ze,{config:o,updateStep:h=>r(h),sdkInstance:N,idFile:n,snapshotFile:i,identityFormData:E}),e==="success-confirmation"&&(0,c.jsx)(Se,{destroy:t.destroy,redirect_url:o.redirect_url})]})}),e==="loading"||e==="welcome"?(0,c.jsxs)("div",{className:"relative hidden w-[35%] bg-gray-100 h-full md:flex",children:[(0,c.jsxs)("section",{className:"mx-auto flex h-[90%] max-w-[90%] flex-col justify-center space-y-4",children:[(0,c.jsx)("img",{src:tt,className:"size-30 mx-auto shrink-0",alt:"shield-checkmark"}),(0,c.jsxs)("section",{className:"space-y-2",children:[(0,c.jsxs)("h3",{className:"text-center text-xl font-semibold text-gray-600",children:["Welcome to"," ",o?.brand_name?o?.brand_name:"Brand Name"]}),(0,c.jsx)("p",{className:"break-all text-center text-sm text-gray-500",children:o?.description?o?.description:"Description"})]})]})," ",(0,c.jsx)("div",{className:"absolute bottom-6 flex w-full items-center justify-center",children:(0,c.jsx)("p",{className:"relative pt-2 text-center text-xs font-medium text-gray-400",children:"Powered by Adhere"})})]}):null]}):(0,c.jsxs)("main",{id:"smartcomply-sdk-root",className:"sc-overlay flex h-full min-h-screen bg-gray-50",children:[(0,c.jsx)(K.Toaster,{}),e=="loading"?(0,c.jsx)(ue,{selectedTheme:x}):null]})},at=jt;var Ce=require("react/jsx-runtime"),J=class{constructor(e){I(this,"http");I(this,"config");I(this,"root",null);I(this,"containerId","smartcomply-sdk-root");I(this,"destroy",()=>{this.root&&(this.root.unmount(),this.root=null);let e=document.getElementById(this.containerId);e&&e.remove(),console.log("SDK Destroyed and cleaned up.")});this.config=e,this.http=new V(e,this.destroy.bind(this))}getConfig(){return this.config}getHttp(){return this.http}launch(){let e=document.getElementById(this.containerId);e||(e=document.createElement("div"),e.id=this.containerId,document.body.appendChild(e)),this.root=(0,nt.createRoot)(e),this.root.render((0,Ce.jsx)(it.default.StrictMode,{children:(0,Ce.jsx)(at,{sdkInstance:this})}))}};var zt=J;0&&(module.exports={SmartComply});
|
package/dist/index.d.cts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
interface SDKConfig {
|
|
2
|
-
timeout?: number;
|
|
3
|
-
session: string;
|
|
4
|
-
onSuccess?: (data: any) => void;
|
|
5
|
-
onError?: (error: any) => void;
|
|
6
|
-
onExpire?: () => void;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
declare class HttpClient {
|
|
10
|
-
private baseUrl;
|
|
11
|
-
private timeout;
|
|
12
|
-
private session;
|
|
13
|
-
private onError;
|
|
14
|
-
private destroy;
|
|
15
|
-
constructor(config: SDKConfig, destroy?: Function);
|
|
16
|
-
request<T>(method: string, path: string, body?: unknown, headers?: Record<string, string>): Promise<T>;
|
|
17
|
-
post<T>(path: string, data: any, headers?: Record<string, string>): Promise<T>;
|
|
18
|
-
patch<T>(path: string, data: any, headers?: Record<string, string>): Promise<T>;
|
|
19
|
-
get<T>(path: string): Promise<T>;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
declare class SmartComply {
|
|
23
|
-
private http;
|
|
24
|
-
private config;
|
|
25
|
-
private root;
|
|
26
|
-
private containerId;
|
|
27
|
-
constructor(config: SDKConfig);
|
|
28
|
-
getConfig(): SDKConfig;
|
|
29
|
-
getHttp(): HttpClient;
|
|
30
|
-
launch(): void;
|
|
31
|
-
destroy: () => void;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export { type SDKConfig, SmartComply, SmartComply as default };
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<path d="M20 3.33398V6.66732" stroke="#F1F5F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
-
<path d="M28.3385 5.56641L26.6719 8.45316" stroke="#F1F5F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
-
<path d="M34.4336 11.668L31.5469 13.3346" stroke="#F1F5F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
-
<path d="M36.6693 20H33.3359" stroke="#F1F5F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
6
|
-
<path d="M34.4336 28.3346L31.5469 26.668" stroke="#F1F5F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7
|
-
<path d="M28.3385 34.4336L26.6719 31.5469" stroke="#F1F5F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
8
|
-
<path d="M20 36.6673V33.334" stroke="#F1F5F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
9
|
-
<path d="M11.6719 34.4336L13.3385 31.5469" stroke="#F1F5F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
10
|
-
<path d="M5.57031 28.3346L8.45707 26.668" stroke="#F1F5F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
11
|
-
<path d="M3.33594 20H6.66927" stroke="#F1F5F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
12
|
-
<path d="M5.57031 11.668L8.45707 13.3346" stroke="#F1F5F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
13
|
-
<path d="M11.6719 5.56641L13.3385 8.45316" stroke="#F1F5F9" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
14
|
-
</svg>
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg width="264" height="264" viewBox="0 0 264 264" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<rect width="264" height="264" rx="132" fill="#ECFDF5"/>
|
|
3
|
-
<path d="M132.001 48.666C86.0846 48.666 48.668 86.0827 48.668 131.999C48.668 177.916 86.0846 215.333 132.001 215.333C177.918 215.333 215.335 177.916 215.335 131.999C215.335 86.0827 177.918 48.666 132.001 48.666ZM171.835 112.833L124.585 160.083C123.418 161.249 121.835 161.916 120.168 161.916C118.501 161.916 116.918 161.249 115.751 160.083L92.168 136.499C89.7513 134.083 89.7513 130.083 92.168 127.666C94.5846 125.249 98.5846 125.249 101.001 127.666L120.168 146.833L163.001 103.999C165.418 101.583 169.418 101.583 171.835 103.999C174.251 106.416 174.251 110.333 171.835 112.833Z" fill="#10B981"/>
|
|
4
|
-
</svg>
|
package/dist/trash-KETR47RP.svg
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<path d="M14 3.98763C11.78 3.76763 9.54667 3.6543 7.32 3.6543C6 3.6543 4.68 3.72096 3.36 3.8543L2 3.98763" stroke="#F43F5E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
-
<path d="M5.66406 3.31398L5.81073 2.44065C5.9174 1.80732 5.9974 1.33398 7.12406 1.33398H8.87073C9.9974 1.33398 10.0841 1.83398 10.1841 2.44732L10.3307 3.31398" stroke="#F43F5E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
-
<path d="M12.563 6.09375L12.1297 12.8071C12.0564 13.8537 11.9964 14.6671 10.1364 14.6671H5.85635C3.99635 14.6671 3.93635 13.8537 3.86302 12.8071L3.42969 6.09375" stroke="#F43F5E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
-
<path d="M6.88281 11H9.10281" stroke="#F43F5E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
6
|
-
<path d="M6.33594 8.33398H9.66927" stroke="#F43F5E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7
|
-
</svg>
|