@turnkey/react-wallet-kit 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.MD +112 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.mjs +420 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.mjs.map +1 -0
- package/dist/components/auth/Action.d.ts +10 -0
- package/dist/components/auth/Action.d.ts.map +1 -0
- package/dist/components/auth/Action.js +76 -0
- package/dist/components/auth/Action.js.map +1 -0
- package/dist/components/auth/Action.mjs +97 -0
- package/dist/components/auth/Action.mjs.map +1 -0
- package/dist/components/auth/Email.d.ts +6 -0
- package/dist/components/auth/Email.d.ts.map +1 -0
- package/dist/components/auth/Email.js +73 -0
- package/dist/components/auth/Email.js.map +1 -0
- package/dist/components/auth/Email.mjs +95 -0
- package/dist/components/auth/Email.mjs.map +1 -0
- package/dist/components/auth/OAuth.d.ts +10 -0
- package/dist/components/auth/OAuth.d.ts.map +1 -0
- package/dist/components/auth/OAuth.js +42 -0
- package/dist/components/auth/OAuth.js.map +1 -0
- package/dist/components/auth/OAuth.mjs +46 -0
- package/dist/components/auth/OAuth.mjs.map +1 -0
- package/dist/components/auth/OTP.d.ts +19 -0
- package/dist/components/auth/OTP.d.ts.map +1 -0
- package/dist/components/auth/OTP.js +204 -0
- package/dist/components/auth/OTP.js.map +1 -0
- package/dist/components/auth/OTP.mjs +288 -0
- package/dist/components/auth/OTP.mjs.map +1 -0
- package/dist/components/auth/OrSeparator.d.ts +2 -0
- package/dist/components/auth/OrSeparator.d.ts.map +1 -0
- package/dist/components/auth/OrSeparator.js +20 -0
- package/dist/components/auth/OrSeparator.js.map +1 -0
- package/dist/components/auth/OrSeparator.mjs +18 -0
- package/dist/components/auth/OrSeparator.mjs.map +1 -0
- package/dist/components/auth/Passkey.d.ts +7 -0
- package/dist/components/auth/Passkey.d.ts.map +1 -0
- package/dist/components/auth/Passkey.js +26 -0
- package/dist/components/auth/Passkey.js.map +1 -0
- package/dist/components/auth/Passkey.mjs +22 -0
- package/dist/components/auth/Passkey.mjs.map +1 -0
- package/dist/components/auth/Phone.d.ts +6 -0
- package/dist/components/auth/Phone.d.ts.map +1 -0
- package/dist/components/auth/Phone.js +67 -0
- package/dist/components/auth/Phone.js.map +1 -0
- package/dist/components/auth/Phone.mjs +93 -0
- package/dist/components/auth/Phone.mjs.map +1 -0
- package/dist/components/auth/Wallet.d.ts +30 -0
- package/dist/components/auth/Wallet.d.ts.map +1 -0
- package/dist/components/auth/Wallet.js +408 -0
- package/dist/components/auth/Wallet.js.map +1 -0
- package/dist/components/auth/Wallet.mjs +509 -0
- package/dist/components/auth/Wallet.mjs.map +1 -0
- package/dist/components/auth/index.d.ts +2 -0
- package/dist/components/auth/index.d.ts.map +1 -0
- package/dist/components/auth/index.js +327 -0
- package/dist/components/auth/index.js.map +1 -0
- package/dist/components/auth/index.mjs +540 -0
- package/dist/components/auth/index.mjs.map +1 -0
- package/dist/components/design/Buttons.d.ts +26 -0
- package/dist/components/design/Buttons.d.ts.map +1 -0
- package/dist/components/design/Buttons.js +79 -0
- package/dist/components/design/Buttons.js.map +1 -0
- package/dist/components/design/Buttons.mjs +71 -0
- package/dist/components/design/Buttons.mjs.map +1 -0
- package/dist/components/design/Failure.d.ts +9 -0
- package/dist/components/design/Failure.d.ts.map +1 -0
- package/dist/components/design/Failure.js +33 -0
- package/dist/components/design/Failure.js.map +1 -0
- package/dist/components/design/Failure.mjs +34 -0
- package/dist/components/design/Failure.mjs.map +1 -0
- package/dist/components/design/Inputs.d.ts +9 -0
- package/dist/components/design/Inputs.d.ts.map +1 -0
- package/dist/components/design/Inputs.js +113 -0
- package/dist/components/design/Inputs.js.map +1 -0
- package/dist/components/design/Inputs.mjs +108 -0
- package/dist/components/design/Inputs.mjs.map +1 -0
- package/dist/components/design/Lottie/Dynamic.d.ts +2 -0
- package/dist/components/design/Lottie/Dynamic.d.ts.map +1 -0
- package/dist/components/design/Lottie/Dynamic.js +9 -0
- package/dist/components/design/Lottie/Dynamic.js.map +1 -0
- package/dist/components/design/Lottie/Dynamic.mjs +27 -0
- package/dist/components/design/Lottie/Dynamic.mjs.map +1 -0
- package/dist/components/design/Lottie/Wrapper.d.ts +8 -0
- package/dist/components/design/Lottie/Wrapper.d.ts.map +1 -0
- package/dist/components/design/Lottie/Wrapper.js +26 -0
- package/dist/components/design/Lottie/Wrapper.js.map +1 -0
- package/dist/components/design/Lottie/Wrapper.mjs +43 -0
- package/dist/components/design/Lottie/Wrapper.mjs.map +1 -0
- package/dist/components/design/Spinners.d.ts +9 -0
- package/dist/components/design/Spinners.d.ts.map +1 -0
- package/dist/components/design/Spinners.js +38 -0
- package/dist/components/design/Spinners.js.map +1 -0
- package/dist/components/design/Spinners.mjs +37 -0
- package/dist/components/design/Spinners.mjs.map +1 -0
- package/dist/components/design/Success.d.ts +8 -0
- package/dist/components/design/Success.d.ts.map +1 -0
- package/dist/components/design/Success.js +82 -0
- package/dist/components/design/Success.js.map +1 -0
- package/dist/components/design/Success.mjs +86 -0
- package/dist/components/design/Success.mjs.map +1 -0
- package/dist/components/design/Svg.d.ts +10 -0
- package/dist/components/design/Svg.d.ts.map +1 -0
- package/dist/components/design/Svg.js +156 -0
- package/dist/components/design/Svg.js.map +1 -0
- package/dist/components/design/Svg.mjs +153 -0
- package/dist/components/design/Svg.mjs.map +1 -0
- package/dist/components/export/Export.d.ts +9 -0
- package/dist/components/export/Export.d.ts.map +1 -0
- package/dist/components/export/Export.js +140 -0
- package/dist/components/export/Export.js.map +1 -0
- package/dist/components/export/Export.mjs +178 -0
- package/dist/components/export/Export.mjs.map +1 -0
- package/dist/components/export/ExportWarning.d.ts +12 -0
- package/dist/components/export/ExportWarning.d.ts.map +1 -0
- package/dist/components/export/ExportWarning.js +87 -0
- package/dist/components/export/ExportWarning.js.map +1 -0
- package/dist/components/export/ExportWarning.mjs +113 -0
- package/dist/components/export/ExportWarning.mjs.map +1 -0
- package/dist/components/import/Import.d.ts +14 -0
- package/dist/components/import/Import.d.ts.map +1 -0
- package/dist/components/import/Import.js +226 -0
- package/dist/components/import/Import.js.map +1 -0
- package/dist/components/import/Import.mjs +328 -0
- package/dist/components/import/Import.mjs.map +1 -0
- package/dist/components/sign/Message.d.ts +17 -0
- package/dist/components/sign/Message.d.ts.map +1 -0
- package/dist/components/sign/Message.js +127 -0
- package/dist/components/sign/Message.js.map +1 -0
- package/dist/components/sign/Message.mjs +145 -0
- package/dist/components/sign/Message.mjs.map +1 -0
- package/dist/components/user/LinkWallet.d.ts +8 -0
- package/dist/components/user/LinkWallet.d.ts.map +1 -0
- package/dist/components/user/LinkWallet.js +102 -0
- package/dist/components/user/LinkWallet.js.map +1 -0
- package/dist/components/user/LinkWallet.mjs +162 -0
- package/dist/components/user/LinkWallet.mjs.map +1 -0
- package/dist/components/user/RemoveEmail.d.ts +11 -0
- package/dist/components/user/RemoveEmail.d.ts.map +1 -0
- package/dist/components/user/RemoveEmail.js +101 -0
- package/dist/components/user/RemoveEmail.js.map +1 -0
- package/dist/components/user/RemoveEmail.mjs +122 -0
- package/dist/components/user/RemoveEmail.mjs.map +1 -0
- package/dist/components/user/RemoveOAuthProvider.d.ts +11 -0
- package/dist/components/user/RemoveOAuthProvider.d.ts.map +1 -0
- package/dist/components/user/RemoveOAuthProvider.js +106 -0
- package/dist/components/user/RemoveOAuthProvider.js.map +1 -0
- package/dist/components/user/RemoveOAuthProvider.mjs +129 -0
- package/dist/components/user/RemoveOAuthProvider.mjs.map +1 -0
- package/dist/components/user/RemovePasskey.d.ts +11 -0
- package/dist/components/user/RemovePasskey.d.ts.map +1 -0
- package/dist/components/user/RemovePasskey.js +109 -0
- package/dist/components/user/RemovePasskey.js.map +1 -0
- package/dist/components/user/RemovePasskey.mjs +132 -0
- package/dist/components/user/RemovePasskey.mjs.map +1 -0
- package/dist/components/user/RemovePhoneNumber.d.ts +11 -0
- package/dist/components/user/RemovePhoneNumber.d.ts.map +1 -0
- package/dist/components/user/RemovePhoneNumber.js +101 -0
- package/dist/components/user/RemovePhoneNumber.js.map +1 -0
- package/dist/components/user/RemovePhoneNumber.mjs +122 -0
- package/dist/components/user/RemovePhoneNumber.mjs.map +1 -0
- package/dist/components/user/UpdateEmail.d.ts +8 -0
- package/dist/components/user/UpdateEmail.d.ts.map +1 -0
- package/dist/components/user/UpdateEmail.js +139 -0
- package/dist/components/user/UpdateEmail.js.map +1 -0
- package/dist/components/user/UpdateEmail.mjs +186 -0
- package/dist/components/user/UpdateEmail.mjs.map +1 -0
- package/dist/components/user/UpdatePhoneNumber.d.ts +8 -0
- package/dist/components/user/UpdatePhoneNumber.d.ts.map +1 -0
- package/dist/components/user/UpdatePhoneNumber.js +136 -0
- package/dist/components/user/UpdatePhoneNumber.js.map +1 -0
- package/dist/components/user/UpdatePhoneNumber.mjs +187 -0
- package/dist/components/user/UpdatePhoneNumber.mjs.map +1 -0
- package/dist/components/user/UpdateUserName.d.ts +11 -0
- package/dist/components/user/UpdateUserName.d.ts.map +1 -0
- package/dist/components/user/UpdateUserName.js +112 -0
- package/dist/components/user/UpdateUserName.js.map +1 -0
- package/dist/components/user/UpdateUserName.mjs +139 -0
- package/dist/components/user/UpdateUserName.mjs.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +6 -0
- package/dist/index.mjs.map +1 -0
- package/dist/providers/TurnkeyProvider.d.ts +8 -0
- package/dist/providers/TurnkeyProvider.d.ts.map +1 -0
- package/dist/providers/TurnkeyProvider.js +35 -0
- package/dist/providers/TurnkeyProvider.js.map +1 -0
- package/dist/providers/TurnkeyProvider.mjs +33 -0
- package/dist/providers/TurnkeyProvider.mjs.map +1 -0
- package/dist/providers/client/Hook.d.ts +3 -0
- package/dist/providers/client/Hook.d.ts.map +1 -0
- package/dist/providers/client/Hook.js +14 -0
- package/dist/providers/client/Hook.js.map +1 -0
- package/dist/providers/client/Hook.mjs +12 -0
- package/dist/providers/client/Hook.mjs.map +1 -0
- package/dist/providers/client/Provider.d.ts +39 -0
- package/dist/providers/client/Provider.d.ts.map +1 -0
- package/dist/providers/client/Provider.js +2489 -0
- package/dist/providers/client/Provider.js.map +1 -0
- package/dist/providers/client/Provider.mjs +4744 -0
- package/dist/providers/client/Provider.mjs.map +1 -0
- package/dist/providers/client/Types.d.ts +524 -0
- package/dist/providers/client/Types.d.ts.map +1 -0
- package/dist/providers/client/Types.js +9 -0
- package/dist/providers/client/Types.js.map +1 -0
- package/dist/providers/client/Types.mjs +7 -0
- package/dist/providers/client/Types.mjs.map +1 -0
- package/dist/providers/index.d.ts +5 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/modal/Hook.d.ts +3 -0
- package/dist/providers/modal/Hook.d.ts.map +1 -0
- package/dist/providers/modal/Hook.js +14 -0
- package/dist/providers/modal/Hook.js.map +1 -0
- package/dist/providers/modal/Hook.mjs +12 -0
- package/dist/providers/modal/Hook.mjs.map +1 -0
- package/dist/providers/modal/Provider.d.ts +21 -0
- package/dist/providers/modal/Provider.d.ts.map +1 -0
- package/dist/providers/modal/Provider.js +37 -0
- package/dist/providers/modal/Provider.js.map +1 -0
- package/dist/providers/modal/Provider.mjs +48 -0
- package/dist/providers/modal/Provider.mjs.map +1 -0
- package/dist/providers/modal/Root.d.ts +7 -0
- package/dist/providers/modal/Root.d.ts.map +1 -0
- package/dist/providers/modal/Root.js +258 -0
- package/dist/providers/modal/Root.js.map +1 -0
- package/dist/providers/modal/Root.mjs +263 -0
- package/dist/providers/modal/Root.mjs.map +1 -0
- package/dist/providers/theme/Overrides.d.ts +18 -0
- package/dist/providers/theme/Overrides.d.ts.map +1 -0
- package/dist/providers/theme/Overrides.js +35 -0
- package/dist/providers/theme/Overrides.js.map +1 -0
- package/dist/providers/theme/Overrides.mjs +37 -0
- package/dist/providers/theme/Overrides.mjs.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/types/base.d.ts +79 -0
- package/dist/types/base.d.ts.map +1 -0
- package/dist/types/base.js +19 -0
- package/dist/types/base.js.map +1 -0
- package/dist/types/base.mjs +19 -0
- package/dist/types/base.mjs.map +1 -0
- package/dist/utils.d.ts +72 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +211 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +307 -0
- package/dist/utils.mjs.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var react$1 = require('@headlessui/react');
|
|
6
|
+
var Buttons = require('../design/Buttons.js');
|
|
7
|
+
var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
|
|
8
|
+
var clsx = require('clsx');
|
|
9
|
+
var Hook = require('../../providers/client/Hook.js');
|
|
10
|
+
|
|
11
|
+
function isValidEmail(email) {
|
|
12
|
+
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
|
|
13
|
+
}
|
|
14
|
+
function EmailInput(props) {
|
|
15
|
+
const {
|
|
16
|
+
onContinue
|
|
17
|
+
} = props;
|
|
18
|
+
const {
|
|
19
|
+
config
|
|
20
|
+
} = Hook.useTurnkey();
|
|
21
|
+
const [loading, setLoading] = react.useState(false);
|
|
22
|
+
const [email, setEmail] = react.useState("");
|
|
23
|
+
const useContinueButton = config?.ui?.preferLargeActionButtons ?? false;
|
|
24
|
+
const emailIsValid = isValidEmail(email);
|
|
25
|
+
const handleContinue = async () => {
|
|
26
|
+
if (emailIsValid && onContinue) {
|
|
27
|
+
setLoading(true);
|
|
28
|
+
try {
|
|
29
|
+
await Promise.resolve(onContinue(email));
|
|
30
|
+
} finally {
|
|
31
|
+
setLoading(false);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const handleKeyDown = e => {
|
|
36
|
+
if (e.key === "Enter") {
|
|
37
|
+
handleContinue();
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const buttonDisabled = !emailIsValid;
|
|
41
|
+
const buttonClass = clsx("transition-all duration-300", (emailIsValid || useContinueButton) && "bg-primary-light dark:bg-primary-dark hover:bg-primary-light/90 dark:hover:bg-primary-dark/90 text-primary-text-light dark:text-primary-text-dark");
|
|
42
|
+
return jsxRuntime.jsxs("div", {
|
|
43
|
+
className: clsx("w-full items-center justify-center space-y-3", useContinueButton ? "flex flex-col" : "flex flex-row"),
|
|
44
|
+
children: [jsxRuntime.jsxs("div", {
|
|
45
|
+
className: clsx("w-full", !useContinueButton && "relative flex items-center"),
|
|
46
|
+
children: [jsxRuntime.jsx(react$1.Input, {
|
|
47
|
+
type: "email",
|
|
48
|
+
placeholder: "Enter your email",
|
|
49
|
+
value: email,
|
|
50
|
+
onChange: e => setEmail(e.target.value),
|
|
51
|
+
onKeyDown: handleKeyDown,
|
|
52
|
+
className: "w-full py-3 px-4 rounded-md text-inherit placeholder-icon-text-light dark:placeholder-icon-text-dark bg-button-light dark:bg-button-dark border border-modal-background-dark/20 dark:border-modal-background-light/20 focus:outline-primary-light focus:dark:outline-primary-dark focus:outline-[1px] focus:outline-offset-0 box-border"
|
|
53
|
+
}), !useContinueButton && jsxRuntime.jsx(Buttons.IconButton, {
|
|
54
|
+
icon: freeSolidSvgIcons.faArrowRight,
|
|
55
|
+
onClick: handleContinue,
|
|
56
|
+
disabled: buttonDisabled,
|
|
57
|
+
loading: loading,
|
|
58
|
+
className: clsx("absolute right-2 w-6 h-6", buttonClass),
|
|
59
|
+
spinnerClassName: "text-primary-text-light dark:text-primary-text-dark"
|
|
60
|
+
})]
|
|
61
|
+
}), useContinueButton && jsxRuntime.jsx(Buttons.ActionButton, {
|
|
62
|
+
onClick: handleContinue,
|
|
63
|
+
disabled: buttonDisabled,
|
|
64
|
+
loading: loading,
|
|
65
|
+
className: clsx("w-full", buttonClass),
|
|
66
|
+
spinnerClassName: "text-primary-text-light dark:text-primary-text-dark",
|
|
67
|
+
children: "Continue"
|
|
68
|
+
})]
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
exports.EmailInput = EmailInput;
|
|
73
|
+
//# sourceMappingURL=Email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Email.js","sources":["../../../src/components/auth/Email.tsx"],"sourcesContent":[null],"names":["isValidEmail","email","test","EmailInput","props","onContinue","config","useTurnkey","loading","setLoading","useState","setEmail","useContinueButton","ui","preferLargeActionButtons","emailIsValid","handleContinue","Promise","resolve","handleKeyDown","e","key","buttonDisabled","buttonClass","clsx","_jsxs","className","children","_jsx","Input","type","placeholder","value","onChange","target","onKeyDown","IconButton","icon","faArrowRight","onClick","disabled","spinnerClassName","ActionButton"],"mappings":";;;;;;;;;;AAOA,SAASA,YAAYA,CAACC,KAAa,EAAA;AACjC,EAAA,OAAO,4BAA4B,CAACC,IAAI,CAACD,KAAK,CAAC;AACjD;AAMM,SAAUE,UAAUA,CAACC,KAAsB,EAAA;EAC/C,MAAM;AAAEC,IAAAA;AAAY,GAAA,GAAGD,KAAK;EAC5B,MAAM;AAAEE,IAAAA;GAAQ,GAAGC,eAAU,EAAE;EAC/B,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM,CAACT,KAAK,EAAEU,QAAQ,CAAC,GAAGD,cAAQ,CAAC,EAAE,CAAC;EACtC,MAAME,iBAAiB,GAAGN,MAAM,EAAEO,EAAE,EAAEC,wBAAwB,IAAI,KAAK;AAEvE,EAAA,MAAMC,YAAY,GAAGf,YAAY,CAACC,KAAK,CAAC;AAExC,EAAA,MAAMe,cAAc,GAAG,YAAW;IAChC,IAAID,YAAY,IAAIV,UAAU,EAAE;MAC9BI,UAAU,CAAC,IAAI,CAAC;MAChB,IAAI;QACF,MAAMQ,OAAO,CAACC,OAAO,CAACb,UAAU,CAACJ,KAAK,CAAC,CAAC;AAC1C,OAAC,SAAS;QACRQ,UAAU,CAAC,KAAK,CAAC;AACnB;AACF;GACD;EAED,MAAMU,aAAa,GAAIC,CAAwC,IAAI;AACjE,IAAA,IAAIA,CAAC,CAACC,GAAG,KAAK,OAAO,EAAE;AACrBL,MAAAA,cAAc,EAAE;AAClB;GACD;EAED,MAAMM,cAAc,GAAG,CAACP,YAAY;AAEpC,EAAA,MAAMQ,WAAW,GAAGC,IAAI,CACtB,6BAA6B,EAC7B,CAACT,YAAY,IAAIH,iBAAiB,KAChC,mJAAmJ,CACtJ;EAED,OACEa,eAAA,CAAA,KAAA,EAAA;IACEC,SAAS,EAAEF,IAAI,CACb,8CAA8C,EAC9CZ,iBAAiB,GAAG,eAAe,GAAG,eAAe,CACtD;AAEDe,IAAAA,QAAA,EAAA,CAAAF,eAAA,CAAA,KAAA,EAAA;MACEC,SAAS,EAAEF,IAAI,CACb,QAAQ,EACR,CAACZ,iBAAiB,IAAI,4BAA4B,CACnD;AAAAe,MAAAA,QAAA,EAAA,CAEDC,eAACC,aAAK,EAAA;AACJC,QAAAA,IAAI,EAAC,OAAO;AACZC,QAAAA,WAAW,EAAC,kBAAkB;AAC9BC,QAAAA,KAAK,EAAE/B,KAAK;QACZgC,QAAQ,EAAGb,CAAC,IAAKT,QAAQ,CAACS,CAAC,CAACc,MAAM,CAACF,KAAK,CAAC;AACzCG,QAAAA,SAAS,EAAEhB,aAAa;AACxBO,QAAAA,SAAS,EAAC;OACV,CAAA,EAED,CAACd,iBAAiB,IACjBgB,cAAC,CAAAQ,kBAAU;AACTC,QAAAA,IAAI,EAAEC,8BAAY;AAClBC,QAAAA,OAAO,EAAEvB,cAAc;AACvBwB,QAAAA,QAAQ,EAAElB,cAAc;AACxBd,QAAAA,OAAO,EAAEA,OAAO;AAChBkB,QAAAA,SAAS,EAAEF,IAAI,CAAC,0BAA0B,EAAED,WAAW,CAAC;AACxDkB,QAAAA,gBAAgB,EAAC;AACjB,OAAA,CACH;AACG,KAAA,CAAA,EAEL7B,iBAAiB,IAChBgB,cAAA,CAACc,oBAAY,EACX;AAAAH,MAAAA,OAAO,EAAEvB,cAAc;AACvBwB,MAAAA,QAAQ,EAAElB,cAAc;AACxBd,MAAAA,OAAO,EAAEA,OAAO;AAChBkB,MAAAA,SAAS,EAAEF,IAAI,CAAC,QAAQ,EAAED,WAAW,CAAC;AACtCkB,MAAAA,gBAAgB,EAAC,qDAAqD;AAAAd,MAAAA,QAAA,EAAA;AAAA,KAAA,CAIzE;AAAA,GAAA,CACG;AAEV;;;;"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../../_virtual/_rollupPluginBabelHelpers.mjs';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { Input } from '@headlessui/react';
|
|
5
|
+
import { IconButton, ActionButton } from '../design/Buttons.mjs';
|
|
6
|
+
import { faArrowRight } from '@fortawesome/free-solid-svg-icons';
|
|
7
|
+
import clsx from 'clsx';
|
|
8
|
+
import { useTurnkey } from '../../providers/client/Hook.mjs';
|
|
9
|
+
|
|
10
|
+
function isValidEmail(email) {
|
|
11
|
+
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
|
|
12
|
+
}
|
|
13
|
+
function EmailInput(props) {
|
|
14
|
+
var _config$ui$preferLarg, _config$ui;
|
|
15
|
+
var onContinue = props.onContinue;
|
|
16
|
+
var _useTurnkey = useTurnkey(),
|
|
17
|
+
config = _useTurnkey.config;
|
|
18
|
+
var _useState = useState(false),
|
|
19
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
20
|
+
loading = _useState2[0],
|
|
21
|
+
setLoading = _useState2[1];
|
|
22
|
+
var _useState3 = useState(""),
|
|
23
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
24
|
+
email = _useState4[0],
|
|
25
|
+
setEmail = _useState4[1];
|
|
26
|
+
var useContinueButton = (_config$ui$preferLarg = config === null || config === void 0 ? void 0 : (_config$ui = config.ui) === null || _config$ui === void 0 ? void 0 : _config$ui.preferLargeActionButtons) !== null && _config$ui$preferLarg !== void 0 ? _config$ui$preferLarg : false;
|
|
27
|
+
var emailIsValid = isValidEmail(email);
|
|
28
|
+
var handleContinue = /*#__PURE__*/function () {
|
|
29
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
30
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
31
|
+
while (1) switch (_context.prev = _context.next) {
|
|
32
|
+
case 0:
|
|
33
|
+
if (!(emailIsValid && onContinue)) {
|
|
34
|
+
_context.next = 8;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
setLoading(true);
|
|
38
|
+
_context.prev = 2;
|
|
39
|
+
_context.next = 5;
|
|
40
|
+
return Promise.resolve(onContinue(email));
|
|
41
|
+
case 5:
|
|
42
|
+
_context.prev = 5;
|
|
43
|
+
setLoading(false);
|
|
44
|
+
return _context.finish(5);
|
|
45
|
+
case 8:
|
|
46
|
+
case "end":
|
|
47
|
+
return _context.stop();
|
|
48
|
+
}
|
|
49
|
+
}, _callee, null, [[2,, 5, 8]]);
|
|
50
|
+
}));
|
|
51
|
+
return function handleContinue() {
|
|
52
|
+
return _ref.apply(this, arguments);
|
|
53
|
+
};
|
|
54
|
+
}();
|
|
55
|
+
var handleKeyDown = function handleKeyDown(e) {
|
|
56
|
+
if (e.key === "Enter") {
|
|
57
|
+
handleContinue();
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var buttonDisabled = !emailIsValid;
|
|
61
|
+
var buttonClass = clsx("transition-all duration-300", (emailIsValid || useContinueButton) && "bg-primary-light dark:bg-primary-dark hover:bg-primary-light/90 dark:hover:bg-primary-dark/90 text-primary-text-light dark:text-primary-text-dark");
|
|
62
|
+
return jsxs("div", {
|
|
63
|
+
className: clsx("w-full items-center justify-center space-y-3", useContinueButton ? "flex flex-col" : "flex flex-row"),
|
|
64
|
+
children: [jsxs("div", {
|
|
65
|
+
className: clsx("w-full", !useContinueButton && "relative flex items-center"),
|
|
66
|
+
children: [jsx(Input, {
|
|
67
|
+
type: "email",
|
|
68
|
+
placeholder: "Enter your email",
|
|
69
|
+
value: email,
|
|
70
|
+
onChange: function onChange(e) {
|
|
71
|
+
return setEmail(e.target.value);
|
|
72
|
+
},
|
|
73
|
+
onKeyDown: handleKeyDown,
|
|
74
|
+
className: "w-full py-3 px-4 rounded-md text-inherit placeholder-icon-text-light dark:placeholder-icon-text-dark bg-button-light dark:bg-button-dark border border-modal-background-dark/20 dark:border-modal-background-light/20 focus:outline-primary-light focus:dark:outline-primary-dark focus:outline-[1px] focus:outline-offset-0 box-border"
|
|
75
|
+
}), !useContinueButton && jsx(IconButton, {
|
|
76
|
+
icon: faArrowRight,
|
|
77
|
+
onClick: handleContinue,
|
|
78
|
+
disabled: buttonDisabled,
|
|
79
|
+
loading: loading,
|
|
80
|
+
className: clsx("absolute right-2 w-6 h-6", buttonClass),
|
|
81
|
+
spinnerClassName: "text-primary-text-light dark:text-primary-text-dark"
|
|
82
|
+
})]
|
|
83
|
+
}), useContinueButton && jsx(ActionButton, {
|
|
84
|
+
onClick: handleContinue,
|
|
85
|
+
disabled: buttonDisabled,
|
|
86
|
+
loading: loading,
|
|
87
|
+
className: clsx("w-full", buttonClass),
|
|
88
|
+
spinnerClassName: "text-primary-text-light dark:text-primary-text-dark",
|
|
89
|
+
children: "Continue"
|
|
90
|
+
})]
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export { EmailInput };
|
|
95
|
+
//# sourceMappingURL=Email.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Email.mjs","sources":["../../../src/components/auth/Email.tsx"],"sourcesContent":[null],"names":["isValidEmail","email","test","EmailInput","props","_config$ui$preferLarg","_config$ui","onContinue","_useTurnkey","useTurnkey","config","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","setEmail","useContinueButton","ui","preferLargeActionButtons","emailIsValid","handleContinue","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","Promise","resolve","finish","stop","apply","arguments","handleKeyDown","e","key","buttonDisabled","buttonClass","clsx","_jsxs","className","children","_jsx","Input","type","placeholder","value","onChange","target","onKeyDown","IconButton","icon","faArrowRight","onClick","disabled","spinnerClassName","ActionButton"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface OAuthButtonProps {
|
|
3
|
+
name: string;
|
|
4
|
+
icon: React.ReactNode;
|
|
5
|
+
onClick: () => void;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function OAuthButton(props: OAuthButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=OAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OAuth.d.ts","sourceRoot":"","sources":["../../../src/components/auth/OAuth.tsx"],"names":[],"mappings":";AAGA,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,2CAgClD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var Buttons = require('../design/Buttons.js');
|
|
6
|
+
|
|
7
|
+
function OAuthButton(props) {
|
|
8
|
+
const containerRef = react.useRef(null);
|
|
9
|
+
const [showText, setShowText] = react.useState(false);
|
|
10
|
+
const {
|
|
11
|
+
name,
|
|
12
|
+
icon,
|
|
13
|
+
onClick,
|
|
14
|
+
className
|
|
15
|
+
} = props;
|
|
16
|
+
react.useEffect(() => {
|
|
17
|
+
const observer = new ResizeObserver(([entry]) => {
|
|
18
|
+
if (!entry) return;
|
|
19
|
+
const width = entry.contentRect.width;
|
|
20
|
+
setShowText(width > 300);
|
|
21
|
+
});
|
|
22
|
+
if (containerRef.current) {
|
|
23
|
+
observer.observe(containerRef.current);
|
|
24
|
+
}
|
|
25
|
+
return () => observer.disconnect();
|
|
26
|
+
}, []);
|
|
27
|
+
return jsxRuntime.jsx("div", {
|
|
28
|
+
ref: containerRef,
|
|
29
|
+
className: "w-full h-full",
|
|
30
|
+
children: jsxRuntime.jsxs(Buttons.ActionButton, {
|
|
31
|
+
onClick: onClick,
|
|
32
|
+
className: `flex items-center justify-center gap-2 w-full h-full rounded-md bg-button-light dark:bg-button-dark text-inherit ${className || ""}`,
|
|
33
|
+
children: [icon, showText && jsxRuntime.jsx("span", {
|
|
34
|
+
className: "truncate",
|
|
35
|
+
children: `Continue with ${name}`
|
|
36
|
+
})]
|
|
37
|
+
})
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
exports.OAuthButton = OAuthButton;
|
|
42
|
+
//# sourceMappingURL=OAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OAuth.js","sources":["../../../src/components/auth/OAuth.tsx"],"sourcesContent":[null],"names":["OAuthButton","props","containerRef","useRef","showText","setShowText","useState","name","icon","onClick","className","useEffect","observer","ResizeObserver","entry","width","contentRect","current","observe","disconnect","_jsx","ref","_jsxs","ActionButton","children"],"mappings":";;;;;;AAUM,SAAUA,WAAWA,CAACC,KAAuB,EAAA;AACjD,EAAA,MAAMC,YAAY,GAAGC,YAAM,CAAiB,IAAI,CAAC;EACjD,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC;EAC/C,MAAM;IAAEC,IAAI;IAAEC,IAAI;IAAEC,OAAO;AAAEC,IAAAA;AAAS,GAAE,GAAGT,KAAK;AAEhDU,EAAAA,eAAS,CAAC,MAAK;IACb,MAAMC,QAAQ,GAAG,IAAIC,cAAc,CAAC,CAAC,CAACC,KAAK,CAAC,KAAI;MAC9C,IAAI,CAACA,KAAK,EAAE;AACZ,MAAA,MAAMC,KAAK,GAAGD,KAAK,CAACE,WAAW,CAACD,KAAK;AACrCV,MAAAA,WAAW,CAACU,KAAK,GAAG,GAAG,CAAC;AAC1B,KAAC,CAAC;IAEF,IAAIb,YAAY,CAACe,OAAO,EAAE;AACxBL,MAAAA,QAAQ,CAACM,OAAO,CAAChB,YAAY,CAACe,OAAO,CAAC;AACxC;AAEA,IAAA,OAAO,MAAML,QAAQ,CAACO,UAAU,EAAE;GACnC,EAAE,EAAE,CAAC;EAEN,OACEC,cAAK,CAAA,KAAA,EAAA;AAAAC,IAAAA,GAAG,EAAEnB,YAAY;AAAEQ,IAAAA,SAAS,EAAC,eAAe;cAC/CY,eAAC,CAAAC,oBAAY;AACXd,MAAAA,OAAO,EAAEA,OAAO;AAChBC,MAAAA,SAAS,EAAE,CAAA,iHAAA,EAAoHA,SAAS,IAAI,EAAE,CAAE,CAAA;iBAE/IF,IAAI,EACJJ,QAAQ,IACPgB;AAAMV,QAAAA,SAAS,EAAC,UAAU;QAAEc,QAAA,EAAA,iBAAiBjB,IAAI,CAAA;AAAE,OAAA,CACpD;KACY;AAAA,GAAA,CACX;AAEV;;;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../_virtual/_rollupPluginBabelHelpers.mjs';
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import { useRef, useState, useEffect } from 'react';
|
|
4
|
+
import { ActionButton } from '../design/Buttons.mjs';
|
|
5
|
+
|
|
6
|
+
function OAuthButton(props) {
|
|
7
|
+
var containerRef = useRef(null);
|
|
8
|
+
var _useState = useState(false),
|
|
9
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
10
|
+
showText = _useState2[0],
|
|
11
|
+
setShowText = _useState2[1];
|
|
12
|
+
var name = props.name,
|
|
13
|
+
icon = props.icon,
|
|
14
|
+
onClick = props.onClick,
|
|
15
|
+
className = props.className;
|
|
16
|
+
useEffect(function () {
|
|
17
|
+
var observer = new ResizeObserver(function (_ref) {
|
|
18
|
+
var _ref2 = _slicedToArray(_ref, 1),
|
|
19
|
+
entry = _ref2[0];
|
|
20
|
+
if (!entry) return;
|
|
21
|
+
var width = entry.contentRect.width;
|
|
22
|
+
setShowText(width > 300);
|
|
23
|
+
});
|
|
24
|
+
if (containerRef.current) {
|
|
25
|
+
observer.observe(containerRef.current);
|
|
26
|
+
}
|
|
27
|
+
return function () {
|
|
28
|
+
return observer.disconnect();
|
|
29
|
+
};
|
|
30
|
+
}, []);
|
|
31
|
+
return jsx("div", {
|
|
32
|
+
ref: containerRef,
|
|
33
|
+
className: "w-full h-full",
|
|
34
|
+
children: jsxs(ActionButton, {
|
|
35
|
+
onClick: onClick,
|
|
36
|
+
className: "flex items-center justify-center gap-2 w-full h-full rounded-md bg-button-light dark:bg-button-dark text-inherit ".concat(className || ""),
|
|
37
|
+
children: [icon, showText && jsx("span", {
|
|
38
|
+
className: "truncate",
|
|
39
|
+
children: "Continue with ".concat(name)
|
|
40
|
+
})]
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { OAuthButton };
|
|
46
|
+
//# sourceMappingURL=OAuth.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OAuth.mjs","sources":["../../../src/components/auth/OAuth.tsx"],"sourcesContent":[null],"names":["OAuthButton","props","containerRef","useRef","_useState","useState","_useState2","_slicedToArray","showText","setShowText","name","icon","onClick","className","useEffect","observer","ResizeObserver","_ref","_ref2","entry","width","contentRect","current","observe","disconnect","_jsx","ref","_jsxs","ActionButton","concat","children"],"mappings":";;;;;AAUM,SAAUA,WAAWA,CAACC,KAAuB,EAAA;AACjD,EAAA,IAAMC,YAAY,GAAGC,MAAM,CAAiB,IAAI,CAAC;AACjD,EAAA,IAAAC,SAAA,GAAgCC,QAAQ,CAAC,KAAK,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAxCI,IAAAA,QAAQ,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,WAAW,GAAAH,UAAA,CAAA,CAAA,CAAA;AAC5B,EAAA,IAAQI,IAAI,GAA+BT,KAAK,CAAxCS,IAAI;IAAEC,IAAI,GAAyBV,KAAK,CAAlCU,IAAI;IAAEC,OAAO,GAAgBX,KAAK,CAA5BW,OAAO;IAAEC,SAAS,GAAKZ,KAAK,CAAnBY,SAAS;AAEtCC,EAAAA,SAAS,CAAC,YAAK;AACb,IAAA,IAAMC,QAAQ,GAAG,IAAIC,cAAc,CAAC,UAAAC,IAAA,EAAY;AAAA,MAAA,IAAAC,KAAA,GAAAX,cAAA,CAAAU,IAAA,EAAA,CAAA,CAAA;AAAVE,QAAAA,KAAK,GAAAD,KAAA,CAAA,CAAA,CAAA;MACzC,IAAI,CAACC,KAAK,EAAE;AACZ,MAAA,IAAMC,KAAK,GAAGD,KAAK,CAACE,WAAW,CAACD,KAAK;AACrCX,MAAAA,WAAW,CAACW,KAAK,GAAG,GAAG,CAAC;AAC1B,KAAC,CAAC;IAEF,IAAIlB,YAAY,CAACoB,OAAO,EAAE;AACxBP,MAAAA,QAAQ,CAACQ,OAAO,CAACrB,YAAY,CAACoB,OAAO,CAAC;AACxC;IAEA,OAAO,YAAA;AAAA,MAAA,OAAMP,QAAQ,CAACS,UAAU,EAAE;AAAA,KAAA;GACnC,EAAE,EAAE,CAAC;EAEN,OACEC,GAAK,CAAA,KAAA,EAAA;AAAAC,IAAAA,GAAG,EAAExB,YAAY;AAAEW,IAAAA,SAAS,EAAC,eAAe;cAC/Cc,IAAC,CAAAC,YAAY;AACXhB,MAAAA,OAAO,EAAEA,OAAO;AAChBC,MAAAA,SAAS,sHAAAgB,MAAA,CAAsHhB,SAAS,IAAI,EAAE,CAAE;iBAE/IF,IAAI,EACJH,QAAQ,IACPiB;AAAMZ,QAAAA,SAAS,EAAC,UAAU;QAAEiB,QAAA,EAAA,gBAAA,CAAAD,MAAA,CAAiBnB,IAAI;AAAE,OAAA,CACpD;KACY;AAAA,GAAA,CACX;AAEV;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { OtpType } from "@turnkey/core";
|
|
2
|
+
interface OtpVerificationProps {
|
|
3
|
+
contact: string;
|
|
4
|
+
otpId: string;
|
|
5
|
+
otpType: OtpType;
|
|
6
|
+
otpLength?: number;
|
|
7
|
+
alphanumeric?: boolean;
|
|
8
|
+
formattedContact?: string;
|
|
9
|
+
onContinue?: (optCode: string) => Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare function OtpVerification(props: OtpVerificationProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
interface OtpInputProps {
|
|
13
|
+
otpLength: number;
|
|
14
|
+
onContinue: (otpCode: string) => void;
|
|
15
|
+
alphanumeric?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function OtpInput(props: OtpInputProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=OTP.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OTP.d.ts","sourceRoot":"","sources":["../../../src/components/auth/OTP.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKxC,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CA+H1D;AAED,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,2CAmG5C"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var Hook$1 = require('../../providers/modal/Hook.js');
|
|
6
|
+
var Hook = require('../../providers/client/Hook.js');
|
|
7
|
+
var Spinners = require('../design/Spinners.js');
|
|
8
|
+
var react$1 = require('@headlessui/react');
|
|
9
|
+
var Buttons = require('../design/Buttons.js');
|
|
10
|
+
var core = require('@turnkey/core');
|
|
11
|
+
var reactFontawesome = require('@fortawesome/react-fontawesome');
|
|
12
|
+
var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
|
|
13
|
+
var clsx = require('clsx');
|
|
14
|
+
|
|
15
|
+
function OtpVerification(props) {
|
|
16
|
+
const {
|
|
17
|
+
contact,
|
|
18
|
+
otpType,
|
|
19
|
+
otpLength = 6,
|
|
20
|
+
alphanumeric = true,
|
|
21
|
+
formattedContact,
|
|
22
|
+
onContinue = null // Default to null if not provided
|
|
23
|
+
} = props;
|
|
24
|
+
const {
|
|
25
|
+
initOtp,
|
|
26
|
+
completeOtp
|
|
27
|
+
} = Hook.useTurnkey();
|
|
28
|
+
const {
|
|
29
|
+
closeModal,
|
|
30
|
+
isMobile
|
|
31
|
+
} = Hook$1.useModal();
|
|
32
|
+
const [submitting, setSubmitting] = react.useState(false);
|
|
33
|
+
const [resending, setResending] = react.useState(false);
|
|
34
|
+
const [resent, setResent] = react.useState(false);
|
|
35
|
+
const [otpId, setOtpId] = react.useState(props.otpId);
|
|
36
|
+
const [error, setError] = react.useState(null);
|
|
37
|
+
const [shaking, setShaking] = react.useState(false);
|
|
38
|
+
const shakeInput = () => {
|
|
39
|
+
setShaking(true);
|
|
40
|
+
setTimeout(() => setShaking(false), 250);
|
|
41
|
+
};
|
|
42
|
+
const handleContinue = async otpCode => {
|
|
43
|
+
try {
|
|
44
|
+
setSubmitting(true);
|
|
45
|
+
if (onContinue) {
|
|
46
|
+
await onContinue(otpCode);
|
|
47
|
+
} else {
|
|
48
|
+
await completeOtp({
|
|
49
|
+
otpId,
|
|
50
|
+
otpCode,
|
|
51
|
+
contact,
|
|
52
|
+
otpType
|
|
53
|
+
});
|
|
54
|
+
closeModal();
|
|
55
|
+
}
|
|
56
|
+
} catch (error) {
|
|
57
|
+
const niceError = error.message.includes("Invalid OTP") ? "Invalid OTP code" : "An error has occurred"; // eek! maybe this is bad!
|
|
58
|
+
setError(niceError);
|
|
59
|
+
shakeInput();
|
|
60
|
+
throw new Error(`Error completing OTP: ${error}`);
|
|
61
|
+
} finally {
|
|
62
|
+
setSubmitting(false);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
const handleResend = async () => {
|
|
66
|
+
setResending(true);
|
|
67
|
+
try {
|
|
68
|
+
const id = await initOtp({
|
|
69
|
+
otpType,
|
|
70
|
+
contact
|
|
71
|
+
});
|
|
72
|
+
setOtpId(id);
|
|
73
|
+
setResent(true);
|
|
74
|
+
} catch (error) {
|
|
75
|
+
throw new Error(`Error resending OTP: ${error}`);
|
|
76
|
+
} finally {
|
|
77
|
+
setResending(false);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
return jsxRuntime.jsxs("div", {
|
|
81
|
+
className: clsx("flex items-center justify-center py-3", isMobile ? "w-full" : "min-w-96"),
|
|
82
|
+
children: [jsxRuntime.jsxs("div", {
|
|
83
|
+
className: `flex flex-col items-center justify-center gap-6 transition-all duration-300 ${submitting && "opacity-30 blur"}`,
|
|
84
|
+
children: [jsxRuntime.jsx(reactFontawesome.FontAwesomeIcon, {
|
|
85
|
+
size: "3x",
|
|
86
|
+
icon: otpType === core.OtpType.Email ? freeSolidSvgIcons.faEnvelope : otpType === core.OtpType.Sms ? freeSolidSvgIcons.faPhone : freeSolidSvgIcons.faEnvelope
|
|
87
|
+
}), jsxRuntime.jsxs("div", {
|
|
88
|
+
className: "flex flex-col text-center",
|
|
89
|
+
children: [jsxRuntime.jsx("span", {
|
|
90
|
+
className: "text-lg font-medium",
|
|
91
|
+
children: `Enter the ${otpLength}-digit code we sent to`
|
|
92
|
+
}), jsxRuntime.jsx("span", {
|
|
93
|
+
className: "text-base font-semibold",
|
|
94
|
+
children: formattedContact ?? contact
|
|
95
|
+
})]
|
|
96
|
+
}), jsxRuntime.jsx("div", {
|
|
97
|
+
className: `transition-all flex justify-center ${shaking ? "animate-shake" : ""}`,
|
|
98
|
+
children: jsxRuntime.jsx(OtpInput, {
|
|
99
|
+
otpLength: otpLength,
|
|
100
|
+
onContinue: handleContinue,
|
|
101
|
+
alphanumeric: alphanumeric
|
|
102
|
+
})
|
|
103
|
+
}), error && jsxRuntime.jsx("div", {
|
|
104
|
+
className: "text-red-400 text-center text-sm",
|
|
105
|
+
children: error
|
|
106
|
+
}), jsxRuntime.jsx(Buttons.BaseButton, {
|
|
107
|
+
onClick: handleResend,
|
|
108
|
+
disabled: resending || resent,
|
|
109
|
+
className: `text-xs text-inherit font-semibold bg-transparent border-none ${resent && "opacity-30"}`,
|
|
110
|
+
children: resending ? jsxRuntime.jsxs("span", {
|
|
111
|
+
className: "flex items-center gap-2.5",
|
|
112
|
+
children: [jsxRuntime.jsx(Spinners.Spinner, {
|
|
113
|
+
className: "size-3"
|
|
114
|
+
}), "Resending..."]
|
|
115
|
+
}) : resent ? "Code sent!" : "Resend Code"
|
|
116
|
+
})]
|
|
117
|
+
}), submitting && jsxRuntime.jsx("div", {
|
|
118
|
+
className: "absolute flex w-full h-full justify-center items-center",
|
|
119
|
+
children: jsxRuntime.jsx(Spinners.Spinner, {
|
|
120
|
+
strokeWidth: 1,
|
|
121
|
+
className: "size-1/2"
|
|
122
|
+
})
|
|
123
|
+
})]
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
function OtpInput(props) {
|
|
127
|
+
const {
|
|
128
|
+
otpLength,
|
|
129
|
+
onContinue,
|
|
130
|
+
alphanumeric = false
|
|
131
|
+
} = props;
|
|
132
|
+
const {
|
|
133
|
+
isMobile
|
|
134
|
+
} = Hook$1.useModal();
|
|
135
|
+
const [values, setValues] = react.useState(Array(otpLength).fill(""));
|
|
136
|
+
const inputsRef = react.useRef([]);
|
|
137
|
+
const handleChange = (index, value) => {
|
|
138
|
+
if (!alphanumeric) value = value.replace(/[^0-9]/g, "");else value = value.replace(/[^a-zA-Z0-9]/g, "");
|
|
139
|
+
const newValues = [...values];
|
|
140
|
+
newValues[index] = value.slice(-1); // only last char
|
|
141
|
+
setValues(newValues);
|
|
142
|
+
if (value && index < otpLength - 1) {
|
|
143
|
+
inputsRef.current[index + 1]?.focus();
|
|
144
|
+
}
|
|
145
|
+
if (value && newValues.every(v => v)) {
|
|
146
|
+
onContinue(newValues.join(""));
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
const handleKeyDown = (e, index) => {
|
|
150
|
+
if (e.key === "Backspace" && !values[index] && index > 0) {
|
|
151
|
+
inputsRef.current[index - 1]?.focus();
|
|
152
|
+
}
|
|
153
|
+
if (e.key === "ArrowLeft" && index > 0) {
|
|
154
|
+
inputsRef.current[index - 1]?.focus();
|
|
155
|
+
}
|
|
156
|
+
if (e.key === "ArrowRight" && index < otpLength - 1) {
|
|
157
|
+
inputsRef.current[index + 1]?.focus();
|
|
158
|
+
}
|
|
159
|
+
if (e.key === "Enter") {
|
|
160
|
+
onContinue(values.join(""));
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
const handlePaste = e => {
|
|
164
|
+
e.preventDefault();
|
|
165
|
+
const paste = e.clipboardData.getData("text").trim();
|
|
166
|
+
const cleaned = alphanumeric ? paste.replace(/[^a-zA-Z0-9]/g, "") : paste.replace(/[^0-9]/g, "");
|
|
167
|
+
const sliced = cleaned.slice(0, otpLength).split("");
|
|
168
|
+
const newValues = [...values];
|
|
169
|
+
for (let i = 0; i < sliced.length; i++) {
|
|
170
|
+
newValues[i] = sliced[i] ?? "";
|
|
171
|
+
if (inputsRef.current[i]) {
|
|
172
|
+
inputsRef.current[i].value = sliced[i] ?? "";
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
setValues(newValues);
|
|
176
|
+
// Focus the last filled box
|
|
177
|
+
const lastIndex = Math.min(sliced.length, otpLength - 1);
|
|
178
|
+
inputsRef.current[lastIndex]?.focus();
|
|
179
|
+
onContinue(newValues.join(""));
|
|
180
|
+
};
|
|
181
|
+
return jsxRuntime.jsx("div", {
|
|
182
|
+
className: clsx("flex items-center justify-center space-x-2", isMobile ? "w-[95%]" : "w-full"),
|
|
183
|
+
children: Array.from({
|
|
184
|
+
length: otpLength
|
|
185
|
+
}).map((_, i) => {
|
|
186
|
+
return jsxRuntime.jsx(react$1.Input, {
|
|
187
|
+
type: alphanumeric ? "text" : "text",
|
|
188
|
+
inputMode: alphanumeric ? "text" : "numeric",
|
|
189
|
+
maxLength: 1,
|
|
190
|
+
value: values[i]?.toUpperCase(),
|
|
191
|
+
autoComplete: "off",
|
|
192
|
+
onChange: e => handleChange(i, e.target.value.toUpperCase()),
|
|
193
|
+
onKeyDown: e => handleKeyDown(e, i),
|
|
194
|
+
onPaste: handlePaste,
|
|
195
|
+
ref: el => inputsRef.current[i] = el,
|
|
196
|
+
className: clsx("text-center text-lg rounded-md border border-modal-background-dark/20 dark:border-modal-background-light/20 bg-button-light dark:bg-button-dark text-inherit focus:outline-primary-light focus:dark:outline-primary-dark focus:outline-[1px] focus:outline-offset-0 transition-all", isMobile ? "w-full h-10" : "h-12 w-12")
|
|
197
|
+
}, i);
|
|
198
|
+
})
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
exports.OtpInput = OtpInput;
|
|
203
|
+
exports.OtpVerification = OtpVerification;
|
|
204
|
+
//# sourceMappingURL=OTP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OTP.js","sources":["../../../src/components/auth/OTP.tsx"],"sourcesContent":[null],"names":["OtpVerification","props","contact","otpType","otpLength","alphanumeric","formattedContact","onContinue","initOtp","completeOtp","useTurnkey","closeModal","isMobile","useModal","submitting","setSubmitting","useState","resending","setResending","resent","setResent","otpId","setOtpId","error","setError","shaking","setShaking","shakeInput","setTimeout","handleContinue","otpCode","niceError","message","includes","Error","handleResend","id","_jsxs","className","clsx","children","_jsx","FontAwesomeIcon","size","icon","OtpType","Email","faEnvelope","Sms","faPhone","OtpInput","BaseButton","onClick","disabled","Spinner","strokeWidth","values","setValues","Array","fill","inputsRef","useRef","handleChange","index","value","replace","newValues","slice","current","focus","every","v","join","handleKeyDown","e","key","handlePaste","preventDefault","paste","clipboardData","getData","trim","cleaned","sliced","split","i","length","lastIndex","Math","min","from","map","_","Input","type","inputMode","maxLength","toUpperCase","autoComplete","onChange","target","onKeyDown","onPaste","ref","el"],"mappings":"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"}
|