@cedros/login-react 0.0.41 → 0.0.42
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/{AuthenticationSettings-D4ExU-2a.js → AuthenticationSettings-CheE3j7w.js} +1 -1
- package/dist/{AuthenticationSettings-D4ExU-2a.js.map → AuthenticationSettings-CheE3j7w.js.map} +1 -1
- package/dist/{AuthenticationSettings-Cu5Z2mTC.cjs → AuthenticationSettings-Dl41GbJL.cjs} +1 -1
- package/dist/{AuthenticationSettings-Cu5Z2mTC.cjs.map → AuthenticationSettings-Dl41GbJL.cjs.map} +1 -1
- package/dist/{AuthenticationSettings-CSoFp-_2.js → AuthenticationSettings-DwSxgjbH.js} +1 -1
- package/dist/{AuthenticationSettings-CSoFp-_2.js.map → AuthenticationSettings-DwSxgjbH.js.map} +1 -1
- package/dist/{AuthenticationSettings-DABzZHuI.cjs → AuthenticationSettings-JxHsBst9.cjs} +1 -1
- package/dist/{AuthenticationSettings-DABzZHuI.cjs.map → AuthenticationSettings-JxHsBst9.cjs.map} +1 -1
- package/dist/AutosaveStatus-BMXjH1XN.cjs +1 -0
- package/dist/AutosaveStatus-BMXjH1XN.cjs.map +1 -0
- package/dist/{AutosaveStatus-DMjvXzP2.js → AutosaveStatus-DNuCl59W.js} +578 -284
- package/dist/AutosaveStatus-DNuCl59W.js.map +1 -0
- package/dist/{CreditSystemSettings-DfSfQVE8.cjs → CreditSystemSettings-BVgl6uUg.cjs} +1 -1
- package/dist/{CreditSystemSettings-DfSfQVE8.cjs.map → CreditSystemSettings-BVgl6uUg.cjs.map} +1 -1
- package/dist/{CreditSystemSettings-Du3ac0ID.js → CreditSystemSettings-C-ksysSx.js} +1 -1
- package/dist/{CreditSystemSettings-Du3ac0ID.js.map → CreditSystemSettings-C-ksysSx.js.map} +1 -1
- package/dist/{CreditSystemSettings-BjQdysRS.js → CreditSystemSettings-HSdF2_CY.js} +1 -1
- package/dist/{CreditSystemSettings-BjQdysRS.js.map → CreditSystemSettings-HSdF2_CY.js.map} +1 -1
- package/dist/{CreditSystemSettings-BWuiRTtA.cjs → CreditSystemSettings-LvA8rb17.cjs} +1 -1
- package/dist/{CreditSystemSettings-BWuiRTtA.cjs.map → CreditSystemSettings-LvA8rb17.cjs.map} +1 -1
- package/dist/{EmailRegisterForm-CMXsa-_r.js → EmailRegisterForm-p2X5QP58.js} +147 -147
- package/dist/EmailRegisterForm-p2X5QP58.js.map +1 -0
- package/dist/EmailRegisterForm-xFb6MaVA.cjs +1 -0
- package/dist/EmailRegisterForm-xFb6MaVA.cjs.map +1 -0
- package/dist/{EmailSettings-CjngJwDS.js → EmailSettings-Cy1cuVUq.js} +1 -1
- package/dist/{EmailSettings-CjngJwDS.js.map → EmailSettings-Cy1cuVUq.js.map} +1 -1
- package/dist/{EmailSettings-BcHo0cqk.cjs → EmailSettings-DC_zT4nI.cjs} +1 -1
- package/dist/{EmailSettings-BcHo0cqk.cjs.map → EmailSettings-DC_zT4nI.cjs.map} +1 -1
- package/dist/{EmailSettings-CswtKXhb.cjs → EmailSettings-QBMzpbxv.cjs} +1 -1
- package/dist/{EmailSettings-CswtKXhb.cjs.map → EmailSettings-QBMzpbxv.cjs.map} +1 -1
- package/dist/{EmailSettings-ASDHfI0K.js → EmailSettings-hIhJzux0.js} +1 -1
- package/dist/{EmailSettings-ASDHfI0K.js.map → EmailSettings-hIhJzux0.js.map} +1 -1
- package/dist/{EmbeddedWalletSettings-BkwIbTkL.cjs → EmbeddedWalletSettings-4qC9KBwh.cjs} +1 -1
- package/dist/{EmbeddedWalletSettings-BkwIbTkL.cjs.map → EmbeddedWalletSettings-4qC9KBwh.cjs.map} +1 -1
- package/dist/{EmbeddedWalletSettings-BXlboZ9-.cjs → EmbeddedWalletSettings-C81QQMWz.cjs} +1 -1
- package/dist/{EmbeddedWalletSettings-BXlboZ9-.cjs.map → EmbeddedWalletSettings-C81QQMWz.cjs.map} +1 -1
- package/dist/{EmbeddedWalletSettings-CPLbqlxJ.js → EmbeddedWalletSettings-CvvTnRvt.js} +1 -1
- package/dist/{EmbeddedWalletSettings-CPLbqlxJ.js.map → EmbeddedWalletSettings-CvvTnRvt.js.map} +1 -1
- package/dist/{EmbeddedWalletSettings-CUY_X7Vj.js → EmbeddedWalletSettings-Cwiug0vR.js} +1 -1
- package/dist/{EmbeddedWalletSettings-CUY_X7Vj.js.map → EmbeddedWalletSettings-Cwiug0vR.js.map} +1 -1
- package/dist/GoogleLoginButton-2zNTIKMm.cjs +1 -0
- package/dist/GoogleLoginButton-2zNTIKMm.cjs.map +1 -0
- package/dist/{GoogleLoginButton-qf4A_A3G.js → GoogleLoginButton-C1WNu7W3.js} +41 -40
- package/dist/GoogleLoginButton-C1WNu7W3.js.map +1 -0
- package/dist/LoadingSpinner-6vml-zwr.js.map +1 -1
- package/dist/LoadingSpinner-d6sSxgQN.cjs.map +1 -1
- package/dist/{PermissionsSection-BeFhIgQy.js → PermissionsSection-BDDiEfho.js} +81 -77
- package/dist/{PermissionsSection-BeFhIgQy.js.map → PermissionsSection-BDDiEfho.js.map} +1 -1
- package/dist/PermissionsSection-CSB_Ikj9.cjs +1 -0
- package/dist/{PermissionsSection-B-6DJnN8.cjs.map → PermissionsSection-CSB_Ikj9.cjs.map} +1 -1
- package/dist/{ServerSettings-BygCxOTY.cjs → ServerSettings-BV0SipW1.cjs} +1 -1
- package/dist/{ServerSettings-BygCxOTY.cjs.map → ServerSettings-BV0SipW1.cjs.map} +1 -1
- package/dist/{ServerSettings-CgBdYspU.cjs → ServerSettings-Bf7gFE8r.cjs} +1 -1
- package/dist/{ServerSettings-CgBdYspU.cjs.map → ServerSettings-Bf7gFE8r.cjs.map} +1 -1
- package/dist/{ServerSettings-BLoWX7KG.js → ServerSettings-DPqHtsgV.js} +1 -1
- package/dist/{ServerSettings-BLoWX7KG.js.map → ServerSettings-DPqHtsgV.js.map} +1 -1
- package/dist/{ServerSettings-B9PNMse1.js → ServerSettings-Sfr0CG6K.js} +1 -1
- package/dist/{ServerSettings-B9PNMse1.js.map → ServerSettings-Sfr0CG6K.js.map} +1 -1
- package/dist/SolanaLoginButton-CqdzSSeJ.cjs +1 -0
- package/dist/SolanaLoginButton-CqdzSSeJ.cjs.map +1 -0
- package/dist/{SolanaLoginButton-B04dib6X.js → SolanaLoginButton-CyeX35eU.js} +41 -40
- package/dist/SolanaLoginButton-CyeX35eU.js.map +1 -0
- package/dist/{TeamSection-DbSYDRdI.js → TeamSection-BhsBEckR.js} +1 -1
- package/dist/{TeamSection-DbSYDRdI.js.map → TeamSection-BhsBEckR.js.map} +1 -1
- package/dist/{TeamSection-B1t1tU-_.cjs → TeamSection-DLxtRmta.cjs} +1 -1
- package/dist/{TeamSection-B1t1tU-_.cjs.map → TeamSection-DLxtRmta.cjs.map} +1 -1
- package/dist/{UsersSection-C7aRNkK2.cjs → UsersSection-BEKfbhQ4.cjs} +1 -1
- package/dist/{UsersSection-C7aRNkK2.cjs.map → UsersSection-BEKfbhQ4.cjs.map} +1 -1
- package/dist/{UsersSection--PAE1XRh.js → UsersSection-DbGkmxty.js} +1 -1
- package/dist/{UsersSection--PAE1XRh.js.map → UsersSection-DbGkmxty.js.map} +1 -1
- package/dist/{WebhookSettings-D19u9Uok.cjs → WebhookSettings-BPCKv5Or.cjs} +1 -1
- package/dist/{WebhookSettings-D19u9Uok.cjs.map → WebhookSettings-BPCKv5Or.cjs.map} +1 -1
- package/dist/{WebhookSettings-C923ZSKa.js → WebhookSettings-CMROMCFT.js} +1 -1
- package/dist/{WebhookSettings-C923ZSKa.js.map → WebhookSettings-CMROMCFT.js.map} +1 -1
- package/dist/{WebhookSettings-CbU3cfTJ.cjs → WebhookSettings-Cj-iELGa.cjs} +1 -1
- package/dist/{WebhookSettings-CbU3cfTJ.cjs.map → WebhookSettings-Cj-iELGa.cjs.map} +1 -1
- package/dist/{WebhookSettings-C-7Yxueu.js → WebhookSettings-D4mKAWAg.js} +1 -1
- package/dist/{WebhookSettings-C-7Yxueu.js.map → WebhookSettings-D4mKAWAg.js.map} +1 -1
- package/dist/admin-only.cjs +1 -1
- package/dist/admin-only.js +1 -1
- package/dist/email-only.cjs +1 -1
- package/dist/email-only.d.ts +6 -0
- package/dist/email-only.js +2 -2
- package/dist/google-only.cjs +1 -1
- package/dist/google-only.d.ts +6 -0
- package/dist/google-only.js +2 -2
- package/dist/index.cjs +13 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +411 -1
- package/dist/index.js +5175 -4054
- package/dist/index.js.map +1 -1
- package/dist/plugin-BHGg7ius.cjs +1 -0
- package/dist/plugin-BHGg7ius.cjs.map +1 -0
- package/dist/{plugin-BiftIhZe.js → plugin-CK2d7aP5.js} +3 -2
- package/dist/plugin-CK2d7aP5.js.map +1 -0
- package/dist/solana-only.cjs +1 -1
- package/dist/solana-only.d.ts +6 -0
- package/dist/solana-only.js +2 -2
- package/dist/useAuth-B1yS_YiD.cjs +1 -0
- package/dist/{useAuth-U5CYsHEU.cjs.map → useAuth-B1yS_YiD.cjs.map} +1 -1
- package/dist/{useAuth-C-Vw-ggy.js → useAuth-l-itM5am.js} +440 -433
- package/dist/{useAuth-C-Vw-ggy.js.map → useAuth-l-itM5am.js.map} +1 -1
- package/dist/useUsersStatsSummary-9HQDKBU5.js +1879 -0
- package/dist/useUsersStatsSummary-9HQDKBU5.js.map +1 -0
- package/dist/useUsersStatsSummary-DiRC8sGs.cjs +1 -0
- package/dist/useUsersStatsSummary-DiRC8sGs.cjs.map +1 -0
- package/package.json +1 -1
- package/dist/AutosaveStatus-B1A1zORa.cjs +0 -1
- package/dist/AutosaveStatus-B1A1zORa.cjs.map +0 -1
- package/dist/AutosaveStatus-DMjvXzP2.js.map +0 -1
- package/dist/EmailRegisterForm-CMXsa-_r.js.map +0 -1
- package/dist/EmailRegisterForm-i7f4St2N.cjs +0 -1
- package/dist/EmailRegisterForm-i7f4St2N.cjs.map +0 -1
- package/dist/GoogleLoginButton-JtRViYWS.cjs +0 -1
- package/dist/GoogleLoginButton-JtRViYWS.cjs.map +0 -1
- package/dist/GoogleLoginButton-qf4A_A3G.js.map +0 -1
- package/dist/PermissionsSection-B-6DJnN8.cjs +0 -1
- package/dist/SolanaLoginButton-B04dib6X.js.map +0 -1
- package/dist/SolanaLoginButton-nSJHVFpZ.cjs +0 -1
- package/dist/SolanaLoginButton-nSJHVFpZ.cjs.map +0 -1
- package/dist/plugin-BiftIhZe.js.map +0 -1
- package/dist/plugin-BtQdI_Ay.cjs +0 -1
- package/dist/plugin-BtQdI_Ay.cjs.map +0 -1
- package/dist/useAuth-U5CYsHEU.cjs +0 -1
- package/dist/useUsersStatsSummary-5DJwzntC.js +0 -1246
- package/dist/useUsersStatsSummary-5DJwzntC.js.map +0 -1
- package/dist/useUsersStatsSummary-DgKaUIfs.cjs +0 -1
- package/dist/useUsersStatsSummary-DgKaUIfs.cjs.map +0 -1
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
import { jsxs as f, jsx as t, Fragment as
|
|
1
|
+
import { jsxs as f, jsx as t, Fragment as L } from "react/jsx-runtime";
|
|
2
2
|
import { useRef as F, useState as w, useCallback as E, useEffect as M, useMemo as z, useId as W } from "react";
|
|
3
3
|
import { L as O } from "./LoadingSpinner-6vml-zwr.js";
|
|
4
4
|
import { E as j } from "./ErrorMessage-CcEK0pYO.js";
|
|
5
5
|
import { u as U, A as H, h as P } from "./useCedrosLogin-CFfID-0i.js";
|
|
6
6
|
import { b as B, v as ce } from "./validation-B8kMV3BL.js";
|
|
7
7
|
import { s as ie } from "./sanitization-CQ-H1MSg.js";
|
|
8
|
-
function K(
|
|
9
|
-
const { maxAttempts:
|
|
10
|
-
b((
|
|
11
|
-
}, []),
|
|
12
|
-
const
|
|
13
|
-
|
|
8
|
+
function K(i = {}) {
|
|
9
|
+
const { maxAttempts: u = 5, windowMs: C = 6e4, showCountdown: p = !1 } = i, m = F([]), [o, v] = w(!1), [, b] = w(0), d = E(() => {
|
|
10
|
+
b((c) => c + 1);
|
|
11
|
+
}, []), l = E(() => {
|
|
12
|
+
const c = Date.now();
|
|
13
|
+
m.current = m.current.filter((e) => c - e < C);
|
|
14
14
|
}, [C]), g = E(() => {
|
|
15
|
-
|
|
16
|
-
}, [
|
|
17
|
-
if (
|
|
15
|
+
l(), v((c) => m.current.length === 0 && c ? !1 : c);
|
|
16
|
+
}, [l]), a = E(() => (l(), Math.max(0, u - m.current.length)), [l, u]), h = E(() => {
|
|
17
|
+
if (l(), m.current.length === 0)
|
|
18
18
|
return 0;
|
|
19
|
-
const e =
|
|
19
|
+
const e = m.current[0] + C;
|
|
20
20
|
return Math.max(0, e - Date.now());
|
|
21
|
-
}, [
|
|
22
|
-
if (g(),
|
|
23
|
-
const
|
|
21
|
+
}, [l, C]), k = E(() => (l(), m.current.length < u), [l, u]), N = E(() => {
|
|
22
|
+
if (g(), m.current.length >= u) {
|
|
23
|
+
const c = h(), e = Math.ceil(c / 1e3);
|
|
24
24
|
throw new Error(
|
|
25
25
|
`Too many attempts. Please wait ${e} second${e === 1 ? "" : "s"} before trying again.`
|
|
26
26
|
);
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
}, [g,
|
|
30
|
-
|
|
31
|
-
}, [
|
|
28
|
+
m.current.push(Date.now()), v((c) => c || !0), d();
|
|
29
|
+
}, [g, u, h, d]), y = E(() => {
|
|
30
|
+
m.current = [], v((c) => c && !1), d();
|
|
31
|
+
}, [d]);
|
|
32
32
|
return M(() => {
|
|
33
33
|
if (!o || !p) return;
|
|
34
|
-
const
|
|
35
|
-
g(),
|
|
34
|
+
const c = window.setInterval(() => {
|
|
35
|
+
g(), d();
|
|
36
36
|
}, 1e3);
|
|
37
37
|
return () => {
|
|
38
|
-
window.clearInterval(
|
|
38
|
+
window.clearInterval(c);
|
|
39
39
|
};
|
|
40
|
-
}, [o, p,
|
|
40
|
+
}, [o, p, d, g]), {
|
|
41
41
|
checkLimit: N,
|
|
42
42
|
isAllowed: k,
|
|
43
43
|
getRemainingAttempts: a,
|
|
@@ -45,24 +45,24 @@ function K(c = {}) {
|
|
|
45
45
|
reset: y
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
|
-
function le(
|
|
49
|
-
return "mfaRequired" in
|
|
48
|
+
function le(i) {
|
|
49
|
+
return "mfaRequired" in i && i.mfaRequired === !0;
|
|
50
50
|
}
|
|
51
51
|
function Z() {
|
|
52
|
-
const { config:
|
|
52
|
+
const { config: i, _internal: u } = U(), [C, p] = w(!1), [m, o] = w(null), {
|
|
53
53
|
checkLimit: v,
|
|
54
54
|
getRemainingAttempts: b,
|
|
55
|
-
getTimeUntilReset:
|
|
56
|
-
reset:
|
|
55
|
+
getTimeUntilReset: d,
|
|
56
|
+
reset: l
|
|
57
57
|
} = K({ maxAttempts: 5, windowMs: 6e4 }), g = z(
|
|
58
58
|
() => new H({
|
|
59
|
-
baseUrl:
|
|
60
|
-
timeoutMs:
|
|
61
|
-
retryAttempts:
|
|
59
|
+
baseUrl: i.serverUrl,
|
|
60
|
+
timeoutMs: i.requestTimeout,
|
|
61
|
+
retryAttempts: i.retryAttempts
|
|
62
62
|
}),
|
|
63
|
-
[
|
|
64
|
-
), a =
|
|
65
|
-
async (y,
|
|
63
|
+
[i.serverUrl, i.requestTimeout, i.retryAttempts]
|
|
64
|
+
), a = i.callbacks, h = E(
|
|
65
|
+
async (y, c) => {
|
|
66
66
|
if (!B(y)) {
|
|
67
67
|
const e = {
|
|
68
68
|
code: "VALIDATION_ERROR",
|
|
@@ -83,7 +83,7 @@ function Z() {
|
|
|
83
83
|
try {
|
|
84
84
|
const e = await g.post("/login", {
|
|
85
85
|
email: y,
|
|
86
|
-
password:
|
|
86
|
+
password: c
|
|
87
87
|
});
|
|
88
88
|
if (le(e))
|
|
89
89
|
return {
|
|
@@ -93,7 +93,7 @@ function Z() {
|
|
|
93
93
|
userId: e.userId
|
|
94
94
|
};
|
|
95
95
|
const r = e;
|
|
96
|
-
return a?.onLoginSuccess?.(r.user, "email"),
|
|
96
|
+
return a?.onLoginSuccess?.(r.user, "email"), u?.handleLoginSuccess(r.user, r.tokens), l(), {
|
|
97
97
|
mfaRequired: !1,
|
|
98
98
|
response: r
|
|
99
99
|
};
|
|
@@ -104,9 +104,9 @@ function Z() {
|
|
|
104
104
|
p(!1);
|
|
105
105
|
}
|
|
106
106
|
},
|
|
107
|
-
[g, a,
|
|
107
|
+
[g, a, u, v, l]
|
|
108
108
|
), k = E(
|
|
109
|
-
async (y,
|
|
109
|
+
async (y, c, e, r) => {
|
|
110
110
|
if (!B(y)) {
|
|
111
111
|
const s = {
|
|
112
112
|
code: "VALIDATION_ERROR",
|
|
@@ -117,54 +117,54 @@ function Z() {
|
|
|
117
117
|
try {
|
|
118
118
|
v();
|
|
119
119
|
} catch (s) {
|
|
120
|
-
const
|
|
120
|
+
const n = {
|
|
121
121
|
code: "RATE_LIMITED",
|
|
122
122
|
message: s instanceof Error ? s.message : "Too many attempts"
|
|
123
123
|
};
|
|
124
|
-
throw o(
|
|
124
|
+
throw o(n), n;
|
|
125
125
|
}
|
|
126
126
|
p(!0), o(null);
|
|
127
127
|
try {
|
|
128
|
-
const s = await g.post("/register", { email: y, password:
|
|
129
|
-
return a?.onLoginSuccess?.(
|
|
128
|
+
const s = r ?? u?.getReferralCode?.() ?? void 0, n = await g.post("/register", { email: y, password: c, name: e, referral: s });
|
|
129
|
+
return a?.onLoginSuccess?.(n.user, "email"), u?.handleLoginSuccess(n.user, n.tokens), l(), n;
|
|
130
130
|
} catch (s) {
|
|
131
|
-
const
|
|
132
|
-
throw o(
|
|
131
|
+
const n = P(s, "Unable to create your account. Please try again.");
|
|
132
|
+
throw o(n), n;
|
|
133
133
|
} finally {
|
|
134
134
|
p(!1);
|
|
135
135
|
}
|
|
136
136
|
},
|
|
137
|
-
[g, a,
|
|
137
|
+
[g, a, u, v, l]
|
|
138
138
|
), N = E(() => o(null), []);
|
|
139
139
|
return {
|
|
140
140
|
login: h,
|
|
141
141
|
register: k,
|
|
142
142
|
isLoading: C,
|
|
143
|
-
error:
|
|
143
|
+
error: m,
|
|
144
144
|
clearError: N,
|
|
145
145
|
// M-10: Point-in-time snapshots for UI display (see interface JSDoc)
|
|
146
146
|
remainingAttempts: b(),
|
|
147
|
-
timeUntilReset:
|
|
147
|
+
timeUntilReset: d()
|
|
148
148
|
};
|
|
149
149
|
}
|
|
150
150
|
function q({
|
|
151
|
-
label:
|
|
152
|
-
labelAction:
|
|
151
|
+
label: i = "Password",
|
|
152
|
+
labelAction: u,
|
|
153
153
|
showStrengthMeter: C = !1,
|
|
154
154
|
onValidationChange: p,
|
|
155
|
-
error:
|
|
155
|
+
error: m,
|
|
156
156
|
className: o = "",
|
|
157
157
|
onChange: v,
|
|
158
158
|
value: b,
|
|
159
|
-
...
|
|
159
|
+
...d
|
|
160
160
|
}) {
|
|
161
|
-
const [
|
|
162
|
-
const e =
|
|
161
|
+
const [l, g] = w(!1), [a, h] = w(null), k = W(), N = (c) => {
|
|
162
|
+
const e = c.target.value;
|
|
163
163
|
if (C || p) {
|
|
164
164
|
const r = ce(e);
|
|
165
165
|
h(r), p?.(r);
|
|
166
166
|
}
|
|
167
|
-
v?.(
|
|
167
|
+
v?.(c);
|
|
168
168
|
}, y = {
|
|
169
169
|
weak: "var(--cedros-destructive, #ef4444)",
|
|
170
170
|
fair: "var(--cedros-warning, #f59e0b)",
|
|
@@ -173,21 +173,21 @@ function q({
|
|
|
173
173
|
};
|
|
174
174
|
return /* @__PURE__ */ f("div", { className: `cedros-password-input ${o}`, children: [
|
|
175
175
|
/* @__PURE__ */ f("div", { className: "cedros-label-row", children: [
|
|
176
|
-
/* @__PURE__ */ t("label", { htmlFor: k, className: "cedros-label", children:
|
|
177
|
-
|
|
176
|
+
/* @__PURE__ */ t("label", { htmlFor: k, className: "cedros-label", children: i }),
|
|
177
|
+
u
|
|
178
178
|
] }),
|
|
179
179
|
/* @__PURE__ */ f("div", { className: "cedros-password-wrapper", children: [
|
|
180
180
|
/* @__PURE__ */ t(
|
|
181
181
|
"input",
|
|
182
182
|
{
|
|
183
183
|
id: k,
|
|
184
|
-
type:
|
|
184
|
+
type: l ? "text" : "password",
|
|
185
185
|
className: "cedros-input",
|
|
186
186
|
onChange: N,
|
|
187
187
|
value: b,
|
|
188
|
-
"aria-invalid":
|
|
189
|
-
"aria-describedby":
|
|
190
|
-
...
|
|
188
|
+
"aria-invalid": m ? "true" : void 0,
|
|
189
|
+
"aria-describedby": m ? `${k}-error` : void 0,
|
|
190
|
+
...d
|
|
191
191
|
}
|
|
192
192
|
),
|
|
193
193
|
/* @__PURE__ */ t(
|
|
@@ -195,10 +195,10 @@ function q({
|
|
|
195
195
|
{
|
|
196
196
|
type: "button",
|
|
197
197
|
className: "cedros-password-toggle",
|
|
198
|
-
onClick: () => g(!
|
|
199
|
-
"aria-label":
|
|
200
|
-
"aria-pressed":
|
|
201
|
-
children:
|
|
198
|
+
onClick: () => g(!l),
|
|
199
|
+
"aria-label": l ? "Hide password" : "Show password",
|
|
200
|
+
"aria-pressed": l,
|
|
201
|
+
children: l ? /* @__PURE__ */ f("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [
|
|
202
202
|
/* @__PURE__ */ t(
|
|
203
203
|
"path",
|
|
204
204
|
{
|
|
@@ -223,7 +223,7 @@ function q({
|
|
|
223
223
|
}
|
|
224
224
|
)
|
|
225
225
|
] }),
|
|
226
|
-
|
|
226
|
+
m && /* @__PURE__ */ t("p", { id: `${k}-error`, className: "cedros-input-error", children: m }),
|
|
227
227
|
C && a && b?.length > 0 && /* @__PURE__ */ f("div", { className: "cedros-password-strength", children: [
|
|
228
228
|
/* @__PURE__ */ t("div", { className: "cedros-strength-bar", children: /* @__PURE__ */ t(
|
|
229
229
|
"div",
|
|
@@ -240,104 +240,104 @@ function q({
|
|
|
240
240
|
] });
|
|
241
241
|
}
|
|
242
242
|
function de() {
|
|
243
|
-
const { config:
|
|
244
|
-
checkLimit:
|
|
245
|
-
getRemainingAttempts:
|
|
243
|
+
const { config: i, _internal: u } = U(), [C, p] = w("idle"), [m, o] = w(!1), [v, b] = w(null), {
|
|
244
|
+
checkLimit: d,
|
|
245
|
+
getRemainingAttempts: l,
|
|
246
246
|
getTimeUntilReset: g,
|
|
247
247
|
reset: a
|
|
248
248
|
} = K({ maxAttempts: 5, windowMs: 12e4 }), h = z(
|
|
249
249
|
() => new H({
|
|
250
|
-
baseUrl:
|
|
251
|
-
timeoutMs:
|
|
252
|
-
retryAttempts:
|
|
250
|
+
baseUrl: i.serverUrl,
|
|
251
|
+
timeoutMs: i.requestTimeout,
|
|
252
|
+
retryAttempts: i.retryAttempts
|
|
253
253
|
}),
|
|
254
|
-
[
|
|
254
|
+
[i.serverUrl, i.requestTimeout, i.retryAttempts]
|
|
255
255
|
), k = E(
|
|
256
|
-
async (
|
|
256
|
+
async (c, e) => {
|
|
257
257
|
const r = /^[A-Z0-9]{16}$/i.test(e) || /^[A-Z0-9]{4}(-[A-Z0-9]{4}){3}$/i.test(e);
|
|
258
258
|
if (!(/^\d{6}$/.test(e) || r)) {
|
|
259
|
-
const
|
|
259
|
+
const n = {
|
|
260
260
|
code: "VALIDATION_ERROR",
|
|
261
261
|
message: "Please enter a valid 6-digit code or recovery code"
|
|
262
262
|
};
|
|
263
|
-
throw b(
|
|
263
|
+
throw b(n), n;
|
|
264
264
|
}
|
|
265
265
|
try {
|
|
266
|
-
|
|
267
|
-
} catch (
|
|
268
|
-
const
|
|
266
|
+
d();
|
|
267
|
+
} catch (n) {
|
|
268
|
+
const R = {
|
|
269
269
|
code: "RATE_LIMITED",
|
|
270
|
-
message:
|
|
270
|
+
message: n instanceof Error ? n.message : "Too many attempts"
|
|
271
271
|
};
|
|
272
|
-
throw b(
|
|
272
|
+
throw b(R), R;
|
|
273
273
|
}
|
|
274
274
|
o(!0), b(null), p("verifying");
|
|
275
275
|
try {
|
|
276
|
-
const
|
|
277
|
-
return p("success"), a(),
|
|
278
|
-
} catch (
|
|
279
|
-
const
|
|
280
|
-
throw b(
|
|
276
|
+
const n = await h.post("/login/mfa", { mfaToken: c, code: e });
|
|
277
|
+
return p("success"), a(), u && n.user && n.tokens && u.handleLoginSuccess(n.user, n.tokens), n;
|
|
278
|
+
} catch (n) {
|
|
279
|
+
const R = P(n, "Incorrect verification code. Please check and try again.");
|
|
280
|
+
throw b(R), p("error"), R;
|
|
281
281
|
} finally {
|
|
282
282
|
o(!1);
|
|
283
283
|
}
|
|
284
284
|
},
|
|
285
|
-
[h,
|
|
285
|
+
[h, u, d, a]
|
|
286
286
|
), N = E(() => b(null), []), y = E(() => {
|
|
287
287
|
b(null), p("idle"), o(!1);
|
|
288
288
|
}, []);
|
|
289
289
|
return {
|
|
290
290
|
state: C,
|
|
291
|
-
isLoading:
|
|
291
|
+
isLoading: m,
|
|
292
292
|
error: v,
|
|
293
293
|
verifyTotp: k,
|
|
294
294
|
clearError: N,
|
|
295
295
|
reset: y,
|
|
296
296
|
// Point-in-time snapshots for UI display
|
|
297
|
-
remainingAttempts:
|
|
297
|
+
remainingAttempts: l(),
|
|
298
298
|
timeUntilReset: g()
|
|
299
299
|
};
|
|
300
300
|
}
|
|
301
301
|
const T = 6;
|
|
302
302
|
function ue({
|
|
303
|
-
value:
|
|
304
|
-
onChange:
|
|
303
|
+
value: i = "",
|
|
304
|
+
onChange: u,
|
|
305
305
|
onComplete: C,
|
|
306
306
|
disabled: p = !1,
|
|
307
|
-
error:
|
|
307
|
+
error: m,
|
|
308
308
|
autoFocus: o = !1,
|
|
309
309
|
className: v = ""
|
|
310
310
|
}) {
|
|
311
|
-
const b = F([]), [
|
|
311
|
+
const b = F([]), [d, l] = w(i.padEnd(T, "")), g = W();
|
|
312
312
|
M(() => {
|
|
313
|
-
i
|
|
314
|
-
}, [
|
|
313
|
+
l(i.padEnd(T, ""));
|
|
314
|
+
}, [i]);
|
|
315
315
|
const a = E((e) => {
|
|
316
316
|
e >= 0 && e < T && b.current[e]?.focus();
|
|
317
317
|
}, []), h = E(
|
|
318
318
|
(e) => {
|
|
319
319
|
const r = e.replace(/\D/g, "").slice(0, T);
|
|
320
|
-
|
|
320
|
+
l(r.padEnd(T, "")), u?.(r), r.length === T && C?.(r);
|
|
321
321
|
},
|
|
322
|
-
[
|
|
322
|
+
[u, C]
|
|
323
323
|
), k = E(
|
|
324
324
|
(e, r) => {
|
|
325
325
|
if (!/^\d?$/.test(r)) return;
|
|
326
|
-
const s =
|
|
326
|
+
const s = d.split("");
|
|
327
327
|
s[e] = r;
|
|
328
|
-
const
|
|
329
|
-
h(
|
|
328
|
+
const n = s.join("").replace(/ /g, "");
|
|
329
|
+
h(n), r && e < T - 1 && a(e + 1);
|
|
330
330
|
},
|
|
331
|
-
[
|
|
331
|
+
[d, h, a]
|
|
332
332
|
), N = E(
|
|
333
333
|
(e, r) => {
|
|
334
334
|
if (r.key === "Backspace") {
|
|
335
335
|
r.preventDefault();
|
|
336
|
-
const s =
|
|
336
|
+
const s = d.split("");
|
|
337
337
|
s[e] && s[e] !== " " ? (s[e] = " ", h(s.join("").replace(/ /g, ""))) : e > 0 && (s[e - 1] = " ", h(s.join("").replace(/ /g, "")), a(e - 1));
|
|
338
338
|
} else r.key === "ArrowLeft" && e > 0 ? (r.preventDefault(), a(e - 1)) : r.key === "ArrowRight" && e < T - 1 && (r.preventDefault(), a(e + 1));
|
|
339
339
|
},
|
|
340
|
-
[
|
|
340
|
+
[d, h, a]
|
|
341
341
|
), y = E(
|
|
342
342
|
(e) => {
|
|
343
343
|
e.preventDefault();
|
|
@@ -345,7 +345,7 @@ function ue({
|
|
|
345
345
|
s && (h(s), a(Math.min(s.length, T - 1)));
|
|
346
346
|
},
|
|
347
347
|
[h, a]
|
|
348
|
-
),
|
|
348
|
+
), c = E((e) => {
|
|
349
349
|
e.target.select();
|
|
350
350
|
}, []);
|
|
351
351
|
return M(() => {
|
|
@@ -362,43 +362,43 @@ function ue({
|
|
|
362
362
|
inputMode: "numeric",
|
|
363
363
|
pattern: "[0-9]*",
|
|
364
364
|
maxLength: 1,
|
|
365
|
-
className: `cedros-otp-slot ${
|
|
366
|
-
value:
|
|
365
|
+
className: `cedros-otp-slot ${m ? "cedros-otp-slot-error" : ""}`,
|
|
366
|
+
value: d[r] === " " ? "" : d[r] || "",
|
|
367
367
|
onChange: (s) => k(r, s.target.value),
|
|
368
368
|
onKeyDown: (s) => N(r, s),
|
|
369
369
|
onPaste: y,
|
|
370
|
-
onFocus:
|
|
370
|
+
onFocus: c,
|
|
371
371
|
disabled: p,
|
|
372
372
|
autoComplete: "one-time-code",
|
|
373
373
|
"aria-label": `Digit ${r + 1}`,
|
|
374
|
-
"aria-invalid":
|
|
374
|
+
"aria-invalid": m ? "true" : void 0
|
|
375
375
|
},
|
|
376
376
|
r
|
|
377
377
|
)) }),
|
|
378
|
-
|
|
378
|
+
m && /* @__PURE__ */ t("p", { className: "cedros-otp-error", role: "alert", children: m })
|
|
379
379
|
] });
|
|
380
380
|
}
|
|
381
381
|
function me({
|
|
382
|
-
mfaToken:
|
|
383
|
-
email:
|
|
382
|
+
mfaToken: i,
|
|
383
|
+
email: u,
|
|
384
384
|
onSuccess: C,
|
|
385
385
|
onBack: p,
|
|
386
|
-
className:
|
|
386
|
+
className: m = ""
|
|
387
387
|
}) {
|
|
388
|
-
const { verifyTotp: o, isLoading: v, error: b, clearError:
|
|
389
|
-
const s = r || (a ? k :
|
|
388
|
+
const { verifyTotp: o, isLoading: v, error: b, clearError: d } = de(), [l, g] = w(""), [a, h] = w(!1), [k, N] = w(""), y = async (r) => {
|
|
389
|
+
const s = r || (a ? k : l);
|
|
390
390
|
if (s)
|
|
391
391
|
try {
|
|
392
|
-
await o(
|
|
392
|
+
await o(i, s), C?.();
|
|
393
393
|
} catch {
|
|
394
394
|
a ? N("") : g("");
|
|
395
395
|
}
|
|
396
|
-
},
|
|
396
|
+
}, c = (r) => {
|
|
397
397
|
y(r);
|
|
398
398
|
}, e = () => {
|
|
399
|
-
h(!a),
|
|
399
|
+
h(!a), d(), g(""), N("");
|
|
400
400
|
};
|
|
401
|
-
return /* @__PURE__ */ f("div", { className: `cedros-totp-verify ${
|
|
401
|
+
return /* @__PURE__ */ f("div", { className: `cedros-totp-verify ${m}`, children: [
|
|
402
402
|
/* @__PURE__ */ f("div", { className: "cedros-totp-verify-header", children: [
|
|
403
403
|
/* @__PURE__ */ f(
|
|
404
404
|
"svg",
|
|
@@ -426,7 +426,7 @@ function me({
|
|
|
426
426
|
),
|
|
427
427
|
/* @__PURE__ */ t("h3", { className: "cedros-totp-title", children: "Two-factor authentication" }),
|
|
428
428
|
/* @__PURE__ */ t("p", { className: "cedros-totp-description", children: a ? "Enter one of your recovery codes to sign in." : "Enter the 6-digit code from your authenticator app." }),
|
|
429
|
-
|
|
429
|
+
u && /* @__PURE__ */ t("p", { className: "cedros-totp-email", children: u })
|
|
430
430
|
] }),
|
|
431
431
|
a ? /* @__PURE__ */ f("div", { className: "cedros-totp-backup-input", children: [
|
|
432
432
|
/* @__PURE__ */ t(
|
|
@@ -437,7 +437,7 @@ function me({
|
|
|
437
437
|
placeholder: "Enter recovery code",
|
|
438
438
|
value: k,
|
|
439
439
|
onChange: (r) => {
|
|
440
|
-
N(r.target.value.toUpperCase()),
|
|
440
|
+
N(r.target.value.toUpperCase()), d();
|
|
441
441
|
},
|
|
442
442
|
onKeyDown: (r) => {
|
|
443
443
|
r.key === "Enter" && k && y();
|
|
@@ -451,11 +451,11 @@ function me({
|
|
|
451
451
|
] }) : /* @__PURE__ */ t(
|
|
452
452
|
ue,
|
|
453
453
|
{
|
|
454
|
-
value:
|
|
454
|
+
value: l,
|
|
455
455
|
onChange: (r) => {
|
|
456
|
-
g(r),
|
|
456
|
+
g(r), d();
|
|
457
457
|
},
|
|
458
|
-
onComplete:
|
|
458
|
+
onComplete: c,
|
|
459
459
|
disabled: v,
|
|
460
460
|
error: b?.message,
|
|
461
461
|
autoFocus: !0
|
|
@@ -467,8 +467,8 @@ function me({
|
|
|
467
467
|
type: "button",
|
|
468
468
|
className: "cedros-button cedros-button-primary cedros-button-md cedros-button-full",
|
|
469
469
|
onClick: () => y(),
|
|
470
|
-
disabled: v || (a ? !k :
|
|
471
|
-
children: v ? /* @__PURE__ */ f(
|
|
470
|
+
disabled: v || (a ? !k : l.length !== 6),
|
|
471
|
+
children: v ? /* @__PURE__ */ f(L, { children: [
|
|
472
472
|
/* @__PURE__ */ t(O, { size: "sm" }),
|
|
473
473
|
/* @__PURE__ */ t("span", { children: "Verifying..." })
|
|
474
474
|
] }) : "Verify"
|
|
@@ -485,7 +485,7 @@ function me({
|
|
|
485
485
|
children: a ? "Use authenticator app" : "Use a recovery code"
|
|
486
486
|
}
|
|
487
487
|
),
|
|
488
|
-
p && /* @__PURE__ */ f(
|
|
488
|
+
p && /* @__PURE__ */ f(L, { children: [
|
|
489
489
|
/* @__PURE__ */ t("span", { className: "cedros-totp-verify-divider", children: "•" }),
|
|
490
490
|
/* @__PURE__ */ t(
|
|
491
491
|
"button",
|
|
@@ -502,20 +502,20 @@ function me({
|
|
|
502
502
|
] });
|
|
503
503
|
}
|
|
504
504
|
function ke({
|
|
505
|
-
onSuccess:
|
|
506
|
-
onSwitchToRegister:
|
|
505
|
+
onSuccess: i,
|
|
506
|
+
onSwitchToRegister: u,
|
|
507
507
|
onForgotPassword: C,
|
|
508
508
|
className: p = ""
|
|
509
509
|
}) {
|
|
510
|
-
const { login:
|
|
510
|
+
const { login: m, isLoading: o, error: v, clearError: b } = Z(), [d, l] = w(""), [g, a] = w(""), [h, k] = w(null), [N, y] = w(""), c = async (s) => {
|
|
511
511
|
s.preventDefault();
|
|
512
512
|
try {
|
|
513
|
-
const
|
|
514
|
-
|
|
513
|
+
const n = await m(d, g);
|
|
514
|
+
n.mfaRequired ? (k(n.mfaToken), y(n.email)) : i?.();
|
|
515
515
|
} catch {
|
|
516
516
|
}
|
|
517
517
|
}, e = () => {
|
|
518
|
-
k(null), y(""),
|
|
518
|
+
k(null), y(""), i?.();
|
|
519
519
|
}, r = () => {
|
|
520
520
|
k(null), y(""), a("");
|
|
521
521
|
};
|
|
@@ -528,7 +528,7 @@ function ke({
|
|
|
528
528
|
onBack: r,
|
|
529
529
|
className: p
|
|
530
530
|
}
|
|
531
|
-
) : /* @__PURE__ */ f("form", { onSubmit:
|
|
531
|
+
) : /* @__PURE__ */ f("form", { onSubmit: c, className: `cedros-form ${p}`, children: [
|
|
532
532
|
/* @__PURE__ */ f("div", { className: "cedros-form-field", children: [
|
|
533
533
|
/* @__PURE__ */ t("label", { htmlFor: "email", className: "cedros-label", children: "Email" }),
|
|
534
534
|
/* @__PURE__ */ t(
|
|
@@ -537,8 +537,8 @@ function ke({
|
|
|
537
537
|
id: "email",
|
|
538
538
|
type: "email",
|
|
539
539
|
className: "cedros-input",
|
|
540
|
-
value:
|
|
541
|
-
onChange: (s) =>
|
|
540
|
+
value: d,
|
|
541
|
+
onChange: (s) => l(s.target.value),
|
|
542
542
|
placeholder: "you@example.com",
|
|
543
543
|
required: !0,
|
|
544
544
|
"aria-required": "true",
|
|
@@ -573,27 +573,27 @@ function ke({
|
|
|
573
573
|
{
|
|
574
574
|
type: "submit",
|
|
575
575
|
className: "cedros-button cedros-button-primary cedros-button-md cedros-button-full",
|
|
576
|
-
disabled: o || !
|
|
576
|
+
disabled: o || !d || !g,
|
|
577
577
|
"aria-busy": o,
|
|
578
|
-
children: o ? /* @__PURE__ */ f(
|
|
578
|
+
children: o ? /* @__PURE__ */ f(L, { children: [
|
|
579
579
|
/* @__PURE__ */ t(O, { size: "sm", announce: !0, label: "Signing in" }),
|
|
580
580
|
/* @__PURE__ */ t("span", { children: "Signing in..." })
|
|
581
581
|
] }) : "Sign in"
|
|
582
582
|
}
|
|
583
583
|
),
|
|
584
|
-
|
|
584
|
+
u && /* @__PURE__ */ f("p", { className: "cedros-form-footer", children: [
|
|
585
585
|
"Don't have an account?",
|
|
586
586
|
" ",
|
|
587
|
-
/* @__PURE__ */ t("button", { type: "button", className: "cedros-link cedros-link-muted", onClick:
|
|
587
|
+
/* @__PURE__ */ t("button", { type: "button", className: "cedros-link cedros-link-muted", onClick: u, children: "Sign up" })
|
|
588
588
|
] })
|
|
589
589
|
] });
|
|
590
590
|
}
|
|
591
591
|
function Ce({
|
|
592
|
-
onSuccess:
|
|
593
|
-
onSwitchToLogin:
|
|
592
|
+
onSuccess: i,
|
|
593
|
+
onSwitchToLogin: u,
|
|
594
594
|
className: C = ""
|
|
595
595
|
}) {
|
|
596
|
-
const { config: p } = U(), { register:
|
|
596
|
+
const { config: p } = U(), { register: m, isLoading: o, error: v, clearError: b } = Z(), [d, l] = w(""), [g, a] = w(""), [h, k] = w(""), [N, y] = w(""), [c, e] = w(null), [r, s] = w(null), n = p.forms?.termsOfService, R = p.forms?.emailOptIn, D = n?.show ?? !1, I = n?.required ?? !0, Y = n?.defaultChecked ?? !1, $ = n?.label ?? "I agree to the Terms of Service", G = n?.url, x = ie(G), J = R?.show ?? !1, Q = R?.defaultChecked ?? !1, X = R?.label ?? "Send me updates and news", [S, ee] = w(Y), [te, re] = w(Q), V = h === N, se = c?.isValid ?? !1, _ = g && h && N && V && se && (!D || !I || S) && !o, oe = async (A) => {
|
|
597
597
|
if (A.preventDefault(), s(null), D && I && !S) {
|
|
598
598
|
s({
|
|
599
599
|
code: "VALIDATION_ERROR",
|
|
@@ -603,7 +603,7 @@ function Ce({
|
|
|
603
603
|
}
|
|
604
604
|
if (_)
|
|
605
605
|
try {
|
|
606
|
-
await
|
|
606
|
+
await m(g, h, d || void 0), i?.();
|
|
607
607
|
} catch {
|
|
608
608
|
}
|
|
609
609
|
}, ae = v || r, ne = () => {
|
|
@@ -621,8 +621,8 @@ function Ce({
|
|
|
621
621
|
id: "name",
|
|
622
622
|
type: "text",
|
|
623
623
|
className: "cedros-input",
|
|
624
|
-
value:
|
|
625
|
-
onChange: (A) =>
|
|
624
|
+
value: d,
|
|
625
|
+
onChange: (A) => l(A.target.value),
|
|
626
626
|
placeholder: "Your name",
|
|
627
627
|
autoComplete: "name",
|
|
628
628
|
disabled: o
|
|
@@ -687,7 +687,7 @@ function Ce({
|
|
|
687
687
|
}
|
|
688
688
|
),
|
|
689
689
|
/* @__PURE__ */ f("span", { className: "cedros-checkbox-text", children: [
|
|
690
|
-
x ? /* @__PURE__ */ f(
|
|
690
|
+
x ? /* @__PURE__ */ f(L, { children: [
|
|
691
691
|
$.replace("Terms of Service", "").trim() || "I agree to the",
|
|
692
692
|
" ",
|
|
693
693
|
/* @__PURE__ */ t(
|
|
@@ -725,16 +725,16 @@ function Ce({
|
|
|
725
725
|
className: "cedros-button cedros-button-primary cedros-button-md cedros-button-full",
|
|
726
726
|
disabled: !_,
|
|
727
727
|
"aria-busy": o,
|
|
728
|
-
children: o ? /* @__PURE__ */ f(
|
|
728
|
+
children: o ? /* @__PURE__ */ f(L, { children: [
|
|
729
729
|
/* @__PURE__ */ t(O, { size: "sm", announce: !0, label: "Creating account" }),
|
|
730
730
|
/* @__PURE__ */ t("span", { children: "Creating account..." })
|
|
731
731
|
] }) : "Create account"
|
|
732
732
|
}
|
|
733
733
|
),
|
|
734
|
-
|
|
734
|
+
u && /* @__PURE__ */ f("p", { className: "cedros-form-footer", children: [
|
|
735
735
|
"Already have an account?",
|
|
736
736
|
" ",
|
|
737
|
-
/* @__PURE__ */ t("button", { type: "button", className: "cedros-link cedros-link-muted", onClick:
|
|
737
|
+
/* @__PURE__ */ t("button", { type: "button", className: "cedros-link cedros-link-muted", onClick: u, children: "Sign in" })
|
|
738
738
|
] })
|
|
739
739
|
] });
|
|
740
740
|
}
|