@cedros/login-react 0.0.20 → 0.0.22
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-Cu0S0Z7s.cjs → AuthenticationSettings-C9f5MKgj.cjs} +1 -1
- package/dist/{AuthenticationSettings-Cu0S0Z7s.cjs.map → AuthenticationSettings-C9f5MKgj.cjs.map} +1 -1
- package/dist/{AuthenticationSettings-Cb80XWPm.cjs → AuthenticationSettings-D6GvSw3g.cjs} +1 -1
- package/dist/{AuthenticationSettings-Cb80XWPm.cjs.map → AuthenticationSettings-D6GvSw3g.cjs.map} +1 -1
- package/dist/{AuthenticationSettings-BipaLyGg.js → AuthenticationSettings-DC64o_J6.js} +1 -1
- package/dist/{AuthenticationSettings-BipaLyGg.js.map → AuthenticationSettings-DC64o_J6.js.map} +1 -1
- package/dist/{AuthenticationSettings-Cfn0No6U.js → AuthenticationSettings-rb4Fksw5.js} +1 -1
- package/dist/{AuthenticationSettings-Cfn0No6U.js.map → AuthenticationSettings-rb4Fksw5.js.map} +1 -1
- package/dist/AutosaveStatus-BFj5GIab.cjs +1 -0
- package/dist/AutosaveStatus-BFj5GIab.cjs.map +1 -0
- package/dist/{AutosaveStatus-BKc7T2Tw.js → AutosaveStatus-vkJxtuEw.js} +2 -2
- package/dist/AutosaveStatus-vkJxtuEw.js.map +1 -0
- package/dist/{CreditSystemSettings-DV0VkPIe.cjs → CreditSystemSettings-ChA_lbef.cjs} +1 -1
- package/dist/{CreditSystemSettings-DV0VkPIe.cjs.map → CreditSystemSettings-ChA_lbef.cjs.map} +1 -1
- package/dist/{CreditSystemSettings-CvcacgMM.js → CreditSystemSettings-DsRipb2R.js} +1 -1
- package/dist/{CreditSystemSettings-CvcacgMM.js.map → CreditSystemSettings-DsRipb2R.js.map} +1 -1
- package/dist/{CreditSystemSettings-D13lZbIw.js → CreditSystemSettings-a31pqSYS.js} +1 -1
- package/dist/{CreditSystemSettings-D13lZbIw.js.map → CreditSystemSettings-a31pqSYS.js.map} +1 -1
- package/dist/{CreditSystemSettings-DO-dUcxN.cjs → CreditSystemSettings-r3gnGjiU.cjs} +1 -1
- package/dist/{CreditSystemSettings-DO-dUcxN.cjs.map → CreditSystemSettings-r3gnGjiU.cjs.map} +1 -1
- package/dist/{EmailRegisterForm-CdTuvJmf.cjs → EmailRegisterForm-B1DB-bqe.cjs} +1 -1
- package/dist/{EmailRegisterForm-CdTuvJmf.cjs.map → EmailRegisterForm-B1DB-bqe.cjs.map} +1 -1
- package/dist/{EmailRegisterForm-CxOdldks.js → EmailRegisterForm-BAX_uBIt.js} +100 -100
- package/dist/{EmailRegisterForm-CxOdldks.js.map → EmailRegisterForm-BAX_uBIt.js.map} +1 -1
- package/dist/{EmailSettings-CLMdw3rB.js → EmailSettings-BVJ4vz0Y.js} +1 -1
- package/dist/{EmailSettings-CLMdw3rB.js.map → EmailSettings-BVJ4vz0Y.js.map} +1 -1
- package/dist/{EmailSettings-Dq3mfUr2.cjs → EmailSettings-CM5l8qqK.cjs} +1 -1
- package/dist/{EmailSettings-Dq3mfUr2.cjs.map → EmailSettings-CM5l8qqK.cjs.map} +1 -1
- package/dist/{EmailSettings-BkR7vlWL.cjs → EmailSettings-Dg2SAiHj.cjs} +1 -1
- package/dist/{EmailSettings-BkR7vlWL.cjs.map → EmailSettings-Dg2SAiHj.cjs.map} +1 -1
- package/dist/{EmailSettings-ulEHtH2y.js → EmailSettings-xtVl4kXD.js} +1 -1
- package/dist/{EmailSettings-ulEHtH2y.js.map → EmailSettings-xtVl4kXD.js.map} +1 -1
- package/dist/{EmbeddedWalletSettings-DGmCVyex.cjs → EmbeddedWalletSettings-BXN9VbNJ.cjs} +1 -1
- package/dist/{EmbeddedWalletSettings-DGmCVyex.cjs.map → EmbeddedWalletSettings-BXN9VbNJ.cjs.map} +1 -1
- package/dist/{EmbeddedWalletSettings-C7H0E8Uz.cjs → EmbeddedWalletSettings-Bmx8x21f.cjs} +1 -1
- package/dist/{EmbeddedWalletSettings-C7H0E8Uz.cjs.map → EmbeddedWalletSettings-Bmx8x21f.cjs.map} +1 -1
- package/dist/{EmbeddedWalletSettings-CLWh2TbV.js → EmbeddedWalletSettings-BuDgqv-K.js} +1 -1
- package/dist/{EmbeddedWalletSettings-CLWh2TbV.js.map → EmbeddedWalletSettings-BuDgqv-K.js.map} +1 -1
- package/dist/{EmbeddedWalletSettings-BTTV8Nqi.js → EmbeddedWalletSettings-DY5iJhS0.js} +1 -1
- package/dist/{EmbeddedWalletSettings-BTTV8Nqi.js.map → EmbeddedWalletSettings-DY5iJhS0.js.map} +1 -1
- package/dist/{ServerSettings-DooVeOet.js → ServerSettings-9Q091f3o.js} +1 -1
- package/dist/{ServerSettings-DooVeOet.js.map → ServerSettings-9Q091f3o.js.map} +1 -1
- package/dist/{ServerSettings-Ch8MCmAY.js → ServerSettings-BAstMKHS.js} +1 -1
- package/dist/{ServerSettings-Ch8MCmAY.js.map → ServerSettings-BAstMKHS.js.map} +1 -1
- package/dist/{ServerSettings-CqDd59iM.cjs → ServerSettings-LIIP5TPz.cjs} +1 -1
- package/dist/{ServerSettings-CqDd59iM.cjs.map → ServerSettings-LIIP5TPz.cjs.map} +1 -1
- package/dist/{ServerSettings-CPAoiDtn.cjs → ServerSettings-PH7T8JKI.cjs} +1 -1
- package/dist/{ServerSettings-CPAoiDtn.cjs.map → ServerSettings-PH7T8JKI.cjs.map} +1 -1
- package/dist/{WebhookSettings-WMJ5zPjY.cjs → WebhookSettings-2p9abGm5.cjs} +1 -1
- package/dist/{WebhookSettings-WMJ5zPjY.cjs.map → WebhookSettings-2p9abGm5.cjs.map} +1 -1
- package/dist/{WebhookSettings-BG77iqJC.js → WebhookSettings-CXMBju7N.js} +1 -1
- package/dist/{WebhookSettings-BG77iqJC.js.map → WebhookSettings-CXMBju7N.js.map} +1 -1
- package/dist/{WebhookSettings-BeiUAcKs.cjs → WebhookSettings-CdFM7_V-.cjs} +1 -1
- package/dist/{WebhookSettings-BeiUAcKs.cjs.map → WebhookSettings-CdFM7_V-.cjs.map} +1 -1
- package/dist/{WebhookSettings-B6mjH90_.js → WebhookSettings-D0F8ESlB.js} +1 -1
- package/dist/{WebhookSettings-B6mjH90_.js.map → WebhookSettings-D0F8ESlB.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.js +1 -1
- package/dist/index.cjs +12 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +18 -6
- package/dist/index.js +1713 -1635
- package/dist/index.js.map +1 -1
- package/dist/login-react.css +1 -1
- package/dist/mobileWalletAdapter-Begyo5Y9.cjs +1 -0
- package/dist/mobileWalletAdapter-Begyo5Y9.cjs.map +1 -0
- package/dist/mobileWalletAdapter-Dbm9P20u.js +188 -0
- package/dist/mobileWalletAdapter-Dbm9P20u.js.map +1 -0
- package/dist/{plugin-Bhf9zaly.js → plugin-DbkijwEV.js} +1 -1
- package/dist/{plugin-Bhf9zaly.js.map → plugin-DbkijwEV.js.map} +1 -1
- package/dist/{plugin-BgMAc6DA.cjs → plugin-PU2vAozn.cjs} +1 -1
- package/dist/{plugin-BgMAc6DA.cjs.map → plugin-PU2vAozn.cjs.map} +1 -1
- package/dist/solana-only.cjs +1 -1
- package/dist/solana-only.d.ts +9 -5
- package/dist/solana-only.js +1 -1
- package/package.json +1 -1
- package/dist/AutosaveStatus-BKc7T2Tw.js.map +0 -1
- package/dist/AutosaveStatus-BjLMt52a.cjs +0 -1
- package/dist/AutosaveStatus-BjLMt52a.cjs.map +0 -1
- package/dist/mobileWalletAdapter-7TOM-TF8.cjs +0 -1
- package/dist/mobileWalletAdapter-7TOM-TF8.cjs.map +0 -1
- package/dist/mobileWalletAdapter-CtTXtZlH.js +0 -387
- package/dist/mobileWalletAdapter-CtTXtZlH.js.map +0 -1
|
@@ -6,55 +6,55 @@ import { L as K } from "./LoadingSpinner-6vml-zwr.js";
|
|
|
6
6
|
import { E as Q } from "./ErrorMessage-CcEK0pYO.js";
|
|
7
7
|
import { s as ie } from "./sanitization-CQ-H1MSg.js";
|
|
8
8
|
function Z(n = {}) {
|
|
9
|
-
const { maxAttempts:
|
|
9
|
+
const { maxAttempts: p = 5, windowMs: N = 6e4, showCountdown: d = !1 } = n, h = G([]), [c, w] = v(!1), [, l] = v(0), m = C(() => {
|
|
10
10
|
l((r) => r + 1);
|
|
11
11
|
}, []), u = C(() => {
|
|
12
12
|
const r = Date.now();
|
|
13
|
-
|
|
14
|
-
}, [N]),
|
|
15
|
-
u(), w((r) =>
|
|
16
|
-
}, [u]), i = C(() => (u(), Math.max(0,
|
|
17
|
-
if (u(),
|
|
13
|
+
h.current = h.current.filter((t) => r - t < N);
|
|
14
|
+
}, [N]), k = C(() => {
|
|
15
|
+
u(), w((r) => h.current.length === 0 && r ? !1 : r);
|
|
16
|
+
}, [u]), i = C(() => (u(), Math.max(0, p - h.current.length)), [u, p]), g = C(() => {
|
|
17
|
+
if (u(), h.current.length === 0)
|
|
18
18
|
return 0;
|
|
19
|
-
const t =
|
|
19
|
+
const t = h.current[0] + N;
|
|
20
20
|
return Math.max(0, t - Date.now());
|
|
21
|
-
}, [u, N]), y = C(() => (u(),
|
|
22
|
-
if (
|
|
21
|
+
}, [u, N]), y = C(() => (u(), h.current.length < p), [u, p]), E = C(() => {
|
|
22
|
+
if (k(), h.current.length >= p) {
|
|
23
23
|
const r = g(), t = Math.ceil(r / 1e3);
|
|
24
24
|
throw new Error(
|
|
25
25
|
`Too many attempts. Please wait ${t} second${t === 1 ? "" : "s"} before trying again.`
|
|
26
26
|
);
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
}, [
|
|
30
|
-
|
|
28
|
+
h.current.push(Date.now()), w((r) => r || !0), m();
|
|
29
|
+
}, [k, p, g, m]), b = C(() => {
|
|
30
|
+
h.current = [], w((r) => r && !1), m();
|
|
31
31
|
}, [m]);
|
|
32
32
|
return W(() => {
|
|
33
33
|
if (!c || !d) return;
|
|
34
34
|
const r = window.setInterval(() => {
|
|
35
|
-
|
|
35
|
+
k(), m();
|
|
36
36
|
}, 1e3);
|
|
37
37
|
return () => {
|
|
38
38
|
window.clearInterval(r);
|
|
39
39
|
};
|
|
40
|
-
}, [c, d, m,
|
|
40
|
+
}, [c, d, m, k]), {
|
|
41
41
|
checkLimit: E,
|
|
42
42
|
isAllowed: y,
|
|
43
43
|
getRemainingAttempts: i,
|
|
44
44
|
getTimeUntilReset: g,
|
|
45
|
-
reset:
|
|
45
|
+
reset: b
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
48
|
function le(n) {
|
|
49
49
|
return "mfaRequired" in n && n.mfaRequired === !0;
|
|
50
50
|
}
|
|
51
51
|
function X() {
|
|
52
|
-
const { config: n, _internal:
|
|
52
|
+
const { config: n, _internal: p } = U(), [N, d] = v(!1), [h, c] = v(null), {
|
|
53
53
|
checkLimit: w,
|
|
54
54
|
getRemainingAttempts: l,
|
|
55
55
|
getTimeUntilReset: m,
|
|
56
56
|
reset: u
|
|
57
|
-
} = Z({ maxAttempts: 5, windowMs: 6e4 }),
|
|
57
|
+
} = Z({ maxAttempts: 5, windowMs: 6e4 }), k = z(
|
|
58
58
|
() => new H({
|
|
59
59
|
baseUrl: n.serverUrl,
|
|
60
60
|
timeoutMs: n.requestTimeout,
|
|
@@ -81,7 +81,7 @@ function X() {
|
|
|
81
81
|
}
|
|
82
82
|
d(!0), c(null);
|
|
83
83
|
try {
|
|
84
|
-
const a = await
|
|
84
|
+
const a = await k.post("/login", {
|
|
85
85
|
email: t,
|
|
86
86
|
password: s
|
|
87
87
|
});
|
|
@@ -93,7 +93,7 @@ function X() {
|
|
|
93
93
|
userId: a.userId
|
|
94
94
|
};
|
|
95
95
|
const o = a;
|
|
96
|
-
return i?.onLoginSuccess?.(o.user, "email"),
|
|
96
|
+
return i?.onLoginSuccess?.(o.user, "email"), p?.handleLoginSuccess(o.user, o.tokens), u(), {
|
|
97
97
|
mfaRequired: !1,
|
|
98
98
|
response: o
|
|
99
99
|
};
|
|
@@ -104,8 +104,8 @@ function X() {
|
|
|
104
104
|
d(!1);
|
|
105
105
|
}
|
|
106
106
|
},
|
|
107
|
-
[
|
|
108
|
-
),
|
|
107
|
+
[k, i, p, w, u]
|
|
108
|
+
), b = C(
|
|
109
109
|
async (t, s, a) => {
|
|
110
110
|
if (!j(t)) {
|
|
111
111
|
const o = {
|
|
@@ -125,8 +125,8 @@ function X() {
|
|
|
125
125
|
}
|
|
126
126
|
d(!0), c(null);
|
|
127
127
|
try {
|
|
128
|
-
const o = await
|
|
129
|
-
if (i?.onLoginSuccess?.(o.user, "email"),
|
|
128
|
+
const o = await k.post("/register", { email: t, password: s, name: a });
|
|
129
|
+
if (i?.onLoginSuccess?.(o.user, "email"), p?.handleLoginSuccess(o.user, o.tokens), u(), g) {
|
|
130
130
|
const L = o.tokens?.accessToken ?? "", R = !L ? 200 : 0;
|
|
131
131
|
new Promise((A) => setTimeout(A, R)).then(() => import("./silentWalletEnroll-FqXS7Rvh.js")).then(
|
|
132
132
|
({ silentWalletEnroll: A }) => A({
|
|
@@ -150,9 +150,9 @@ function X() {
|
|
|
150
150
|
}
|
|
151
151
|
},
|
|
152
152
|
[
|
|
153
|
-
|
|
153
|
+
k,
|
|
154
154
|
i,
|
|
155
|
-
|
|
155
|
+
p,
|
|
156
156
|
w,
|
|
157
157
|
u,
|
|
158
158
|
y,
|
|
@@ -161,9 +161,9 @@ function X() {
|
|
|
161
161
|
), r = C(() => c(null), []);
|
|
162
162
|
return {
|
|
163
163
|
login: E,
|
|
164
|
-
register:
|
|
164
|
+
register: b,
|
|
165
165
|
isLoading: N,
|
|
166
|
-
error:
|
|
166
|
+
error: h,
|
|
167
167
|
clearError: r,
|
|
168
168
|
// M-10: Point-in-time snapshots for UI display (see interface JSDoc)
|
|
169
169
|
remainingAttempts: l(),
|
|
@@ -174,19 +174,19 @@ function de(n) {
|
|
|
174
174
|
return typeof n == "object" && n !== null && "mfaRequired" in n && n.mfaRequired === !0;
|
|
175
175
|
}
|
|
176
176
|
function ue() {
|
|
177
|
-
const { config: n, _internal:
|
|
177
|
+
const { config: n, _internal: p } = U(), [N, d] = v(!1), [h, c] = v(!1), [w, l] = v(null), m = z(
|
|
178
178
|
() => new H({
|
|
179
179
|
baseUrl: n.serverUrl,
|
|
180
180
|
timeoutMs: n.requestTimeout,
|
|
181
181
|
retryAttempts: n.retryAttempts
|
|
182
182
|
}),
|
|
183
183
|
[n.serverUrl, n.requestTimeout, n.retryAttempts]
|
|
184
|
-
), { checkLimit: u, getRemainingAttempts:
|
|
184
|
+
), { checkLimit: u, getRemainingAttempts: k } = Z({
|
|
185
185
|
maxAttempts: 3,
|
|
186
186
|
windowMs: 3e5
|
|
187
187
|
}), i = C(
|
|
188
|
-
async (
|
|
189
|
-
if (!j(
|
|
188
|
+
async (b) => {
|
|
189
|
+
if (!j(b)) {
|
|
190
190
|
const r = {
|
|
191
191
|
code: "VALIDATION_ERROR",
|
|
192
192
|
message: "Please enter a valid email address"
|
|
@@ -204,7 +204,7 @@ function ue() {
|
|
|
204
204
|
}
|
|
205
205
|
d(!0), l(null), c(!1);
|
|
206
206
|
try {
|
|
207
|
-
await m.post("/instant-link", { email:
|
|
207
|
+
await m.post("/instant-link", { email: b }), c(!0);
|
|
208
208
|
} catch (r) {
|
|
209
209
|
const t = P(r, "Failed to send sign-in link");
|
|
210
210
|
throw l(t), t;
|
|
@@ -214,8 +214,8 @@ function ue() {
|
|
|
214
214
|
},
|
|
215
215
|
[m, u]
|
|
216
216
|
), g = C(
|
|
217
|
-
async (
|
|
218
|
-
if (!
|
|
217
|
+
async (b) => {
|
|
218
|
+
if (!b || b.trim().length === 0) {
|
|
219
219
|
const r = {
|
|
220
220
|
code: "VALIDATION_ERROR",
|
|
221
221
|
message: "Invalid or missing sign-in link token"
|
|
@@ -227,10 +227,10 @@ function ue() {
|
|
|
227
227
|
const r = await m.post(
|
|
228
228
|
"/instant-link/verify",
|
|
229
229
|
{
|
|
230
|
-
token:
|
|
230
|
+
token: b
|
|
231
231
|
}
|
|
232
232
|
);
|
|
233
|
-
return de(r) || (n.callbacks?.onLoginSuccess?.(r.user, "email"),
|
|
233
|
+
return de(r) || (n.callbacks?.onLoginSuccess?.(r.user, "email"), p?.handleLoginSuccess(r.user, r.tokens)), r;
|
|
234
234
|
} catch (r) {
|
|
235
235
|
const t = P(r, "Failed to verify sign-in link");
|
|
236
236
|
throw l(t), t;
|
|
@@ -238,7 +238,7 @@ function ue() {
|
|
|
238
238
|
d(!1);
|
|
239
239
|
}
|
|
240
240
|
},
|
|
241
|
-
[m, n.callbacks,
|
|
241
|
+
[m, n.callbacks, p]
|
|
242
242
|
), y = C(() => l(null), []), E = C(() => {
|
|
243
243
|
l(null), c(!1), d(!1);
|
|
244
244
|
}, []);
|
|
@@ -246,32 +246,32 @@ function ue() {
|
|
|
246
246
|
sendInstantLink: i,
|
|
247
247
|
verifyInstantLink: g,
|
|
248
248
|
isLoading: N,
|
|
249
|
-
isSuccess:
|
|
249
|
+
isSuccess: h,
|
|
250
250
|
error: w,
|
|
251
251
|
clearError: y,
|
|
252
252
|
reset: E,
|
|
253
|
-
remainingAttempts:
|
|
253
|
+
remainingAttempts: k()
|
|
254
254
|
};
|
|
255
255
|
}
|
|
256
256
|
function ee({
|
|
257
257
|
label: n = "Password",
|
|
258
|
-
labelAction:
|
|
258
|
+
labelAction: p,
|
|
259
259
|
showStrengthMeter: N = !1,
|
|
260
260
|
onValidationChange: d,
|
|
261
|
-
error:
|
|
261
|
+
error: h,
|
|
262
262
|
className: c = "",
|
|
263
263
|
onChange: w,
|
|
264
264
|
value: l,
|
|
265
265
|
...m
|
|
266
266
|
}) {
|
|
267
|
-
const [u,
|
|
267
|
+
const [u, k] = v(!1), [i, g] = v(null), y = J(), E = (r) => {
|
|
268
268
|
const t = r.target.value;
|
|
269
269
|
if (N || d) {
|
|
270
270
|
const s = ce(t);
|
|
271
271
|
g(s), d?.(s);
|
|
272
272
|
}
|
|
273
273
|
w?.(r);
|
|
274
|
-
},
|
|
274
|
+
}, b = {
|
|
275
275
|
weak: "var(--cedros-destructive, #ef4444)",
|
|
276
276
|
fair: "var(--cedros-warning, #f59e0b)",
|
|
277
277
|
good: "var(--cedros-success, #22c55e)",
|
|
@@ -280,7 +280,7 @@ function ee({
|
|
|
280
280
|
return /* @__PURE__ */ f("div", { className: `cedros-password-input ${c}`, children: [
|
|
281
281
|
/* @__PURE__ */ f("div", { className: "cedros-label-row", children: [
|
|
282
282
|
/* @__PURE__ */ e("label", { htmlFor: y, className: "cedros-label", children: n }),
|
|
283
|
-
|
|
283
|
+
p
|
|
284
284
|
] }),
|
|
285
285
|
/* @__PURE__ */ f("div", { className: "cedros-password-wrapper", children: [
|
|
286
286
|
/* @__PURE__ */ e(
|
|
@@ -291,8 +291,8 @@ function ee({
|
|
|
291
291
|
className: "cedros-input",
|
|
292
292
|
onChange: E,
|
|
293
293
|
value: l,
|
|
294
|
-
"aria-invalid":
|
|
295
|
-
"aria-describedby":
|
|
294
|
+
"aria-invalid": h ? "true" : void 0,
|
|
295
|
+
"aria-describedby": h ? `${y}-error` : void 0,
|
|
296
296
|
...m
|
|
297
297
|
}
|
|
298
298
|
),
|
|
@@ -301,7 +301,7 @@ function ee({
|
|
|
301
301
|
{
|
|
302
302
|
type: "button",
|
|
303
303
|
className: "cedros-password-toggle",
|
|
304
|
-
onClick: () =>
|
|
304
|
+
onClick: () => k(!u),
|
|
305
305
|
"aria-label": u ? "Hide password" : "Show password",
|
|
306
306
|
"aria-pressed": u,
|
|
307
307
|
children: u ? /* @__PURE__ */ f("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [
|
|
@@ -329,7 +329,7 @@ function ee({
|
|
|
329
329
|
}
|
|
330
330
|
)
|
|
331
331
|
] }),
|
|
332
|
-
|
|
332
|
+
h && /* @__PURE__ */ e("p", { id: `${y}-error`, className: "cedros-input-error", children: h }),
|
|
333
333
|
N && i && l?.length > 0 && /* @__PURE__ */ f("div", { className: "cedros-password-strength", children: [
|
|
334
334
|
/* @__PURE__ */ e("div", { className: "cedros-strength-bar", children: /* @__PURE__ */ e(
|
|
335
335
|
"div",
|
|
@@ -337,7 +337,7 @@ function ee({
|
|
|
337
337
|
className: "cedros-strength-fill",
|
|
338
338
|
style: {
|
|
339
339
|
width: `${i.strength === "weak" ? 25 : i.strength === "fair" ? 50 : i.strength === "good" ? 75 : 100}%`,
|
|
340
|
-
backgroundColor:
|
|
340
|
+
backgroundColor: b[i.strength]
|
|
341
341
|
}
|
|
342
342
|
}
|
|
343
343
|
) }),
|
|
@@ -346,10 +346,10 @@ function ee({
|
|
|
346
346
|
] });
|
|
347
347
|
}
|
|
348
348
|
function me() {
|
|
349
|
-
const { config: n, _internal:
|
|
349
|
+
const { config: n, _internal: p } = U(), [N, d] = v("idle"), [h, c] = v(!1), [w, l] = v(null), {
|
|
350
350
|
checkLimit: m,
|
|
351
351
|
getRemainingAttempts: u,
|
|
352
|
-
getTimeUntilReset:
|
|
352
|
+
getTimeUntilReset: k,
|
|
353
353
|
reset: i
|
|
354
354
|
} = Z({ maxAttempts: 5, windowMs: 12e4 }), g = z(
|
|
355
355
|
() => new H({
|
|
@@ -380,7 +380,7 @@ function me() {
|
|
|
380
380
|
c(!0), l(null), d("verifying");
|
|
381
381
|
try {
|
|
382
382
|
const o = await g.post("/login/mfa", { mfaToken: r, code: t });
|
|
383
|
-
return d("success"), i(),
|
|
383
|
+
return d("success"), i(), p && o.user && o.tokens && p.handleLoginSuccess(o.user, o.tokens), o;
|
|
384
384
|
} catch (o) {
|
|
385
385
|
const L = P(o, "Invalid verification code");
|
|
386
386
|
throw l(L), d("error"), L;
|
|
@@ -388,33 +388,33 @@ function me() {
|
|
|
388
388
|
c(!1);
|
|
389
389
|
}
|
|
390
390
|
},
|
|
391
|
-
[g,
|
|
392
|
-
), E = C(() => l(null), []),
|
|
391
|
+
[g, p, m, i]
|
|
392
|
+
), E = C(() => l(null), []), b = C(() => {
|
|
393
393
|
l(null), d("idle"), c(!1);
|
|
394
394
|
}, []);
|
|
395
395
|
return {
|
|
396
396
|
state: N,
|
|
397
|
-
isLoading:
|
|
397
|
+
isLoading: h,
|
|
398
398
|
error: w,
|
|
399
399
|
verifyTotp: y,
|
|
400
400
|
clearError: E,
|
|
401
|
-
reset:
|
|
401
|
+
reset: b,
|
|
402
402
|
// Point-in-time snapshots for UI display
|
|
403
403
|
remainingAttempts: u(),
|
|
404
|
-
timeUntilReset:
|
|
404
|
+
timeUntilReset: k()
|
|
405
405
|
};
|
|
406
406
|
}
|
|
407
407
|
const I = 6;
|
|
408
408
|
function he({
|
|
409
409
|
value: n = "",
|
|
410
|
-
onChange:
|
|
410
|
+
onChange: p,
|
|
411
411
|
onComplete: N,
|
|
412
412
|
disabled: d = !1,
|
|
413
|
-
error:
|
|
413
|
+
error: h,
|
|
414
414
|
autoFocus: c = !1,
|
|
415
415
|
className: w = ""
|
|
416
416
|
}) {
|
|
417
|
-
const l = G([]), [m, u] = v(n.padEnd(I, "")),
|
|
417
|
+
const l = G([]), [m, u] = v(n.padEnd(I, "")), k = J();
|
|
418
418
|
W(() => {
|
|
419
419
|
u(n.padEnd(I, ""));
|
|
420
420
|
}, [n]);
|
|
@@ -423,9 +423,9 @@ function he({
|
|
|
423
423
|
}, []), g = C(
|
|
424
424
|
(t) => {
|
|
425
425
|
const s = t.replace(/\D/g, "").slice(0, I);
|
|
426
|
-
u(s.padEnd(I, "")),
|
|
426
|
+
u(s.padEnd(I, "")), p?.(s), s.length === I && N?.(s);
|
|
427
427
|
},
|
|
428
|
-
[
|
|
428
|
+
[p, N]
|
|
429
429
|
), y = C(
|
|
430
430
|
(t, s) => {
|
|
431
431
|
if (!/^\d?$/.test(s)) return;
|
|
@@ -444,7 +444,7 @@ function he({
|
|
|
444
444
|
} else s.key === "ArrowLeft" && t > 0 ? (s.preventDefault(), i(t - 1)) : s.key === "ArrowRight" && t < I - 1 && (s.preventDefault(), i(t + 1));
|
|
445
445
|
},
|
|
446
446
|
[m, g, i]
|
|
447
|
-
),
|
|
447
|
+
), b = C(
|
|
448
448
|
(t) => {
|
|
449
449
|
t.preventDefault();
|
|
450
450
|
const a = t.clipboardData.getData("text").replace(/\D/g, "").slice(0, I);
|
|
@@ -463,48 +463,48 @@ function he({
|
|
|
463
463
|
ref: (a) => {
|
|
464
464
|
l.current[s] = a;
|
|
465
465
|
},
|
|
466
|
-
id: `${
|
|
466
|
+
id: `${k}-${s}`,
|
|
467
467
|
type: "text",
|
|
468
468
|
inputMode: "numeric",
|
|
469
469
|
pattern: "[0-9]*",
|
|
470
470
|
maxLength: 1,
|
|
471
|
-
className: `cedros-otp-slot ${
|
|
471
|
+
className: `cedros-otp-slot ${h ? "cedros-otp-slot-error" : ""}`,
|
|
472
472
|
value: m[s] === " " ? "" : m[s] || "",
|
|
473
473
|
onChange: (a) => y(s, a.target.value),
|
|
474
474
|
onKeyDown: (a) => E(s, a),
|
|
475
|
-
onPaste:
|
|
475
|
+
onPaste: b,
|
|
476
476
|
onFocus: r,
|
|
477
477
|
disabled: d,
|
|
478
478
|
autoComplete: "one-time-code",
|
|
479
479
|
"aria-label": `Digit ${s + 1}`,
|
|
480
|
-
"aria-invalid":
|
|
480
|
+
"aria-invalid": h ? "true" : void 0
|
|
481
481
|
},
|
|
482
482
|
s
|
|
483
483
|
)) }),
|
|
484
|
-
|
|
484
|
+
h && /* @__PURE__ */ e("p", { className: "cedros-otp-error", role: "alert", children: h })
|
|
485
485
|
] });
|
|
486
486
|
}
|
|
487
487
|
function pe({
|
|
488
488
|
mfaToken: n,
|
|
489
|
-
email:
|
|
489
|
+
email: p,
|
|
490
490
|
onSuccess: N,
|
|
491
491
|
onBack: d,
|
|
492
|
-
className:
|
|
492
|
+
className: h = ""
|
|
493
493
|
}) {
|
|
494
|
-
const { verifyTotp: c, isLoading: w, error: l, clearError: m } = me(), [u,
|
|
494
|
+
const { verifyTotp: c, isLoading: w, error: l, clearError: m } = me(), [u, k] = v(""), [i, g] = v(!1), [y, E] = v(""), b = async (s) => {
|
|
495
495
|
const a = s || (i ? y : u);
|
|
496
496
|
if (a)
|
|
497
497
|
try {
|
|
498
498
|
await c(n, a), N?.();
|
|
499
499
|
} catch {
|
|
500
|
-
i ? E("") :
|
|
500
|
+
i ? E("") : k("");
|
|
501
501
|
}
|
|
502
502
|
}, r = (s) => {
|
|
503
|
-
|
|
503
|
+
b(s);
|
|
504
504
|
}, t = () => {
|
|
505
|
-
g(!i), m(),
|
|
505
|
+
g(!i), m(), k(""), E("");
|
|
506
506
|
};
|
|
507
|
-
return /* @__PURE__ */ f("div", { className: `cedros-totp-verify ${
|
|
507
|
+
return /* @__PURE__ */ f("div", { className: `cedros-totp-verify ${h}`, children: [
|
|
508
508
|
/* @__PURE__ */ f("div", { className: "cedros-totp-verify-header", children: [
|
|
509
509
|
/* @__PURE__ */ f(
|
|
510
510
|
"svg",
|
|
@@ -532,7 +532,7 @@ function pe({
|
|
|
532
532
|
),
|
|
533
533
|
/* @__PURE__ */ e("h3", { className: "cedros-totp-title", children: "Two-factor authentication" }),
|
|
534
534
|
/* @__PURE__ */ e("p", { className: "cedros-totp-description", children: i ? "Enter one of your recovery codes to sign in." : "Enter the 6-digit code from your authenticator app." }),
|
|
535
|
-
|
|
535
|
+
p && /* @__PURE__ */ e("p", { className: "cedros-totp-email", children: p })
|
|
536
536
|
] }),
|
|
537
537
|
i ? /* @__PURE__ */ f("div", { className: "cedros-totp-backup-input", children: [
|
|
538
538
|
/* @__PURE__ */ e(
|
|
@@ -546,7 +546,7 @@ function pe({
|
|
|
546
546
|
E(s.target.value.toUpperCase()), m();
|
|
547
547
|
},
|
|
548
548
|
onKeyDown: (s) => {
|
|
549
|
-
s.key === "Enter" && y &&
|
|
549
|
+
s.key === "Enter" && y && b();
|
|
550
550
|
},
|
|
551
551
|
disabled: w,
|
|
552
552
|
autoFocus: !0,
|
|
@@ -559,7 +559,7 @@ function pe({
|
|
|
559
559
|
{
|
|
560
560
|
value: u,
|
|
561
561
|
onChange: (s) => {
|
|
562
|
-
|
|
562
|
+
k(s), m();
|
|
563
563
|
},
|
|
564
564
|
onComplete: r,
|
|
565
565
|
disabled: w,
|
|
@@ -572,7 +572,7 @@ function pe({
|
|
|
572
572
|
{
|
|
573
573
|
type: "button",
|
|
574
574
|
className: "cedros-button cedros-button-primary cedros-button-md cedros-button-full",
|
|
575
|
-
onClick: () =>
|
|
575
|
+
onClick: () => b(),
|
|
576
576
|
disabled: w || (i ? !y : u.length !== 6),
|
|
577
577
|
children: w ? /* @__PURE__ */ f(O, { children: [
|
|
578
578
|
/* @__PURE__ */ e(K, { size: "sm" }),
|
|
@@ -609,21 +609,21 @@ function pe({
|
|
|
609
609
|
}
|
|
610
610
|
function Ce({
|
|
611
611
|
onSuccess: n,
|
|
612
|
-
onSwitchToRegister:
|
|
612
|
+
onSwitchToRegister: p,
|
|
613
613
|
onForgotPassword: N,
|
|
614
614
|
className: d = ""
|
|
615
615
|
}) {
|
|
616
|
-
const { config:
|
|
616
|
+
const { config: h } = U(), { login: c, isLoading: w, error: l, clearError: m } = X(), {
|
|
617
617
|
sendInstantLink: u,
|
|
618
|
-
isLoading:
|
|
618
|
+
isLoading: k,
|
|
619
619
|
isSuccess: i,
|
|
620
620
|
error: g,
|
|
621
621
|
clearError: y,
|
|
622
622
|
reset: E
|
|
623
|
-
} = ue(), [
|
|
623
|
+
} = ue(), [b, r] = v(""), [t, s] = v(""), [a, o] = v(null), [L, S] = v(""), R = h.forms?.forgotPassword?.mode ?? (h.features?.instantLink ? "instantLink" : "reset"), A = async (D) => {
|
|
624
624
|
D.preventDefault();
|
|
625
625
|
try {
|
|
626
|
-
const q = await c(
|
|
626
|
+
const q = await c(b, t);
|
|
627
627
|
q.mfaRequired ? (o(q.mfaToken), S(q.email)) : n?.();
|
|
628
628
|
} catch {
|
|
629
629
|
}
|
|
@@ -634,7 +634,7 @@ function Ce({
|
|
|
634
634
|
}, x = async () => {
|
|
635
635
|
if (R === "instantLink")
|
|
636
636
|
try {
|
|
637
|
-
await u(
|
|
637
|
+
await u(b);
|
|
638
638
|
} catch {
|
|
639
639
|
}
|
|
640
640
|
else
|
|
@@ -680,7 +680,7 @@ function Ce({
|
|
|
680
680
|
/* @__PURE__ */ e("h3", { className: "cedros-success-title", children: "Check your email" }),
|
|
681
681
|
/* @__PURE__ */ f("p", { className: "cedros-success-message", children: [
|
|
682
682
|
"We sent a sign-in link to ",
|
|
683
|
-
/* @__PURE__ */ e("strong", { children:
|
|
683
|
+
/* @__PURE__ */ e("strong", { children: b }),
|
|
684
684
|
". Click the link to sign in."
|
|
685
685
|
] }),
|
|
686
686
|
/* @__PURE__ */ e(
|
|
@@ -695,7 +695,7 @@ function Ce({
|
|
|
695
695
|
] });
|
|
696
696
|
const F = l || g, B = () => {
|
|
697
697
|
m(), y();
|
|
698
|
-
}, V = w ||
|
|
698
|
+
}, V = w || k;
|
|
699
699
|
return /* @__PURE__ */ f("form", { onSubmit: A, className: `cedros-form ${d}`, children: [
|
|
700
700
|
/* @__PURE__ */ f("div", { className: "cedros-form-field", children: [
|
|
701
701
|
/* @__PURE__ */ e("label", { htmlFor: "email", className: "cedros-label", children: "Email" }),
|
|
@@ -705,7 +705,7 @@ function Ce({
|
|
|
705
705
|
id: "email",
|
|
706
706
|
type: "email",
|
|
707
707
|
className: "cedros-input",
|
|
708
|
-
value:
|
|
708
|
+
value: b,
|
|
709
709
|
onChange: (D) => r(D.target.value),
|
|
710
710
|
placeholder: "you@example.com",
|
|
711
711
|
required: !0,
|
|
@@ -730,8 +730,8 @@ function Ce({
|
|
|
730
730
|
type: "button",
|
|
731
731
|
className: "cedros-link cedros-link-sm",
|
|
732
732
|
onClick: x,
|
|
733
|
-
disabled:
|
|
734
|
-
children:
|
|
733
|
+
disabled: k,
|
|
734
|
+
children: k ? "Sending..." : "Forgot your password?"
|
|
735
735
|
}
|
|
736
736
|
) : void 0
|
|
737
737
|
}
|
|
@@ -742,7 +742,7 @@ function Ce({
|
|
|
742
742
|
{
|
|
743
743
|
type: "submit",
|
|
744
744
|
className: "cedros-button cedros-button-primary cedros-button-md cedros-button-full",
|
|
745
|
-
disabled: V || !
|
|
745
|
+
disabled: V || !b || !t,
|
|
746
746
|
"aria-busy": w,
|
|
747
747
|
children: w ? /* @__PURE__ */ f(O, { children: [
|
|
748
748
|
/* @__PURE__ */ e(K, { size: "sm", announce: !0, label: "Signing in" }),
|
|
@@ -750,19 +750,19 @@ function Ce({
|
|
|
750
750
|
] }) : "Sign in"
|
|
751
751
|
}
|
|
752
752
|
),
|
|
753
|
-
|
|
753
|
+
p && /* @__PURE__ */ f("p", { className: "cedros-form-footer", children: [
|
|
754
754
|
"Don't have an account?",
|
|
755
755
|
" ",
|
|
756
|
-
/* @__PURE__ */ e("button", { type: "button", className: "cedros-link", onClick:
|
|
756
|
+
/* @__PURE__ */ e("button", { type: "button", className: "cedros-link", onClick: p, children: "Sign up" })
|
|
757
757
|
] })
|
|
758
758
|
] });
|
|
759
759
|
}
|
|
760
760
|
function Ne({
|
|
761
761
|
onSuccess: n,
|
|
762
|
-
onSwitchToLogin:
|
|
762
|
+
onSwitchToLogin: p,
|
|
763
763
|
className: N = ""
|
|
764
764
|
}) {
|
|
765
|
-
const { config: d } = U(), { register:
|
|
765
|
+
const { config: d } = U(), { register: h, isLoading: c, error: w, clearError: l } = X(), [m, u] = v(""), [k, i] = v(""), [g, y] = v(""), [E, b] = v(""), [r, t] = v(null), [s, a] = v(null), o = d.forms?.termsOfService, L = d.forms?.emailOptIn, S = o?.show ?? !1, R = o?.required ?? !0, A = o?.defaultChecked ?? !1, M = o?.label ?? "I agree to the Terms of Service", _ = o?.url, x = ie(_), F = L?.show ?? !1, B = L?.defaultChecked ?? !1, V = L?.label ?? "Send me updates and news", [D, q] = v(A), [te, re] = v(B), $ = g === E, se = r?.isValid ?? !1, Y = k && g && E && $ && se && (!S || !R || D) && !c, oe = async (T) => {
|
|
766
766
|
if (T.preventDefault(), a(null), S && R && !D) {
|
|
767
767
|
a({
|
|
768
768
|
code: "VALIDATION_ERROR",
|
|
@@ -772,7 +772,7 @@ function Ne({
|
|
|
772
772
|
}
|
|
773
773
|
if (Y)
|
|
774
774
|
try {
|
|
775
|
-
await
|
|
775
|
+
await h(k, g, m || void 0), n?.();
|
|
776
776
|
} catch {
|
|
777
777
|
}
|
|
778
778
|
}, ne = w || s, ae = () => {
|
|
@@ -806,7 +806,7 @@ function Ne({
|
|
|
806
806
|
id: "register-email",
|
|
807
807
|
type: "email",
|
|
808
808
|
className: "cedros-input",
|
|
809
|
-
value:
|
|
809
|
+
value: k,
|
|
810
810
|
onChange: (T) => i(T.target.value),
|
|
811
811
|
placeholder: "you@example.com",
|
|
812
812
|
required: !0,
|
|
@@ -838,7 +838,7 @@ function Ne({
|
|
|
838
838
|
type: "password",
|
|
839
839
|
className: "cedros-input",
|
|
840
840
|
value: E,
|
|
841
|
-
onChange: (T) =>
|
|
841
|
+
onChange: (T) => b(T.target.value),
|
|
842
842
|
placeholder: "Confirm your password",
|
|
843
843
|
required: !0,
|
|
844
844
|
"aria-required": "true",
|
|
@@ -907,10 +907,10 @@ function Ne({
|
|
|
907
907
|
] }) : "Create account"
|
|
908
908
|
}
|
|
909
909
|
),
|
|
910
|
-
|
|
910
|
+
p && /* @__PURE__ */ f("p", { className: "cedros-form-footer", children: [
|
|
911
911
|
"Already have an account?",
|
|
912
912
|
" ",
|
|
913
|
-
/* @__PURE__ */ e("button", { type: "button", className: "cedros-link", onClick:
|
|
913
|
+
/* @__PURE__ */ e("button", { type: "button", className: "cedros-link", onClick: p, children: "Sign in" })
|
|
914
914
|
] })
|
|
915
915
|
] });
|
|
916
916
|
}
|