@seamless-auth/react 0.15.0 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +13 -9
- package/dist/routes.js +1 -1
- package/dist/routes.js.map +1 -1
- package/dist/views/VerifyMagicLink.d.ts +10 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @seamless-auth/react
|
|
2
2
|
|
|
3
|
+
## 0.15.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 4a2d6ff: Support Node 22 and newer. The `engines` field now requires `>=22` instead of `>=24.0.0 <25.0.0`, and CI runs on Node 22, 24, and the latest release (fells-code/seamless-auth-api#339).
|
|
8
|
+
- 929f7d5: Fix the bundled magic-link screen (`/verify-magiclink`) under React Strict Mode. Strict Mode runs effects twice in development, and the screen sent the single-use link to the server twice: the first request consumed it, the second was refused, and the screen showed "Failed to verify token" for a link that worked. It now sends one request per link.
|
|
9
|
+
|
|
10
|
+
The screen also no longer assumes that verifying a link signs in the tab that opened it. The session belongs to the browser that requested the link. After verifying, the screen signs in when the link was opened in that same browser, and otherwise tells the reader to return to the device that asked.
|
|
11
|
+
|
|
12
|
+
- Updated dependencies [4a2d6ff]
|
|
13
|
+
- @seamless-auth/client@0.3.1
|
|
14
|
+
|
|
3
15
|
## 0.15.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -462,17 +462,17 @@ function OAuthButtons() {
|
|
|
462
462
|
const [providers, setProviders] = useState<OAuthProvider[]>([]);
|
|
463
463
|
|
|
464
464
|
useEffect(() => {
|
|
465
|
-
void listOAuthProviders().then(
|
|
465
|
+
void listOAuthProviders().then(({ data }) => setProviders(data?.providers ?? []));
|
|
466
466
|
}, [listOAuthProviders]);
|
|
467
467
|
|
|
468
468
|
async function signIn(providerId: string) {
|
|
469
|
-
const
|
|
469
|
+
const { data, error } = await startOAuthLogin({
|
|
470
470
|
providerId,
|
|
471
471
|
redirectUri: `${window.location.origin}/oauth/callback`,
|
|
472
472
|
returnTo: `${window.location.origin}/dashboard`,
|
|
473
473
|
});
|
|
474
474
|
|
|
475
|
-
window.location.assign(
|
|
475
|
+
if (!error) window.location.assign(data.authorizationUrl);
|
|
476
476
|
}
|
|
477
477
|
|
|
478
478
|
return (
|
|
@@ -549,13 +549,17 @@ The bundled `AuthRoutes` callback screen already maps these three codes to actio
|
|
|
549
549
|
For fully custom UI without `useAuth()`, call the headless client directly:
|
|
550
550
|
|
|
551
551
|
```ts
|
|
552
|
-
const
|
|
553
|
-
const
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
}
|
|
552
|
+
const { data: listed } = await authClient.listOAuthProviders();
|
|
553
|
+
const provider = listed?.providers[0];
|
|
554
|
+
|
|
555
|
+
if (provider) {
|
|
556
|
+
const { data: started, error } = await authClient.startOAuthLogin({
|
|
557
|
+
providerId: provider.id,
|
|
558
|
+
redirectUri: `${window.location.origin}/oauth/callback`,
|
|
559
|
+
});
|
|
557
560
|
|
|
558
|
-
window.location.assign(started.authorizationUrl);
|
|
561
|
+
if (!error) window.location.assign(started.authorizationUrl);
|
|
562
|
+
}
|
|
559
563
|
```
|
|
560
564
|
|
|
561
565
|
OAuth must be enabled on the Seamless Auth API with `LOGIN_METHODS` including `oauth` and at least
|
package/dist/routes.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import{jsxs as e,jsx as r,Fragment as a}from"react/jsx-runtime";import{useHref as o,useNavigate as i,useLocation as t,useSearchParams as s,Routes as n,Route as l,Navigate as c}from"react-router-dom";import{u as d,a as _,c as m,b as u,F as g,h as p}from"./chunks/shared-BzrBuR0z.js";import{useState as h,useEffect as f,useRef as v,useCallback as b}from"react";import y from"libphonenumber-js";import{isUnauthenticated as k,getPasskeyPolicyErrorCode as x,getOAuthErrorCode as w}from"@seamless-auth/client";const N="/login",P="/passkey-login",C="/verify-phone-otp",I="/verify-email-otp",T="/verify-magiclink",M="/oauth/callback",O="/register-passkey",S="/magic-link-sent";function z(e,r){void 0===r&&(r={});var a=r.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===a&&o.firstChild?o.insertBefore(i,o.firstChild):o.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}var A="login-module__container___YggDx",B="login-module__card___Ub-Py",q="login-module__heading___neEqb",E="login-module__inputGroup___P6qgS",L="login-module__label___mx5vu",F="login-module__input___U07lW",j="login-module__helperText___kDQ4-",D="login-module__error___40zxh",R="login-module__button___0kFBs",V="login-module__submitHint___qOS5Z",G="login-module__toggle___1JiG1",W="login-module__fallbackCard___HdIk-",U="login-module__fallbackHeader___-il2v",K="login-module__fallbackDescription___ea5EB",Y="login-module__fallbackActions___AD3ni",$="login-module__fallbackActionButton___lFgWf",H="login-module__actionTitle___ycrMp",J="login-module__actionSubtext___opaIV",Z="login-module__linkButton___5lsoe";z(".login-module__container___YggDx{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center}.login-module__card___Ub-Py{background-color:var(--seamless-surface,#1f2937);border-radius:.5rem;box-shadow:0 4px 6px var(--seamless-shadow,rgba(0,0,0,.1));max-width:28rem;padding:2rem;width:100%}.login-module__heading___neEqb{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:700;margin-bottom:1.5rem;text-align:center}.login-module__message___qSejT{color:var(--seamless-success,#68d391);text-align:center}.login-module__inputGroup___P6qgS{margin-bottom:1rem}.login-module__label___mx5vu{color:var(--seamless-text-muted,#d1d5db);display:block}.login-module__input___U07lW{background-color:var(--seamless-surface-raised,#4b5563);border:1px solid var(--seamless-border,#d1d5db);border-radius:.375rem;margin-top:.25rem;padding:.5rem;width:100%}.login-module__input___U07lW:focus{box-shadow:0 0 0 2px var(--seamless-accent,#3b82f6);outline:none}.login-module__helperText___kDQ4-{color:var(--seamless-text-muted,#9ca3af);font-size:.75rem;margin-top:.5rem}.login-module__error___40zxh{color:var(--seamless-danger,#f87171);font-size:.875rem}.login-module__button___0kFBs{background-color:var(--seamless-accent,#2563eb);border-radius:.375rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;margin-top:1rem;padding:.5rem;transition:background-color .3s,opacity .3s;width:100%}.login-module__button___0kFBs:hover:not(:disabled){background-color:var(--seamless-accent-hover,#1d4ed8)}.login-module__button___0kFBs:disabled{cursor:not-allowed;opacity:.6}.login-module__submitHint___qOS5Z{color:var(--seamless-text-muted,#9ca3af);font-size:.75rem;margin-top:.5rem;text-align:center}.login-module__toggle___1JiG1{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}.login-module__underline___gs-RS{text-decoration:underline}.login-module__phoneRow___oeNtq{display:grid;gap:.5rem;grid-template-columns:1fr 3fr;margin-top:.25rem}.login-module__phoneInput___2MPQC,.login-module__select___rRV1O{background-color:var(--seamless-surface-raised,#4b5563);border:1px solid var(--seamless-border,#d1d5db);border-radius:.375rem;padding:.5rem;width:100%}@media (max-width:500px){.login-module__phoneRow___oeNtq{grid-template-columns:1fr}}.login-module__fallbackCard___HdIk-{background:var(--seamless-surface-raised,hsla(0,0%,100%,.04));border:1px solid var(--seamless-border,hsla(0,0%,100%,.08));border-radius:12px;display:flex;flex-direction:column;gap:14px;margin-top:18px;padding:18px}.login-module__fallbackHeader___-il2v{color:var(--seamless-text,#f3f4f6);font-size:.95rem;font-weight:600}.login-module__fallbackDescription___ea5EB{color:var(--seamless-text-muted,#9ca3af);font-size:.85rem;line-height:1.4}.login-module__fallbackActions___AD3ni{display:flex;flex-direction:column;gap:10px}.login-module__fallbackActionButton___lFgWf{background:var(--seamless-surface,rgba(0,0,0,.25));border:1px solid var(--seamless-border,hsla(0,0%,100%,.08));border-radius:8px;cursor:pointer;display:flex;flex-direction:column;padding:12px 14px;text-align:left;transition:all .15s ease}.login-module__fallbackActionButton___lFgWf:hover{background:var(--seamless-surface-hover,hsla(0,0%,100%,.06));border-color:var(--seamless-border,hsla(0,0%,100%,.15))}.login-module__actionTitle___ycrMp{color:var(--seamless-text,#f9fafb);font-size:.9rem;font-weight:500}.login-module__actionSubtext___opaIV{color:var(--seamless-text-muted,#9ca3af);font-size:.75rem;margin-top:2px}.login-module__linkButton___5lsoe{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.8rem;margin-top:6px}.login-module__linkButton___5lsoe:hover{text-decoration:underline}");const Q=e=>{if("string"!=typeof e)return!1;const r=e.trim();if(r.length<3||r.length>320)return!1;const a=r.split("@");if(2!==a.length)return!1;const[o,i]=a;return!(!/^[A-Za-z0-9._%+-]+$/.test(o)||o.startsWith(".")||o.endsWith(".")||o.includes(".."))&&!(!/^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/.test(i)||i.startsWith("-")||i.endsWith("-")||i.startsWith(".")||i.endsWith(".")||i.includes(".."))},X=e=>{const r=y(e);return r?.isValid()||!1};const ee=({identifier:a,onMagicLink:o,onEmailOtp:i,onPhoneOtp:t,onPasskeyRetry:s,loginMethods:n})=>{const l=new Set(n??["passkey","magic_link","phone_otp"]),c=l.has("magic_link")&&Q(a),d=l.has("email_otp")&&Boolean(i)&&Q(a),_=l.has("phone_otp")&&X(a),m=l.has("passkey")&&Boolean(s);return c||d||_||m?e("div",{className:W,children:[r("div",{className:U,children:"Choose a sign-in method"}),r("p",{className:K,children:"Choose another secure sign-in method."}),e("div",{className:Y,children:[c&&e("button",{type:"button",className:$,onClick:o,children:[r("span",{className:H,children:"Email Magic Link"}),r("span",{className:J,children:"Send a secure sign-in link to your email"})]}),d&&e("button",{type:"button",className:$,onClick:i,children:[r("span",{className:H,children:"Email Code"}),r("span",{className:J,children:"Receive a one-time code by email"})]}),_&&e("button",{type:"button",className:$,onClick:t,children:[r("span",{className:H,children:"Text Message Code"}),r("span",{className:J,children:"Receive a one-time code via SMS"})]})]}),m&&r("button",{type:"button",className:Z,onClick:s,children:"Try passkey anyway"})]}):null},re="seamless:oauth:provider",ae=()=>{const{listOAuthProviders:a,startOAuthLogin:i,finishOAuthLogin:t,ports:s}=d(),n=o("/oauth/callback"),[l,c]=h([]),[_,m]=h("");if(f(()=>{let e=!0;return a().then(({data:r})=>{e&&c(r?.providers??[])}),()=>{e=!1}},[a]),0===l.length)return null;return e("div",{className:Y,children:[l.map(a=>r("button",{type:"button",className:$,onClick:()=>(async e=>{m(""),sessionStorage.setItem(re,e);const r=new URL(n,window.location.origin).toString(),{data:a,error:o}=await i({providerId:e,redirectUri:r});if(o)return void m("Could not start sign-in with this provider.");const l=await s.oauthRedirect.open(a.authorizationUrl,r);"callback"===l.type&&(await t({providerId:e,code:l.code,state:l.state})).error&&m("Could not finish sign-in with this provider.")})(a.id),children:e("span",{className:H,children:["Continue with ",a.name]})},a.id)),_&&r("p",{className:D,children:_})]})},oe=()=>{const o=i(),{hasSignedInBefore:t,login:s,handlePasskeyLogin:n}=d(),l=_(),{passkeySupported:c}=m(),{loginMethods:p}=u(),[v,b]=h(""),[y,k]=h(""),[x,w]=h("register"),[N,P]=h(""),[T,M]=h(""),[O,z]=h(""),[W,U]=h(!1),[K,Y]=h(null);f(()=>{t&&w("login")},[t]);const $=()=>"login"===x?Q(v)||X(v):Q(y);return r("div",{className:A,children:e("div",{className:B,children:[r("h2",{className:q,children:"login"===x?"Sign In":"Create Account"}),e(a,{children:[e("form",{onSubmit:async e=>{e.preventDefault(),P(""),U(!1);try{if("login"===x){const{data:e,error:r}=await s(v,c);if(r)return void P("Failed to start sign-in. Please try again.");const a=e?.loginMethods?.length?e.loginMethods:p??g;if(Y(a),c&&a.includes("passkey")){const{error:e}=await n();return e?(U(!0),void P("Passkey sign-in could not be completed. Choose another sign-in method.")):void o("/")}return void U(!0)}"register"===x&&await(async()=>{P("");const{data:e,error:r}=await l.register({email:y});r?P("Failed to register. Please try again."):"Success"===e.message?o(I):P("An unexpected error occurred. Try again. If the problem persists, contact support.")})()}catch{console.error("Failed to continue sign-in."),P("Failed to continue sign-in. Please try again.")}},children:["login"===x&&e("div",{className:E,children:[r("label",{htmlFor:"identifier",className:L,children:"Email Address / Phone Number"}),r("input",{id:"identifier",type:"text",value:v,onChange:e=>{const r=e.target.value;b(r)},autoComplete:"off",placeholder:"Email or Phone Number",className:F,onBlur:()=>{if(v){const e=Q(v)||X(v);z(e?"":"Please enter a valid email or phone number")}},required:!0}),r("p",{className:j,children:"Phone numbers must include a country code e.g. +1"}),W&&r(ee,{identifier:v,onMagicLink:async()=>{const{error:e}=await l.requestMagicLink();e?P("Failed to send magic link."):o(S,{state:{identifier:v}})},onEmailOtp:async()=>{const{error:e}=await l.requestLoginEmailOtp();e?P("Failed to send email code."):o(I,{state:{flow:"login"}})},onPhoneOtp:async()=>{const{error:e}=await l.requestLoginPhoneOtp();e?P("Failed to send OTP."):o(C,{state:{flow:"login"}})},onPasskeyRetry:c?n:void 0,loginMethods:K}),O&&r("p",{className:D,children:O})]}),"register"===x&&e("div",{className:E,children:[r("label",{htmlFor:"email",className:L,children:"Email Address"}),r("input",{id:"email",type:"email",value:y,onChange:e=>{const r=e.target.value;k(r)},autoComplete:"off",className:F,onBlur:()=>{if(y){const e=Q(y);M(e?"":"Please enter a valid email")}},required:!0}),T&&r("p",{className:D,children:T})]}),r("button",{type:"submit",className:R,disabled:!$(),"aria-describedby":"seamless-submit-hint",children:"login"===x?"Login":"Register"}),r("p",{id:"seamless-submit-hint",role:"status",className:V,children:"login"===x?v?$()?"Ready to continue.":"This does not look like a complete email or phone number yet.":"Enter your email or phone number to continue.":y?$()?"Ready to continue.":"This does not look like a complete email address yet.":"Enter your email address to continue."}),N&&r("p",{className:D,children:N}),r("button",{type:"button",onClick:()=>w("login"===x?"register":"login"),className:G,children:"login"===x?"Don't have an account? Create one":"Already have an account? Sign in"})]}),r(ae,{})]})]})})};var ie={container:"passKeyLogin-module__container___IUKxF",card:"passKeyLogin-module__card___2sKM1",title:"passKeyLogin-module__title___HZxvc",button:"passKeyLogin-module__button___FvR4I"};z(".passKeyLogin-module__container___IUKxF{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.passKeyLogin-module__card___2sKM1{background-color:var(--seamless-surface,#1f2937);border-radius:1rem;box-shadow:0 4px 20px var(--seamless-shadow,rgba(0,0,0,.4));display:flex;flex-direction:column;gap:1.5rem;max-width:400px;padding:2rem;width:100%}.passKeyLogin-module__title___HZxvc{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:600;text-align:center}.passKeyLogin-module__button___FvR4I{background-color:var(--seamless-accent,#2563eb);border:1px solid var(--seamless-accent,#3b82f6);border-radius:.5rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;font-weight:500;padding:.75rem 1rem;text-align:center;transition:background-color .2s ease;width:100%}.passKeyLogin-module__button___FvR4I:hover{background-color:var(--seamless-accent-hover,#1d4ed8)}@media (max-width:480px){.passKeyLogin-module__card___2sKM1{padding:1.25rem}.passKeyLogin-module__button___FvR4I{font-size:1rem}}");const te=()=>{const a=i(),{handlePasskeyLogin:o}=d(),[t,s]=h("");return r("div",{className:ie.container,children:e("div",{className:ie.card,children:[r("h2",{className:ie.title,children:"Login with Passkey"}),r("button",{onClick:async()=>{s("");const{error:e}=await o();e?s("Passkey sign-in could not be completed. Try another sign-in method."):a("/")},className:ie.button,children:"Use Passkey"}),t&&r("p",{className:ie.error,children:t})]})})};var se="registerPasskey-module__container___jqEh8",ne="registerPasskey-module__card___MJAyC",le="registerPasskey-module__loading___Q4i1x",ce="registerPasskey-module__spinner___V1nhd",de="registerPasskey-module__supported___ihTih",_e="registerPasskey-module__title___vn2Qu",me="registerPasskey-module__description___AWmO-",ue="registerPasskey-module__button___D3b4B",ge="registerPasskey-module__message___RiOw-",pe="registerPasskey-module__success___HP5aX",he="registerPasskey-module__error___hGiqE",fe="registerPasskey-module__skip___1hDyU",ve="registerPasskey-module__secondary___bnOB4";z(".registerPasskey-module__container___jqEh8{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.registerPasskey-module__card___MJAyC{background-color:var(--seamless-surface,#1f2937);border-radius:1rem;box-shadow:0 4px 20px var(--seamless-shadow,rgba(0,0,0,.4));max-width:400px;padding:1.5rem;width:100%}.registerPasskey-module__loading___Q4i1x{align-items:center;background-color:var(--seamless-surface,#f9fafb);border-radius:.75rem;box-shadow:0 2px 8px var(--seamless-shadow,rgba(0,0,0,.1));color:var(--seamless-text,#374151);display:flex;font-weight:500;gap:.75rem;justify-content:center;padding:1.5rem}.registerPasskey-module__spinner___V1nhd{animation:registerPasskey-module__spin___oYcsC 1s linear infinite;border-bottom:2px solid var(--seamless-accent,#3b82f6);border-left:2px solid transparent;border-radius:9999px;border-right:2px solid transparent;border-top:2px solid var(--seamless-accent,#3b82f6);height:1.5rem;width:1.5rem}@keyframes registerPasskey-module__spin___oYcsC{to{transform:rotate(1turn)}}.registerPasskey-module__supported___ihTih{background-color:var(--seamless-surface,#ecfdf5);border-radius:.75rem;box-shadow:0 2px 12px var(--seamless-shadow,rgba(0,0,0,.1));color:var(--seamless-text,#065f46);padding:1.25rem}.registerPasskey-module__title___vn2Qu{font-size:1.125rem;font-weight:600;margin-bottom:.5rem}.registerPasskey-module__description___AWmO-{margin-bottom:1rem}.registerPasskey-module__button___D3b4B{background-color:var(--seamless-accent,#059669);border:none;border-radius:.5rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;font-weight:500;padding:.75rem 1rem;transition:background-color .2s ease;width:100%}.registerPasskey-module__button___D3b4B:hover{background-color:var(--seamless-accent-hover,#047857)}.registerPasskey-module__message___RiOw-{font-size:.875rem;margin-top:1rem}.registerPasskey-module__success___HP5aX{color:var(--seamless-success,#6ee7b7)}.registerPasskey-module__error___hGiqE{color:var(--seamless-danger,#f87171)}.registerPasskey-module__skip___1hDyU{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}.registerPasskey-module__skip___1hDyU:disabled{cursor:default;opacity:.6}.registerPasskey-module__secondary___bnOB4{background:none;border:1px solid var(--seamless-accent,#059669);border-radius:.5rem;color:var(--seamless-accent,#059669);cursor:pointer;font-weight:500;margin-top:.75rem;padding:.75rem 1rem;transition:background-color .2s ease;width:100%}.registerPasskey-module__secondary___bnOB4:hover:not(:disabled){background-color:var(--seamless-accent-muted,rgba(5,150,105,.1))}.registerPasskey-module__secondary___bnOB4:disabled{cursor:default;opacity:.6}");const be={attachment_not_allowed:"This application does not accept that kind of authenticator. Try the other option.",synced_passkey_not_allowed:"This passkey syncs to a password manager, and this application requires one that stays on a single device, such as a security key.",authenticator_not_allowed:"This application does not accept this authenticator.",prf_required:"This authenticator does not support a feature this application requires."};const ye=()=>{const{refreshSession:a}=d(),o=_(),{passkeySupported:s,loading:n}=m(),{loginMethods:l,loading:c}=u(),g=i(),f=function(e){const r=e?.returnTo;return"string"!=typeof r||!r.startsWith("/")||r.startsWith("//")||r.startsWith("/\\")?"/":r}(t().state),[v,b]=h("idle"),[y,w]=h(""),N=p(l),P=async()=>{await a(),g(f)},C=async e=>{const{platform:r,browser:i,deviceInfo:t}=function(){const e=navigator.userAgent.toLowerCase();let r="unknown",a="unknown";return/iphone|ipad|ipod/.test(e)?r="ios":/android/.test(e)?r="android":/mac os/.test(e)?r="mac":/windows/.test(e)?r="windows":/linux/.test(e)&&(r="linux"),navigator.brave?a="brave":/edg\/|edgios/.test(e)?a="edge":/opr\/|opt\/|opera/.test(e)?a="opera":/vivaldi/.test(e)?a="vivaldi":/samsungbrowser/.test(e)?a="samsung":/firefox|fxios/.test(e)?a="firefox":/chrome|crios/.test(e)?a="chrome":/safari/.test(e)&&(a="safari"),{platform:r,browser:a,deviceInfo:`${r} • ${a}`}}(),s={friendlyName:t,platform:r,browser:i,deviceInfo:t};b("loading");try{const{error:r}=await o.registerPasskey({metadata:s,attachment:e});if(r)throw r;await a(),b("success"),w("Passkey registered successfully."),g(f)}catch(e){console.error("Passkey registration failed."),b("error"),w(function(e){const r=x(e);return r?be[r]:void 0}(e)??(k(e)?"Your session expired before the passkey was saved. Sign in again to add one.":"Error registering passkey."))}};return r("div",{className:se,children:r("div",{className:ne,children:e("div",n||c?{className:le,children:[r("div",{className:ce}),r("span",{children:"Checking for Passkey Support..."})]}:s?{className:de,children:[r("h2",{className:_e,children:"Secure Your Account with a Passkey"}),r("p",{className:me,children:"Your device supports passkeys! Register one to skip passwords forever."}),r("button",{onClick:()=>C(),disabled:"loading"===v,className:ue,children:"loading"===v?"Registering...":"Register Passkey"}),r("button",{type:"button",onClick:()=>C("cross-platform"),disabled:"loading"===v,className:ve,children:"Use a security key instead"}),y&&r("p",{className:`${ge} ${"success"===v?pe:he}`,children:y}),N&&r("button",{type:"button",onClick:P,disabled:"loading"===v,className:fe,children:"Skip for now"})]}:{className:de,children:[r("h2",{className:_e,children:"Passkeys are not available here"}),r("p",{className:me,children:N?"This device does not support passkeys. You can continue without one and add a passkey later from a device that does.":"This device does not support passkeys, and this application requires one to sign in. Try again from a device or browser that supports them."}),N&&r("button",{type:"button",onClick:P,className:ue,children:"Continue"})]})})})};var ke="verifyOTP-module__container___wgoDE",xe="verifyOTP-module__card___3cs2p",we="verifyOTP-module__title___fZ-1d",Ne="verifyOTP-module__subtitle___dGSu3",Pe="verifyOTP-module__error___GEtlG",Ce="verifyOTP-module__success___46TjG",Ie="verifyOTP-module__form___jiGG-",Te="verifyOTP-module__label___Zq5Mi",Me="verifyOTP-module__timer___smq-a",Oe="verifyOTP-module__resend___PlmkG",Se="verifyOTP-module__button___8pIuO",ze="verifyOTP-module__toggle___wbzVa";z(".verifyOTP-module__container___wgoDE{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.verifyOTP-module__card___3cs2p{background-color:var(--seamless-surface,#1f2937);border-radius:.5rem;box-shadow:0 0 10px var(--seamless-shadow,rgba(0,0,0,.3));max-width:28rem;padding:1.5rem;width:100%}.verifyOTP-module__title___fZ-1d{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:700;margin-bottom:1rem;text-align:center}.verifyOTP-module__subtitle___dGSu3{color:var(--seamless-text-muted,#9ca3af);font-size:.875rem;margin-bottom:1.5rem;text-align:center}.verifyOTP-module__error___GEtlG{color:var(--seamless-danger,#f87171);margin-bottom:1rem;text-align:center}.verifyOTP-module__success___46TjG{color:var(--seamless-success,#34d399);margin-bottom:.75rem;text-align:center}.verifyOTP-module__form___jiGG-{display:flex;flex-direction:column;gap:1rem}.verifyOTP-module__label___Zq5Mi{color:var(--seamless-text-muted,#d1d5db);display:block;font-size:.875rem;margin-bottom:.25rem}.verifyOTP-module__timer___smq-a{color:var(--seamless-warning,#facc15);font-size:.875rem}.verifyOTP-module__input___yqIXM{background-color:var(--seamless-surface-raised,#374151);border:1px solid var(--seamless-border,#4b5563);border-radius:.375rem;color:var(--seamless-text,#fff);outline:none;padding:.5rem;width:100%}.verifyOTP-module__input___yqIXM:focus{box-shadow:0 0 0 2px var(--seamless-accent,#3b82f6)}.verifyOTP-module__resend___PlmkG{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.75rem;margin-top:.25rem;text-decoration:underline}.verifyOTP-module__resend___PlmkG:hover{color:var(--seamless-accent,#3b82f6)}.verifyOTP-module__button___8pIuO{background-color:var(--seamless-accent,#2563eb);border:none;border-radius:.375rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;padding:.5rem;transition:background-color .2s;width:100%}.verifyOTP-module__button___8pIuO:hover{background-color:var(--seamless-accent-hover,#1d4ed8)}.verifyOTP-module__toggle___wbzVa{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}");var Ae="otpInput-module__otpContainer___MUjby",Be="otpInput-module__otpInput___3YMVm";z(".otpInput-module__otpContainer___MUjby{display:flex;gap:8px;justify-content:center;margin-top:8px}.otpInput-module__otpInput___3YMVm{background:var(--seamless-surface-raised,#374151);border:1px solid var(--seamless-border,#4b5563);border-radius:8px;color:var(--seamless-text,#fff);font-size:1.2rem;height:48px;text-align:center;transition:border-color .15s ease,box-shadow .15s ease;width:42px}.otpInput-module__otpInput___3YMVm:focus{border-color:var(--seamless-accent,#60a5fa);box-shadow:0 0 0 2px var(--seamless-accent,rgba(96,165,250,.25));outline:none}");const qe=({length:e=6,value:a,inputMode:o="numeric",onChange:i,name:t="otp"})=>{const s=v([]),n=a.split("").concat(Array(e).fill("")).slice(0,e),l=(e,r)=>{var a;if(r.length>1)c(e,r);else if(!r||(a=r,"numeric"===o?/^\d$/.test(a):/^[a-zA-Z]$/.test(a))){const a=[...n];a[e]=r;const o=a.join("");i(o),r&&s.current[e+1]&&s.current[e+1]?.focus()}},c=(r,a)=>{let t=a;t="numeric"===o?a.replace(/\D/g,""):a.replace(/[^a-zA-Z]/g,"");const l=t.slice(0,e).split(""),c=[...n];l.forEach((a,o)=>{r+o<e&&(c[r+o]=a)}),i(c.join("")),s.current[Math.min(r+l.length,e-1)]?.focus()};return r("div",{className:Ae,role:"group","aria-label":"One-time password input",onPaste:e=>{e.preventDefault(),c(0,e.clipboardData.getData("text"))},children:n.map((a,c)=>r("input",{ref:e=>s.current[c]=e,type:"text",inputMode:"numeric"===o?"numeric":"text",autoComplete:"one-time-code",name:`${t}-${c}`,maxLength:1,value:a,className:Be,onChange:e=>l(c,e.target.value),onKeyDown:r=>((r,a)=>{if("Backspace"===a.key){a.preventDefault();const e=[...n];n[r]?(e[r]="",i(e.join(""))):r>0&&(e[r-1]="",i(e.join("")),s.current[r-1]?.focus())}"ArrowLeft"===a.key&&r>0&&s.current[r-1]?.focus(),"ArrowRight"===a.key&&r<e-1&&s.current[r+1]?.focus()})(c,r),"aria-label":`Digit ${c+1}`},c))})},Ee=()=>{const a=i(),o=t(),{refreshSession:s}=d(),n="login"===o.state?.flow,[l,c]=h(""),[m,u]=h(null),[g,p]=h(""),[v,b]=h(!1),[y,k]=h(""),[x,w]=h(300),N=_(),P=async()=>{if(b(!0),!m){const{error:e}=n?await N.verifyLoginPhoneOtp(l):await N.verifyPhoneOtp(l);if(e)p("Verification failed.");else{if(n)return await s(),void a("/");u(!0)}}b(!1)},C=async()=>{k(""),await(async()=>{p("");const{error:e}=n?await N.requestLoginPhoneOtp():await N.requestPhoneOtp();e?p("Failed to send SMS code. If this persists, refresh the page and try again."):k("Verification SMS has been resent.")})(),k("Verification SMS has been resent.")};return f(()=>{const e=setInterval(()=>{w(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),f(()=>{m&&!n&&(async()=>{const{error:e}=await N.requestEmailOtp();e?p("Failed to send Email code. If this persists, refresh the page and try registering again."):a(I)})()},[m,n,a,N]),r("div",{className:ke,children:e("div",{className:xe,children:[r("h2",{className:we,children:"Verify Your Phone Number"}),r("p",{className:Ne,children:"Enter the code sent to your phone number."}),g&&r("p",{className:Pe,children:g}),y&&r("p",{className:Ce,children:y}),e("form",{onSubmit:async e=>{if(e.preventDefault(),p(""),6===l.length){b(!0);try{await P()}catch{p("Unexpected error occurred.")}finally{b(!1)}}else p("Please enter a valid code.")},className:Ie,children:[e("div",{children:[e("label",{htmlFor:"phoneCode",className:Te,children:["Phone Verification Code ",(M=m,!0===M?r("span",{className:"text-green-400 ml-2",children:"✅"}):!1===M?r("span",{className:"text-red-400 ml-2",children:"❌"}):null)," -"," ",e("span",{className:Me,children:["Code expires in: ",(T=x,`${Math.floor(T/60).toString().padStart(2,"0")}:${(T%60).toString().padStart(2,"0")}`)]})]}),r(qe,{length:6,value:l,onChange:c}),r("button",{type:"button",onClick:()=>C(),className:Oe,children:"Resend code to phone"})]}),r("button",{type:"submit",className:Se,children:v?"Verifying...":"Verify & Continue"}),r("button",{type:"button",onClick:()=>a("/login"),className:ze,children:"Back to login"})]})]})});var T,M},Le=()=>{const a=i(),o=t(),{refreshSession:s}=d(),n=_(),{passkeySupported:l}=m(),c="login"===o.state?.flow,[u,g]=h(!1),[p,v]=h(""),[b,y]=h(300),[k,x]=h(""),[w,N]=h("");return f(()=>{const e=setInterval(()=>{y(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),r("div",{className:ke,children:e("div",{className:xe,children:[r("h2",{className:we,children:"Verify Your Email"}),r("p",{className:Ne,children:"We sent you a verification email. Enter the code below."}),k&&r("p",{className:Pe,children:k}),w&&r("p",{className:Ce,children:w}),e("form",{onSubmit:async e=>{if(e.preventDefault(),x(""),6===p.length){g(!0);try{const{error:e}=c?await n.verifyLoginEmailOtp(p):await n.verifyEmailOtp(p);if(e)return void x("Verification failed.");if(c)return await s(),void a("/");l?a(O):(await s(),a("/"))}catch{console.error("Email OTP verification failed."),x("Verification failed.")}finally{g(!1)}}else x("Please enter a valid code.")},className:Ie,children:[e("div",{children:[e("label",{htmlFor:"emailCode",className:Te,children:["Email Verification Code",e("span",{className:Me,children:[" ","— Code expires in ",(P=b,`${Math.floor(P/60).toString().padStart(2,"0")}:${(P%60).toString().padStart(2,"0")}`)]})]}),r(qe,{length:6,value:p,onChange:v,inputMode:"text"}),r("button",{type:"button",onClick:async()=>{x(""),N("");const{error:e}=c?await n.requestLoginEmailOtp():await n.requestEmailOtp();e?x("Failed to send Email code. If this persists, refresh the page and try again."):N("Verification email has been resent.")},className:Oe,children:"Resend code to email"})]}),r("button",{type:"submit",className:Se,disabled:u,children:u?"Verifying...":"Verify & Continue"}),r("button",{type:"button",onClick:()=>a("/login"),className:ze,children:"Back to login"})]})]})});var P};var Fe={container:"verifyMagiclink-module__container___qrSXf",card:"verifyMagiclink-module__card___niKgr",title:"verifyMagiclink-module__title___SumxD",verificationContent:"verifyMagiclink-module__verificationContent___NdsS0",spinner:"verifyMagiclink-module__spinner___lnW1k",successIcon:"verifyMagiclink-module__successIcon___XjFEM",checkIcon:"verifyMagiclink-module__checkIcon___I0JOP",successText:"verifyMagiclink-module__successText___lO5Qq"};z(".verifyMagiclink-module__container___qrSXf{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.verifyMagiclink-module__card___niKgr{background-color:var(--seamless-surface,#1f2937);border-radius:.5rem;box-shadow:0 0 10px var(--seamless-shadow,rgba(0,0,0,.3));max-width:28rem;padding:1.5rem;width:100%}.verifyMagiclink-module__title___SumxD{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:700;margin-bottom:1rem;text-align:center}.verifyMagiclink-module__verificationContent___NdsS0{align-items:center;display:flex;flex-direction:column;gap:14px;margin:20px 0}.verifyMagiclink-module__spinner___lnW1k{animation:verifyMagiclink-module__spin___2lGzj .9s linear infinite;border:3px solid var(--seamless-border,hsla(0,0%,100%,.15));border-radius:50%;border-top-color:var(--seamless-accent,#60a5fa);height:28px;width:28px}.verifyMagiclink-module__successIcon___XjFEM{align-items:center;background:rgba(16,185,129,.15);border-radius:50%;display:flex;height:36px;justify-content:center;width:36px}.verifyMagiclink-module__checkIcon___I0JOP{animation:verifyMagiclink-module__checkPop___-3qJu .25s ease-out;color:var(--seamless-success,#34d399);height:22px;width:22px}.verifyMagiclink-module__successText___lO5Qq{color:var(--seamless-success,#34d399);font-size:.9rem}@keyframes verifyMagiclink-module__checkPop___-3qJu{0%{opacity:0;transform:scale(.6)}80%{transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@keyframes verifyMagiclink-module__spin___2lGzj{to{transform:rotate(1turn)}}");const je=()=>{const[a]=s(),o=i(),t=a.get("token"),[n,l]=h(""),[c,m]=h(""),u=_(),{refreshSession:g}=d();return f(()=>{let e=!0,r=null,a=null;return(async()=>{if(!t)return e&&l("Missing token for verification."),void console.error("No magic-link token found.");const{error:i}=await u.verifyMagicLink(t);if(i)return console.error("Failed to verify token"),void(e&&l("Failed to verify token"));await g(),e&&(r=new BroadcastChannel("seamless-auth"),r.postMessage({type:"MAGIC_LINK_AUTH_SUCCESS"}),m("You have been verified on the device and browser that initiated this request"),a=setTimeout(()=>{e&&o("/")},900))})(),()=>{e=!1,r?.close(),a&&clearTimeout(a)}},[t,u,o,g]),r("div",{className:Fe.container,children:e("div",{className:Fe.card,children:[r("h1",{className:Fe.title,children:"Verifying your login"}),e("div",{className:Fe.verificationContent,children:[!c&&!n&&r("div",{className:Fe.spinner}),c&&r("div",{className:Fe.successIcon,children:r("svg",{viewBox:"0 0 24 24",className:Fe.checkIcon,fill:"none",stroke:"currentColor",strokeWidth:"2",children:r("path",{d:"M5 13l4 4L19 7"})})}),!c&&!n&&r("p",{className:Fe.helperText,children:"Please wait while we securely verify your sign-in link."}),c&&r("p",{className:Fe.successText,children:"Login verified. Redirecting…"}),n&&r("p",{className:Fe.error,children:n})]})]})})};const De={oauth_missing_email:"Your provider account did not share an email address. Add an email to that account and make it visible, then try again.",oauth_email_not_verified:"The email address on your provider account is not verified. Verify it with your provider, then try again.",oauth_missing_subject:"Your provider did not return a usable account identifier. Try again, or sign in with a different method.",oauth_invalid_id_token:"Your provider sent a sign-in response that could not be verified. Try again, or sign in with a different method.",oauth_provider_retired:"Your organization no longer signs in with this provider. Sign in with your passkey or another method instead."},Re=()=>{const{finishOAuthLogin:o}=d(),t=i(),[n]=s(),[l,c]=h(""),_=v(!1);return f(()=>{if(_.current)return;_.current=!0;const e=n.get("code"),r=n.get("state"),a=sessionStorage.getItem(re);e&&r&&a?o({providerId:a,code:e,state:r}).then(({data:e,error:r})=>{if(r){const e=w(r);return void c(e?De[e]:"We could not complete sign-in. Please try again.")}sessionStorage.removeItem(re);const a=function(e){if(!e)return null;try{const r=new URL(e,window.location.origin);return r.origin!==window.location.origin?null:`${r.pathname}${r.search}${r.hash}`}catch{return null}}(e?.returnTo)??"/";"enroll_passkey"!==e?.nextStep?t(a):t(O,{state:{returnTo:a}})}):c("This sign-in link is missing required information.")},[o,t,n]),e("div",{className:Fe.container,children:[r("h2",{className:Fe.title,children:l?"Sign-in failed":"Completing sign-in..."}),l&&e(a,{children:[r("p",{children:l}),r("button",{type:"button",onClick:()=>t("/login"),children:"Back to login"})]})]})};var Ve="magiclink-module__container___45zcA",Ge="magiclink-module__card___Au9oN",We="magiclink-module__iconWrapper___k5ndr",Ue="magiclink-module__mailIcon___Pwb7q",Ke="magiclink-module__iconRing___bdLvf",Ye="magiclink-module__heading___b9cre",$e="magiclink-module__message___kiVFj",He="magiclink-module__identifier___JtcFM",Je="magiclink-module__helperText___7Mlfh",Ze="magiclink-module__actions___64I-3",Qe="magiclink-module__secondaryButton___BntAI",Xe="magiclink-module__cooldown___Ib4rm",er="magiclink-module__linkButton___maJiv";z(".magiclink-module__container___45zcA{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center}.magiclink-module__card___Au9oN{background-color:var(--seamless-surface,#1f2937);border-radius:.75rem;box-shadow:0 10px 25px var(--seamless-shadow,rgba(0,0,0,.25));max-width:420px;padding:2.5rem 2rem;text-align:center;width:100%}.magiclink-module__iconWrapper___k5ndr{display:flex;justify-content:center;margin-bottom:1.25rem;position:relative}.magiclink-module__mailIcon___Pwb7q{color:var(--seamless-accent-soft,#a5b4fc);height:38px;width:38px;z-index:2}.magiclink-module__iconRing___bdLvf{animation:magiclink-module__pulse___YGm-I 2s infinite;background:rgba(99,102,241,.15);border-radius:50%;height:72px;position:absolute;width:72px}@keyframes magiclink-module__pulse___YGm-I{0%{opacity:.8;transform:scale(.6)}70%{opacity:0;transform:scale(1.4)}to{opacity:0}}.magiclink-module__heading___b9cre{font-size:1.55rem;font-weight:600;margin-bottom:.75rem}.magiclink-module__message___kiVFj{color:var(--seamless-text-muted,#d1d5db);font-size:.95rem;line-height:1.4;margin-bottom:1rem}.magiclink-module__identifier___JtcFM{background:var(--seamless-surface-raised,hsla(0,0%,100%,.05));border-radius:6px;display:inline-block;font-size:1rem;font-weight:600;margin-bottom:1rem;padding:.45rem .6rem}.magiclink-module__helperText___7Mlfh{color:var(--seamless-text-muted,#9ca3af);font-size:.85rem;line-height:1.4;margin-bottom:.6rem}.magiclink-module__actions___64I-3{display:flex;flex-direction:column;gap:.6rem;margin-top:1.6rem}.magiclink-module__secondaryButton___BntAI{background:var(--seamless-surface,#111827);border:1px solid var(--seamless-border,#374151);border-radius:8px;color:var(--seamless-text,#fff);cursor:pointer;font-weight:500;padding:.65rem}.magiclink-module__secondaryButton___BntAI:hover:not(:disabled){background:var(--seamless-surface-hover,#1f2937)}.magiclink-module__secondaryButton___BntAI:disabled{cursor:not-allowed;opacity:.5}.magiclink-module__cooldown___Ib4rm{color:var(--seamless-text-muted,#9ca3af);font-size:.8rem}.magiclink-module__linkButton___maJiv{background:none;border:none;color:var(--seamless-accent-soft,#a5b4fc);cursor:pointer;font-size:.85rem;margin-top:.4rem}.magiclink-module__linkButton___maJiv:hover{text-decoration:underline}");const rr=()=>{const{refreshSession:a}=d(),o=i(),s=t(),n=_(),l=s.state?.identifier,[c,m]=h(30);f(()=>{const e=setInterval(()=>{m(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]);const u=b(async()=>{const{data:e,error:r}=await n.checkMagicLink();return!r&&"Success"===e?.message},[n]);return f(()=>{const e=new BroadcastChannel("seamless-auth");return e.onmessage=async e=>{"MAGIC_LINK_AUTH_SUCCESS"===e.data?.type&&await u()&&(await a(),o("/"))},()=>{e.close()}},[u,o,a]),f(()=>{const e=setInterval(async()=>{try{await u()&&(await a(),o("/"))}catch{}},5e3);return()=>clearInterval(e)},[u,a,o]),r("div",{className:Ve,children:e("div",{className:Ge,children:[e("div",{className:We,children:[r("div",{className:Ke}),e("svg",{className:Ue,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[r("path",{d:"M4 6h16v12H4z"}),r("path",{d:"m4 6 8 6 8-6"})]})]}),r("h2",{className:Ye,children:"Check your email"}),r("p",{className:$e,children:"If an account exists for this address, we sent a secure sign-in link."}),l&&r("div",{className:He,children:l}),r("p",{className:Je,children:"Open the email and click the link to finish signing in."}),r("p",{className:Je,children:"Didn’t receive anything? Check your spam folder or try creating a new account."}),e("div",{className:Ze,children:[r("button",{className:Qe,disabled:c>0,onClick:async()=>{c>0||(await n.requestMagicLink(),m(30))},children:"Resend link"}),c>0&&e("div",{className:Xe,children:["Available in ",c,"s"]}),r("button",{className:er,onClick:()=>o("/login"),children:"Change email or phone"})]})]})})},ar=()=>e(n,{children:[r(l,{path:N,element:r(oe,{})}),r(l,{path:P,element:r(te,{})}),r(l,{path:C,element:r(Ee,{})}),r(l,{path:I,element:r(Le,{})}),r(l,{path:T,element:r(je,{})}),r(l,{path:M,element:r(Re,{})}),r(l,{path:O,element:r(ye,{})}),r(l,{path:S,element:r(rr,{})}),r(l,{path:"*",element:r(c,{to:N,replace:!0})})]});export{ar as AuthRoutes};
|
|
2
|
+
import{jsxs as e,jsx as r,Fragment as a}from"react/jsx-runtime";import{useHref as o,useNavigate as i,useLocation as t,useSearchParams as n,Routes as s,Route as l,Navigate as c}from"react-router-dom";import{u as d,a as _,c as m,b as u,F as g,h as p}from"./chunks/shared-BzrBuR0z.js";import{useState as h,useEffect as f,useRef as v,useCallback as b}from"react";import y from"libphonenumber-js";import{isUnauthenticated as k,getPasskeyPolicyErrorCode as x,getOAuthErrorCode as w}from"@seamless-auth/client";const N="/login",P="/passkey-login",C="/verify-phone-otp",T="/verify-email-otp",I="/verify-magiclink",M="/oauth/callback",O="/register-passkey",S="/magic-link-sent";function z(e,r){void 0===r&&(r={});var a=r.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===a&&o.firstChild?o.insertBefore(i,o.firstChild):o.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}var A="login-module__container___YggDx",B="login-module__card___Ub-Py",q="login-module__heading___neEqb",L="login-module__inputGroup___P6qgS",E="login-module__label___mx5vu",F="login-module__input___U07lW",j="login-module__helperText___kDQ4-",R="login-module__error___40zxh",D="login-module__button___0kFBs",V="login-module__submitHint___qOS5Z",G="login-module__toggle___1JiG1",W="login-module__fallbackCard___HdIk-",U="login-module__fallbackHeader___-il2v",K="login-module__fallbackDescription___ea5EB",Y="login-module__fallbackActions___AD3ni",$="login-module__fallbackActionButton___lFgWf",H="login-module__actionTitle___ycrMp",J="login-module__actionSubtext___opaIV",Z="login-module__linkButton___5lsoe";z(".login-module__container___YggDx{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center}.login-module__card___Ub-Py{background-color:var(--seamless-surface,#1f2937);border-radius:.5rem;box-shadow:0 4px 6px var(--seamless-shadow,rgba(0,0,0,.1));max-width:28rem;padding:2rem;width:100%}.login-module__heading___neEqb{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:700;margin-bottom:1.5rem;text-align:center}.login-module__message___qSejT{color:var(--seamless-success,#68d391);text-align:center}.login-module__inputGroup___P6qgS{margin-bottom:1rem}.login-module__label___mx5vu{color:var(--seamless-text-muted,#d1d5db);display:block}.login-module__input___U07lW{background-color:var(--seamless-surface-raised,#4b5563);border:1px solid var(--seamless-border,#d1d5db);border-radius:.375rem;margin-top:.25rem;padding:.5rem;width:100%}.login-module__input___U07lW:focus{box-shadow:0 0 0 2px var(--seamless-accent,#3b82f6);outline:none}.login-module__helperText___kDQ4-{color:var(--seamless-text-muted,#9ca3af);font-size:.75rem;margin-top:.5rem}.login-module__error___40zxh{color:var(--seamless-danger,#f87171);font-size:.875rem}.login-module__button___0kFBs{background-color:var(--seamless-accent,#2563eb);border-radius:.375rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;margin-top:1rem;padding:.5rem;transition:background-color .3s,opacity .3s;width:100%}.login-module__button___0kFBs:hover:not(:disabled){background-color:var(--seamless-accent-hover,#1d4ed8)}.login-module__button___0kFBs:disabled{cursor:not-allowed;opacity:.6}.login-module__submitHint___qOS5Z{color:var(--seamless-text-muted,#9ca3af);font-size:.75rem;margin-top:.5rem;text-align:center}.login-module__toggle___1JiG1{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}.login-module__underline___gs-RS{text-decoration:underline}.login-module__phoneRow___oeNtq{display:grid;gap:.5rem;grid-template-columns:1fr 3fr;margin-top:.25rem}.login-module__phoneInput___2MPQC,.login-module__select___rRV1O{background-color:var(--seamless-surface-raised,#4b5563);border:1px solid var(--seamless-border,#d1d5db);border-radius:.375rem;padding:.5rem;width:100%}@media (max-width:500px){.login-module__phoneRow___oeNtq{grid-template-columns:1fr}}.login-module__fallbackCard___HdIk-{background:var(--seamless-surface-raised,hsla(0,0%,100%,.04));border:1px solid var(--seamless-border,hsla(0,0%,100%,.08));border-radius:12px;display:flex;flex-direction:column;gap:14px;margin-top:18px;padding:18px}.login-module__fallbackHeader___-il2v{color:var(--seamless-text,#f3f4f6);font-size:.95rem;font-weight:600}.login-module__fallbackDescription___ea5EB{color:var(--seamless-text-muted,#9ca3af);font-size:.85rem;line-height:1.4}.login-module__fallbackActions___AD3ni{display:flex;flex-direction:column;gap:10px}.login-module__fallbackActionButton___lFgWf{background:var(--seamless-surface,rgba(0,0,0,.25));border:1px solid var(--seamless-border,hsla(0,0%,100%,.08));border-radius:8px;cursor:pointer;display:flex;flex-direction:column;padding:12px 14px;text-align:left;transition:all .15s ease}.login-module__fallbackActionButton___lFgWf:hover{background:var(--seamless-surface-hover,hsla(0,0%,100%,.06));border-color:var(--seamless-border,hsla(0,0%,100%,.15))}.login-module__actionTitle___ycrMp{color:var(--seamless-text,#f9fafb);font-size:.9rem;font-weight:500}.login-module__actionSubtext___opaIV{color:var(--seamless-text-muted,#9ca3af);font-size:.75rem;margin-top:2px}.login-module__linkButton___5lsoe{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.8rem;margin-top:6px}.login-module__linkButton___5lsoe:hover{text-decoration:underline}");const Q=e=>{if("string"!=typeof e)return!1;const r=e.trim();if(r.length<3||r.length>320)return!1;const a=r.split("@");if(2!==a.length)return!1;const[o,i]=a;return!(!/^[A-Za-z0-9._%+-]+$/.test(o)||o.startsWith(".")||o.endsWith(".")||o.includes(".."))&&!(!/^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/.test(i)||i.startsWith("-")||i.endsWith("-")||i.startsWith(".")||i.endsWith(".")||i.includes(".."))},X=e=>{const r=y(e);return r?.isValid()||!1};const ee=({identifier:a,onMagicLink:o,onEmailOtp:i,onPhoneOtp:t,onPasskeyRetry:n,loginMethods:s})=>{const l=new Set(s??["passkey","magic_link","phone_otp"]),c=l.has("magic_link")&&Q(a),d=l.has("email_otp")&&Boolean(i)&&Q(a),_=l.has("phone_otp")&&X(a),m=l.has("passkey")&&Boolean(n);return c||d||_||m?e("div",{className:W,children:[r("div",{className:U,children:"Choose a sign-in method"}),r("p",{className:K,children:"Choose another secure sign-in method."}),e("div",{className:Y,children:[c&&e("button",{type:"button",className:$,onClick:o,children:[r("span",{className:H,children:"Email Magic Link"}),r("span",{className:J,children:"Send a secure sign-in link to your email"})]}),d&&e("button",{type:"button",className:$,onClick:i,children:[r("span",{className:H,children:"Email Code"}),r("span",{className:J,children:"Receive a one-time code by email"})]}),_&&e("button",{type:"button",className:$,onClick:t,children:[r("span",{className:H,children:"Text Message Code"}),r("span",{className:J,children:"Receive a one-time code via SMS"})]})]}),m&&r("button",{type:"button",className:Z,onClick:n,children:"Try passkey anyway"})]}):null},re="seamless:oauth:provider",ae=()=>{const{listOAuthProviders:a,startOAuthLogin:i,finishOAuthLogin:t,ports:n}=d(),s=o("/oauth/callback"),[l,c]=h([]),[_,m]=h("");if(f(()=>{let e=!0;return a().then(({data:r})=>{e&&c(r?.providers??[])}),()=>{e=!1}},[a]),0===l.length)return null;return e("div",{className:Y,children:[l.map(a=>r("button",{type:"button",className:$,onClick:()=>(async e=>{m(""),sessionStorage.setItem(re,e);const r=new URL(s,window.location.origin).toString(),{data:a,error:o}=await i({providerId:e,redirectUri:r});if(o)return void m("Could not start sign-in with this provider.");const l=await n.oauthRedirect.open(a.authorizationUrl,r);"callback"===l.type&&(await t({providerId:e,code:l.code,state:l.state})).error&&m("Could not finish sign-in with this provider.")})(a.id),children:e("span",{className:H,children:["Continue with ",a.name]})},a.id)),_&&r("p",{className:R,children:_})]})},oe=()=>{const o=i(),{hasSignedInBefore:t,login:n,handlePasskeyLogin:s}=d(),l=_(),{passkeySupported:c}=m(),{loginMethods:p}=u(),[v,b]=h(""),[y,k]=h(""),[x,w]=h("register"),[N,P]=h(""),[I,M]=h(""),[O,z]=h(""),[W,U]=h(!1),[K,Y]=h(null);f(()=>{t&&w("login")},[t]);const $=()=>"login"===x?Q(v)||X(v):Q(y);return r("div",{className:A,children:e("div",{className:B,children:[r("h2",{className:q,children:"login"===x?"Sign In":"Create Account"}),e(a,{children:[e("form",{onSubmit:async e=>{e.preventDefault(),P(""),U(!1);try{if("login"===x){const{data:e,error:r}=await n(v,c);if(r)return void P("Failed to start sign-in. Please try again.");const a=e?.loginMethods?.length?e.loginMethods:p??g;if(Y(a),c&&a.includes("passkey")){const{error:e}=await s();return e?(U(!0),void P("Passkey sign-in could not be completed. Choose another sign-in method.")):void o("/")}return void U(!0)}"register"===x&&await(async()=>{P("");const{data:e,error:r}=await l.register({email:y});r?P("Failed to register. Please try again."):"Success"===e.message?o(T):P("An unexpected error occurred. Try again. If the problem persists, contact support.")})()}catch{console.error("Failed to continue sign-in."),P("Failed to continue sign-in. Please try again.")}},children:["login"===x&&e("div",{className:L,children:[r("label",{htmlFor:"identifier",className:E,children:"Email Address / Phone Number"}),r("input",{id:"identifier",type:"text",value:v,onChange:e=>{const r=e.target.value;b(r)},autoComplete:"off",placeholder:"Email or Phone Number",className:F,onBlur:()=>{if(v){const e=Q(v)||X(v);z(e?"":"Please enter a valid email or phone number")}},required:!0}),r("p",{className:j,children:"Phone numbers must include a country code e.g. +1"}),W&&r(ee,{identifier:v,onMagicLink:async()=>{const{error:e}=await l.requestMagicLink();e?P("Failed to send magic link."):o(S,{state:{identifier:v}})},onEmailOtp:async()=>{const{error:e}=await l.requestLoginEmailOtp();e?P("Failed to send email code."):o(T,{state:{flow:"login"}})},onPhoneOtp:async()=>{const{error:e}=await l.requestLoginPhoneOtp();e?P("Failed to send OTP."):o(C,{state:{flow:"login"}})},onPasskeyRetry:c?s:void 0,loginMethods:K}),O&&r("p",{className:R,children:O})]}),"register"===x&&e("div",{className:L,children:[r("label",{htmlFor:"email",className:E,children:"Email Address"}),r("input",{id:"email",type:"email",value:y,onChange:e=>{const r=e.target.value;k(r)},autoComplete:"off",className:F,onBlur:()=>{if(y){const e=Q(y);M(e?"":"Please enter a valid email")}},required:!0}),I&&r("p",{className:R,children:I})]}),r("button",{type:"submit",className:D,disabled:!$(),"aria-describedby":"seamless-submit-hint",children:"login"===x?"Login":"Register"}),r("p",{id:"seamless-submit-hint",role:"status",className:V,children:"login"===x?v?$()?"Ready to continue.":"This does not look like a complete email or phone number yet.":"Enter your email or phone number to continue.":y?$()?"Ready to continue.":"This does not look like a complete email address yet.":"Enter your email address to continue."}),N&&r("p",{className:R,children:N}),r("button",{type:"button",onClick:()=>w("login"===x?"register":"login"),className:G,children:"login"===x?"Don't have an account? Create one":"Already have an account? Sign in"})]}),r(ae,{})]})]})})};var ie={container:"passKeyLogin-module__container___IUKxF",card:"passKeyLogin-module__card___2sKM1",title:"passKeyLogin-module__title___HZxvc",button:"passKeyLogin-module__button___FvR4I"};z(".passKeyLogin-module__container___IUKxF{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.passKeyLogin-module__card___2sKM1{background-color:var(--seamless-surface,#1f2937);border-radius:1rem;box-shadow:0 4px 20px var(--seamless-shadow,rgba(0,0,0,.4));display:flex;flex-direction:column;gap:1.5rem;max-width:400px;padding:2rem;width:100%}.passKeyLogin-module__title___HZxvc{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:600;text-align:center}.passKeyLogin-module__button___FvR4I{background-color:var(--seamless-accent,#2563eb);border:1px solid var(--seamless-accent,#3b82f6);border-radius:.5rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;font-weight:500;padding:.75rem 1rem;text-align:center;transition:background-color .2s ease;width:100%}.passKeyLogin-module__button___FvR4I:hover{background-color:var(--seamless-accent-hover,#1d4ed8)}@media (max-width:480px){.passKeyLogin-module__card___2sKM1{padding:1.25rem}.passKeyLogin-module__button___FvR4I{font-size:1rem}}");const te=()=>{const a=i(),{handlePasskeyLogin:o}=d(),[t,n]=h("");return r("div",{className:ie.container,children:e("div",{className:ie.card,children:[r("h2",{className:ie.title,children:"Login with Passkey"}),r("button",{onClick:async()=>{n("");const{error:e}=await o();e?n("Passkey sign-in could not be completed. Try another sign-in method."):a("/")},className:ie.button,children:"Use Passkey"}),t&&r("p",{className:ie.error,children:t})]})})};var ne="registerPasskey-module__container___jqEh8",se="registerPasskey-module__card___MJAyC",le="registerPasskey-module__loading___Q4i1x",ce="registerPasskey-module__spinner___V1nhd",de="registerPasskey-module__supported___ihTih",_e="registerPasskey-module__title___vn2Qu",me="registerPasskey-module__description___AWmO-",ue="registerPasskey-module__button___D3b4B",ge="registerPasskey-module__message___RiOw-",pe="registerPasskey-module__success___HP5aX",he="registerPasskey-module__error___hGiqE",fe="registerPasskey-module__skip___1hDyU",ve="registerPasskey-module__secondary___bnOB4";z(".registerPasskey-module__container___jqEh8{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.registerPasskey-module__card___MJAyC{background-color:var(--seamless-surface,#1f2937);border-radius:1rem;box-shadow:0 4px 20px var(--seamless-shadow,rgba(0,0,0,.4));max-width:400px;padding:1.5rem;width:100%}.registerPasskey-module__loading___Q4i1x{align-items:center;background-color:var(--seamless-surface,#f9fafb);border-radius:.75rem;box-shadow:0 2px 8px var(--seamless-shadow,rgba(0,0,0,.1));color:var(--seamless-text,#374151);display:flex;font-weight:500;gap:.75rem;justify-content:center;padding:1.5rem}.registerPasskey-module__spinner___V1nhd{animation:registerPasskey-module__spin___oYcsC 1s linear infinite;border-bottom:2px solid var(--seamless-accent,#3b82f6);border-left:2px solid transparent;border-radius:9999px;border-right:2px solid transparent;border-top:2px solid var(--seamless-accent,#3b82f6);height:1.5rem;width:1.5rem}@keyframes registerPasskey-module__spin___oYcsC{to{transform:rotate(1turn)}}.registerPasskey-module__supported___ihTih{background-color:var(--seamless-surface,#ecfdf5);border-radius:.75rem;box-shadow:0 2px 12px var(--seamless-shadow,rgba(0,0,0,.1));color:var(--seamless-text,#065f46);padding:1.25rem}.registerPasskey-module__title___vn2Qu{font-size:1.125rem;font-weight:600;margin-bottom:.5rem}.registerPasskey-module__description___AWmO-{margin-bottom:1rem}.registerPasskey-module__button___D3b4B{background-color:var(--seamless-accent,#059669);border:none;border-radius:.5rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;font-weight:500;padding:.75rem 1rem;transition:background-color .2s ease;width:100%}.registerPasskey-module__button___D3b4B:hover{background-color:var(--seamless-accent-hover,#047857)}.registerPasskey-module__message___RiOw-{font-size:.875rem;margin-top:1rem}.registerPasskey-module__success___HP5aX{color:var(--seamless-success,#6ee7b7)}.registerPasskey-module__error___hGiqE{color:var(--seamless-danger,#f87171)}.registerPasskey-module__skip___1hDyU{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}.registerPasskey-module__skip___1hDyU:disabled{cursor:default;opacity:.6}.registerPasskey-module__secondary___bnOB4{background:none;border:1px solid var(--seamless-accent,#059669);border-radius:.5rem;color:var(--seamless-accent,#059669);cursor:pointer;font-weight:500;margin-top:.75rem;padding:.75rem 1rem;transition:background-color .2s ease;width:100%}.registerPasskey-module__secondary___bnOB4:hover:not(:disabled){background-color:var(--seamless-accent-muted,rgba(5,150,105,.1))}.registerPasskey-module__secondary___bnOB4:disabled{cursor:default;opacity:.6}");const be={attachment_not_allowed:"This application does not accept that kind of authenticator. Try the other option.",synced_passkey_not_allowed:"This passkey syncs to a password manager, and this application requires one that stays on a single device, such as a security key.",authenticator_not_allowed:"This application does not accept this authenticator.",prf_required:"This authenticator does not support a feature this application requires."};const ye=()=>{const{refreshSession:a}=d(),o=_(),{passkeySupported:n,loading:s}=m(),{loginMethods:l,loading:c}=u(),g=i(),f=function(e){const r=e?.returnTo;return"string"!=typeof r||!r.startsWith("/")||r.startsWith("//")||r.startsWith("/\\")?"/":r}(t().state),[v,b]=h("idle"),[y,w]=h(""),N=p(l),P=async()=>{await a(),g(f)},C=async e=>{const{platform:r,browser:i,deviceInfo:t}=function(){const e=navigator.userAgent.toLowerCase();let r="unknown",a="unknown";return/iphone|ipad|ipod/.test(e)?r="ios":/android/.test(e)?r="android":/mac os/.test(e)?r="mac":/windows/.test(e)?r="windows":/linux/.test(e)&&(r="linux"),navigator.brave?a="brave":/edg\/|edgios/.test(e)?a="edge":/opr\/|opt\/|opera/.test(e)?a="opera":/vivaldi/.test(e)?a="vivaldi":/samsungbrowser/.test(e)?a="samsung":/firefox|fxios/.test(e)?a="firefox":/chrome|crios/.test(e)?a="chrome":/safari/.test(e)&&(a="safari"),{platform:r,browser:a,deviceInfo:`${r} • ${a}`}}(),n={friendlyName:t,platform:r,browser:i,deviceInfo:t};b("loading");try{const{error:r}=await o.registerPasskey({metadata:n,attachment:e});if(r)throw r;await a(),b("success"),w("Passkey registered successfully."),g(f)}catch(e){console.error("Passkey registration failed."),b("error"),w(function(e){const r=x(e);return r?be[r]:void 0}(e)??(k(e)?"Your session expired before the passkey was saved. Sign in again to add one.":"Error registering passkey."))}};return r("div",{className:ne,children:r("div",{className:se,children:e("div",s||c?{className:le,children:[r("div",{className:ce}),r("span",{children:"Checking for Passkey Support..."})]}:n?{className:de,children:[r("h2",{className:_e,children:"Secure Your Account with a Passkey"}),r("p",{className:me,children:"Your device supports passkeys! Register one to skip passwords forever."}),r("button",{onClick:()=>C(),disabled:"loading"===v,className:ue,children:"loading"===v?"Registering...":"Register Passkey"}),r("button",{type:"button",onClick:()=>C("cross-platform"),disabled:"loading"===v,className:ve,children:"Use a security key instead"}),y&&r("p",{className:`${ge} ${"success"===v?pe:he}`,children:y}),N&&r("button",{type:"button",onClick:P,disabled:"loading"===v,className:fe,children:"Skip for now"})]}:{className:de,children:[r("h2",{className:_e,children:"Passkeys are not available here"}),r("p",{className:me,children:N?"This device does not support passkeys. You can continue without one and add a passkey later from a device that does.":"This device does not support passkeys, and this application requires one to sign in. Try again from a device or browser that supports them."}),N&&r("button",{type:"button",onClick:P,className:ue,children:"Continue"})]})})})};var ke="verifyOTP-module__container___wgoDE",xe="verifyOTP-module__card___3cs2p",we="verifyOTP-module__title___fZ-1d",Ne="verifyOTP-module__subtitle___dGSu3",Pe="verifyOTP-module__error___GEtlG",Ce="verifyOTP-module__success___46TjG",Te="verifyOTP-module__form___jiGG-",Ie="verifyOTP-module__label___Zq5Mi",Me="verifyOTP-module__timer___smq-a",Oe="verifyOTP-module__resend___PlmkG",Se="verifyOTP-module__button___8pIuO",ze="verifyOTP-module__toggle___wbzVa";z(".verifyOTP-module__container___wgoDE{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.verifyOTP-module__card___3cs2p{background-color:var(--seamless-surface,#1f2937);border-radius:.5rem;box-shadow:0 0 10px var(--seamless-shadow,rgba(0,0,0,.3));max-width:28rem;padding:1.5rem;width:100%}.verifyOTP-module__title___fZ-1d{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:700;margin-bottom:1rem;text-align:center}.verifyOTP-module__subtitle___dGSu3{color:var(--seamless-text-muted,#9ca3af);font-size:.875rem;margin-bottom:1.5rem;text-align:center}.verifyOTP-module__error___GEtlG{color:var(--seamless-danger,#f87171);margin-bottom:1rem;text-align:center}.verifyOTP-module__success___46TjG{color:var(--seamless-success,#34d399);margin-bottom:.75rem;text-align:center}.verifyOTP-module__form___jiGG-{display:flex;flex-direction:column;gap:1rem}.verifyOTP-module__label___Zq5Mi{color:var(--seamless-text-muted,#d1d5db);display:block;font-size:.875rem;margin-bottom:.25rem}.verifyOTP-module__timer___smq-a{color:var(--seamless-warning,#facc15);font-size:.875rem}.verifyOTP-module__input___yqIXM{background-color:var(--seamless-surface-raised,#374151);border:1px solid var(--seamless-border,#4b5563);border-radius:.375rem;color:var(--seamless-text,#fff);outline:none;padding:.5rem;width:100%}.verifyOTP-module__input___yqIXM:focus{box-shadow:0 0 0 2px var(--seamless-accent,#3b82f6)}.verifyOTP-module__resend___PlmkG{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.75rem;margin-top:.25rem;text-decoration:underline}.verifyOTP-module__resend___PlmkG:hover{color:var(--seamless-accent,#3b82f6)}.verifyOTP-module__button___8pIuO{background-color:var(--seamless-accent,#2563eb);border:none;border-radius:.375rem;color:var(--seamless-accent-contrast,#fff);cursor:pointer;padding:.5rem;transition:background-color .2s;width:100%}.verifyOTP-module__button___8pIuO:hover{background-color:var(--seamless-accent-hover,#1d4ed8)}.verifyOTP-module__toggle___wbzVa{background:none;border:none;color:var(--seamless-accent-soft,#60a5fa);cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}");var Ae="otpInput-module__otpContainer___MUjby",Be="otpInput-module__otpInput___3YMVm";z(".otpInput-module__otpContainer___MUjby{display:flex;gap:8px;justify-content:center;margin-top:8px}.otpInput-module__otpInput___3YMVm{background:var(--seamless-surface-raised,#374151);border:1px solid var(--seamless-border,#4b5563);border-radius:8px;color:var(--seamless-text,#fff);font-size:1.2rem;height:48px;text-align:center;transition:border-color .15s ease,box-shadow .15s ease;width:42px}.otpInput-module__otpInput___3YMVm:focus{border-color:var(--seamless-accent,#60a5fa);box-shadow:0 0 0 2px var(--seamless-accent,rgba(96,165,250,.25));outline:none}");const qe=({length:e=6,value:a,inputMode:o="numeric",onChange:i,name:t="otp"})=>{const n=v([]),s=a.split("").concat(Array(e).fill("")).slice(0,e),l=(e,r)=>{var a;if(r.length>1)c(e,r);else if(!r||(a=r,"numeric"===o?/^\d$/.test(a):/^[a-zA-Z]$/.test(a))){const a=[...s];a[e]=r;const o=a.join("");i(o),r&&n.current[e+1]&&n.current[e+1]?.focus()}},c=(r,a)=>{let t=a;t="numeric"===o?a.replace(/\D/g,""):a.replace(/[^a-zA-Z]/g,"");const l=t.slice(0,e).split(""),c=[...s];l.forEach((a,o)=>{r+o<e&&(c[r+o]=a)}),i(c.join("")),n.current[Math.min(r+l.length,e-1)]?.focus()};return r("div",{className:Ae,role:"group","aria-label":"One-time password input",onPaste:e=>{e.preventDefault(),c(0,e.clipboardData.getData("text"))},children:s.map((a,c)=>r("input",{ref:e=>n.current[c]=e,type:"text",inputMode:"numeric"===o?"numeric":"text",autoComplete:"one-time-code",name:`${t}-${c}`,maxLength:1,value:a,className:Be,onChange:e=>l(c,e.target.value),onKeyDown:r=>((r,a)=>{if("Backspace"===a.key){a.preventDefault();const e=[...s];s[r]?(e[r]="",i(e.join(""))):r>0&&(e[r-1]="",i(e.join("")),n.current[r-1]?.focus())}"ArrowLeft"===a.key&&r>0&&n.current[r-1]?.focus(),"ArrowRight"===a.key&&r<e-1&&n.current[r+1]?.focus()})(c,r),"aria-label":`Digit ${c+1}`},c))})},Le=()=>{const a=i(),o=t(),{refreshSession:n}=d(),s="login"===o.state?.flow,[l,c]=h(""),[m,u]=h(null),[g,p]=h(""),[v,b]=h(!1),[y,k]=h(""),[x,w]=h(300),N=_(),P=async()=>{if(b(!0),!m){const{error:e}=s?await N.verifyLoginPhoneOtp(l):await N.verifyPhoneOtp(l);if(e)p("Verification failed.");else{if(s)return await n(),void a("/");u(!0)}}b(!1)},C=async()=>{k(""),await(async()=>{p("");const{error:e}=s?await N.requestLoginPhoneOtp():await N.requestPhoneOtp();e?p("Failed to send SMS code. If this persists, refresh the page and try again."):k("Verification SMS has been resent.")})(),k("Verification SMS has been resent.")};return f(()=>{const e=setInterval(()=>{w(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),f(()=>{m&&!s&&(async()=>{const{error:e}=await N.requestEmailOtp();e?p("Failed to send Email code. If this persists, refresh the page and try registering again."):a(T)})()},[m,s,a,N]),r("div",{className:ke,children:e("div",{className:xe,children:[r("h2",{className:we,children:"Verify Your Phone Number"}),r("p",{className:Ne,children:"Enter the code sent to your phone number."}),g&&r("p",{className:Pe,children:g}),y&&r("p",{className:Ce,children:y}),e("form",{onSubmit:async e=>{if(e.preventDefault(),p(""),6===l.length){b(!0);try{await P()}catch{p("Unexpected error occurred.")}finally{b(!1)}}else p("Please enter a valid code.")},className:Te,children:[e("div",{children:[e("label",{htmlFor:"phoneCode",className:Ie,children:["Phone Verification Code ",(M=m,!0===M?r("span",{className:"text-green-400 ml-2",children:"✅"}):!1===M?r("span",{className:"text-red-400 ml-2",children:"❌"}):null)," -"," ",e("span",{className:Me,children:["Code expires in: ",(I=x,`${Math.floor(I/60).toString().padStart(2,"0")}:${(I%60).toString().padStart(2,"0")}`)]})]}),r(qe,{length:6,value:l,onChange:c}),r("button",{type:"button",onClick:()=>C(),className:Oe,children:"Resend code to phone"})]}),r("button",{type:"submit",className:Se,children:v?"Verifying...":"Verify & Continue"}),r("button",{type:"button",onClick:()=>a("/login"),className:ze,children:"Back to login"})]})]})});var I,M},Ee=()=>{const a=i(),o=t(),{refreshSession:n}=d(),s=_(),{passkeySupported:l}=m(),c="login"===o.state?.flow,[u,g]=h(!1),[p,v]=h(""),[b,y]=h(300),[k,x]=h(""),[w,N]=h("");return f(()=>{const e=setInterval(()=>{y(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),r("div",{className:ke,children:e("div",{className:xe,children:[r("h2",{className:we,children:"Verify Your Email"}),r("p",{className:Ne,children:"We sent you a verification email. Enter the code below."}),k&&r("p",{className:Pe,children:k}),w&&r("p",{className:Ce,children:w}),e("form",{onSubmit:async e=>{if(e.preventDefault(),x(""),6===p.length){g(!0);try{const{error:e}=c?await s.verifyLoginEmailOtp(p):await s.verifyEmailOtp(p);if(e)return void x("Verification failed.");if(c)return await n(),void a("/");l?a(O):(await n(),a("/"))}catch{console.error("Email OTP verification failed."),x("Verification failed.")}finally{g(!1)}}else x("Please enter a valid code.")},className:Te,children:[e("div",{children:[e("label",{htmlFor:"emailCode",className:Ie,children:["Email Verification Code",e("span",{className:Me,children:[" ","— Code expires in ",(P=b,`${Math.floor(P/60).toString().padStart(2,"0")}:${(P%60).toString().padStart(2,"0")}`)]})]}),r(qe,{length:6,value:p,onChange:v,inputMode:"text"}),r("button",{type:"button",onClick:async()=>{x(""),N("");const{error:e}=c?await s.requestLoginEmailOtp():await s.requestEmailOtp();e?x("Failed to send Email code. If this persists, refresh the page and try again."):N("Verification email has been resent.")},className:Oe,children:"Resend code to email"})]}),r("button",{type:"submit",className:Se,disabled:u,children:u?"Verifying...":"Verify & Continue"}),r("button",{type:"button",onClick:()=>a("/login"),className:ze,children:"Back to login"})]})]})});var P};var Fe={container:"verifyMagiclink-module__container___qrSXf",card:"verifyMagiclink-module__card___niKgr",title:"verifyMagiclink-module__title___SumxD",verificationContent:"verifyMagiclink-module__verificationContent___NdsS0",spinner:"verifyMagiclink-module__spinner___lnW1k",successIcon:"verifyMagiclink-module__successIcon___XjFEM",checkIcon:"verifyMagiclink-module__checkIcon___I0JOP",successText:"verifyMagiclink-module__successText___lO5Qq"};z(".verifyMagiclink-module__container___qrSXf{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.verifyMagiclink-module__card___niKgr{background-color:var(--seamless-surface,#1f2937);border-radius:.5rem;box-shadow:0 0 10px var(--seamless-shadow,rgba(0,0,0,.3));max-width:28rem;padding:1.5rem;width:100%}.verifyMagiclink-module__title___SumxD{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:700;margin-bottom:1rem;text-align:center}.verifyMagiclink-module__verificationContent___NdsS0{align-items:center;display:flex;flex-direction:column;gap:14px;margin:20px 0}.verifyMagiclink-module__spinner___lnW1k{animation:verifyMagiclink-module__spin___2lGzj .9s linear infinite;border:3px solid var(--seamless-border,hsla(0,0%,100%,.15));border-radius:50%;border-top-color:var(--seamless-accent,#60a5fa);height:28px;width:28px}.verifyMagiclink-module__successIcon___XjFEM{align-items:center;background:rgba(16,185,129,.15);border-radius:50%;display:flex;height:36px;justify-content:center;width:36px}.verifyMagiclink-module__checkIcon___I0JOP{animation:verifyMagiclink-module__checkPop___-3qJu .25s ease-out;color:var(--seamless-success,#34d399);height:22px;width:22px}.verifyMagiclink-module__successText___lO5Qq{color:var(--seamless-success,#34d399);font-size:.9rem}@keyframes verifyMagiclink-module__checkPop___-3qJu{0%{opacity:0;transform:scale(.6)}80%{transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@keyframes verifyMagiclink-module__spin___2lGzj{to{transform:rotate(1turn)}}");const je=()=>{const[a]=n(),o=i(),t=a.get("token"),[s,l]=h(""),[c,m]=h(null),u=_(),{refreshSession:g}=d(),p=v(null);return f(()=>{let e=!0,r=null;return(async()=>{if(!t)return e&&l("Missing token for verification."),void console.error("No magic-link token found.");p.current?.token!==t&&(p.current={token:t,result:u.verifyMagicLink(t)});const{error:a}=await p.current.result;if(!e)return;if(a)return console.error("Failed to verify token"),void l("Failed to verify token");const i=new BroadcastChannel("seamless-auth");i.postMessage({type:"MAGIC_LINK_AUTH_SUCCESS"}),i.close();let n=await g({background:!0});n.error&&(await u.checkMagicLink(),n=await g({background:!0})),e&&(n.error?m("elsewhere"):(m("signed-in"),r=setTimeout(()=>{e&&o("/")},900)))})(),()=>{e=!1,r&&clearTimeout(r)}},[t,u,o,g]),r("div",{className:Fe.container,children:e("div",{className:Fe.card,children:[r("h1",{className:Fe.title,children:"Verifying your login"}),e("div",{className:Fe.verificationContent,children:[!c&&!s&&r("div",{className:Fe.spinner}),c&&r("div",{className:Fe.successIcon,children:r("svg",{viewBox:"0 0 24 24",className:Fe.checkIcon,fill:"none",stroke:"currentColor",strokeWidth:"2",children:r("path",{d:"M5 13l4 4L19 7"})})}),!c&&!s&&r("p",{className:Fe.helperText,children:"Please wait while we securely verify your sign-in link."}),"signed-in"===c&&r("p",{className:Fe.successText,children:"Login verified. Redirecting…"}),"elsewhere"===c&&r("p",{className:Fe.successText,children:"Login verified. Return to the device where you requested this link to continue."}),s&&r("p",{className:Fe.error,children:s})]})]})})};const Re={oauth_missing_email:"Your provider account did not share an email address. Add an email to that account and make it visible, then try again.",oauth_email_not_verified:"The email address on your provider account is not verified. Verify it with your provider, then try again.",oauth_missing_subject:"Your provider did not return a usable account identifier. Try again, or sign in with a different method.",oauth_invalid_id_token:"Your provider sent a sign-in response that could not be verified. Try again, or sign in with a different method.",oauth_provider_retired:"Your organization no longer signs in with this provider. Sign in with your passkey or another method instead."},De=()=>{const{finishOAuthLogin:o}=d(),t=i(),[s]=n(),[l,c]=h(""),_=v(!1);return f(()=>{if(_.current)return;_.current=!0;const e=s.get("code"),r=s.get("state"),a=sessionStorage.getItem(re);e&&r&&a?o({providerId:a,code:e,state:r}).then(({data:e,error:r})=>{if(r){const e=w(r);return void c(e?Re[e]:"We could not complete sign-in. Please try again.")}sessionStorage.removeItem(re);const a=function(e){if(!e)return null;try{const r=new URL(e,window.location.origin);return r.origin!==window.location.origin?null:`${r.pathname}${r.search}${r.hash}`}catch{return null}}(e?.returnTo)??"/";"enroll_passkey"!==e?.nextStep?t(a):t(O,{state:{returnTo:a}})}):c("This sign-in link is missing required information.")},[o,t,s]),e("div",{className:Fe.container,children:[r("h2",{className:Fe.title,children:l?"Sign-in failed":"Completing sign-in..."}),l&&e(a,{children:[r("p",{children:l}),r("button",{type:"button",onClick:()=>t("/login"),children:"Back to login"})]})]})};var Ve="magiclink-module__container___45zcA",Ge="magiclink-module__card___Au9oN",We="magiclink-module__iconWrapper___k5ndr",Ue="magiclink-module__mailIcon___Pwb7q",Ke="magiclink-module__iconRing___bdLvf",Ye="magiclink-module__heading___b9cre",$e="magiclink-module__message___kiVFj",He="magiclink-module__identifier___JtcFM",Je="magiclink-module__helperText___7Mlfh",Ze="magiclink-module__actions___64I-3",Qe="magiclink-module__secondaryButton___BntAI",Xe="magiclink-module__cooldown___Ib4rm",er="magiclink-module__linkButton___maJiv";z(".magiclink-module__container___45zcA{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center}.magiclink-module__card___Au9oN{background-color:var(--seamless-surface,#1f2937);border-radius:.75rem;box-shadow:0 10px 25px var(--seamless-shadow,rgba(0,0,0,.25));max-width:420px;padding:2.5rem 2rem;text-align:center;width:100%}.magiclink-module__iconWrapper___k5ndr{display:flex;justify-content:center;margin-bottom:1.25rem;position:relative}.magiclink-module__mailIcon___Pwb7q{color:var(--seamless-accent-soft,#a5b4fc);height:38px;width:38px;z-index:2}.magiclink-module__iconRing___bdLvf{animation:magiclink-module__pulse___YGm-I 2s infinite;background:rgba(99,102,241,.15);border-radius:50%;height:72px;position:absolute;width:72px}@keyframes magiclink-module__pulse___YGm-I{0%{opacity:.8;transform:scale(.6)}70%{opacity:0;transform:scale(1.4)}to{opacity:0}}.magiclink-module__heading___b9cre{font-size:1.55rem;font-weight:600;margin-bottom:.75rem}.magiclink-module__message___kiVFj{color:var(--seamless-text-muted,#d1d5db);font-size:.95rem;line-height:1.4;margin-bottom:1rem}.magiclink-module__identifier___JtcFM{background:var(--seamless-surface-raised,hsla(0,0%,100%,.05));border-radius:6px;display:inline-block;font-size:1rem;font-weight:600;margin-bottom:1rem;padding:.45rem .6rem}.magiclink-module__helperText___7Mlfh{color:var(--seamless-text-muted,#9ca3af);font-size:.85rem;line-height:1.4;margin-bottom:.6rem}.magiclink-module__actions___64I-3{display:flex;flex-direction:column;gap:.6rem;margin-top:1.6rem}.magiclink-module__secondaryButton___BntAI{background:var(--seamless-surface,#111827);border:1px solid var(--seamless-border,#374151);border-radius:8px;color:var(--seamless-text,#fff);cursor:pointer;font-weight:500;padding:.65rem}.magiclink-module__secondaryButton___BntAI:hover:not(:disabled){background:var(--seamless-surface-hover,#1f2937)}.magiclink-module__secondaryButton___BntAI:disabled{cursor:not-allowed;opacity:.5}.magiclink-module__cooldown___Ib4rm{color:var(--seamless-text-muted,#9ca3af);font-size:.8rem}.magiclink-module__linkButton___maJiv{background:none;border:none;color:var(--seamless-accent-soft,#a5b4fc);cursor:pointer;font-size:.85rem;margin-top:.4rem}.magiclink-module__linkButton___maJiv:hover{text-decoration:underline}");const rr=()=>{const{refreshSession:a}=d(),o=i(),n=t(),s=_(),l=n.state?.identifier,[c,m]=h(30);f(()=>{const e=setInterval(()=>{m(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]);const u=b(async()=>{const{data:e,error:r}=await s.checkMagicLink();return!r&&"Success"===e?.message},[s]);return f(()=>{const e=new BroadcastChannel("seamless-auth");return e.onmessage=async e=>{"MAGIC_LINK_AUTH_SUCCESS"===e.data?.type&&await u()&&(await a(),o("/"))},()=>{e.close()}},[u,o,a]),f(()=>{const e=setInterval(async()=>{try{await u()&&(await a(),o("/"))}catch{}},5e3);return()=>clearInterval(e)},[u,a,o]),r("div",{className:Ve,children:e("div",{className:Ge,children:[e("div",{className:We,children:[r("div",{className:Ke}),e("svg",{className:Ue,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[r("path",{d:"M4 6h16v12H4z"}),r("path",{d:"m4 6 8 6 8-6"})]})]}),r("h2",{className:Ye,children:"Check your email"}),r("p",{className:$e,children:"If an account exists for this address, we sent a secure sign-in link."}),l&&r("div",{className:He,children:l}),r("p",{className:Je,children:"Open the email and click the link to finish signing in."}),r("p",{className:Je,children:"Didn’t receive anything? Check your spam folder or try creating a new account."}),e("div",{className:Ze,children:[r("button",{className:Qe,disabled:c>0,onClick:async()=>{c>0||(await s.requestMagicLink(),m(30))},children:"Resend link"}),c>0&&e("div",{className:Xe,children:["Available in ",c,"s"]}),r("button",{className:er,onClick:()=>o("/login"),children:"Change email or phone"})]})]})})},ar=()=>e(s,{children:[r(l,{path:N,element:r(oe,{})}),r(l,{path:P,element:r(te,{})}),r(l,{path:C,element:r(Le,{})}),r(l,{path:T,element:r(Ee,{})}),r(l,{path:I,element:r(je,{})}),r(l,{path:M,element:r(De,{})}),r(l,{path:O,element:r(ye,{})}),r(l,{path:S,element:r(rr,{})}),r(l,{path:"*",element:r(c,{to:N,replace:!0})})]});export{ar as AuthRoutes};
|
|
3
3
|
//# sourceMappingURL=routes.js.map
|
package/dist/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sources":["../src/authRoutePaths.ts","../../../node_modules/style-inject/dist/style-inject.es.js","../src/utils.ts","../src/components/AuthFallbackOptions.tsx","../src/components/OAuthProviderButtons.tsx","../src/views/Login.tsx","../src/views/PassKeyLogin.tsx","../src/views/PassKeyRegistration.tsx","../src/components/OtpInput.tsx","../src/views/PhoneRegistration.tsx","../src/views/EmailRegistration.tsx","../src/views/VerifyMagicLink.tsx","../src/views/OAuthCallback.tsx","../src/components/MagicLinkSent.tsx","../src/AuthRoutes.tsx"],"sourcesContent":[null,"function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n",null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["authRoutePaths","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","isValidEmail","email","normalized","trim","length","parts","split","localPart","domainPart","test","startsWith","endsWith","includes","isValidPhoneNumber","phone","phoneNumber","parsePhoneNumberFromString","isValid","AuthFallbackOptions","identifier","onMagicLink","onEmailOtp","onPhoneOtp","onPasskeyRetry","loginMethods","allowedMethods","Set","showMagicLink","has","showEmailOtp","Boolean","showPhoneOtp","showPasskeyRetry","_jsxs","className","styles","children","_jsx","onClick","OAUTH_PROVIDER_STORAGE_KEY","OAuthProviderButtons","listOAuthProviders","startOAuthLogin","finishOAuthLogin","ports","useAuth","callbackHref","useHref","providers","setProviders","useState","error","setError","useEffect","active","then","data","map","provider","async","providerId","sessionStorage","setItem","redirectUri","URL","window","location","origin","toString","outcome","oauthRedirect","open","authorizationUrl","code","state","handleSelect","id","name","Login","navigate","useNavigate","hasSignedInBefore","login","handlePasskeyLogin","authClient","useAuthClient","passkeySupported","usePasskeySupport","configuredMethods","useLoginMethods","setIdentifier","setEmail","mode","setMode","formErrors","setFormErrors","emailError","setEmailError","identifierError","setIdentifierError","showFallbackOptions","setShowFallbackOptions","setLoginMethods","canSubmit","_Fragment","onSubmit","e","preventDefault","loginStart","availableMethods","FALLBACK_LOGIN_METHODS","passkeyError","register","message","console","htmlFor","value","onChange","target","autoComplete","placeholder","onBlur","required","requestMagicLink","requestLoginEmailOtp","flow","requestLoginPhoneOtp","undefined","disabled","role","PassKeyLogin","runPasskeyLogin","container","card","title","button","POLICY_REFUSAL_MESSAGES","attachment_not_allowed","synced_passkey_not_allowed","authenticator_not_allowed","prf_required","PasskeyRegistration","refreshSession","loading","passkeySupportLoading","loginMethodsLoading","destination","returnTo","destinationFrom","useLocation","status","setStatus","setMessage","canSkip","hasNonPasskeyLoginMethod","finishWithoutPasskey","registerPasskey","attachment","platform","browser","deviceInfo","ua","navigator","userAgent","toLowerCase","brave","parseUserAgent","metadata","friendlyName","getPasskeyPolicyErrorCode","policyRefusalMessage","isUnauthenticated","OtpInput","inputMode","inputs","useRef","values","concat","Array","fill","slice","handleChange","index","input","char","handleBulkInput","newValueArr","newValue","join","current","focus","cleaned","replace","chars","forEach","i","Math","min","onPaste","clipboardData","getData","el","maxLength","onKeyDown","key","handleKeyDown","PhoneRegistration","isLoginFlow","phoneOtp","setPhoneOtp","phoneVerified","setPhoneVerified","setLoading","resendMsg","setResendMsg","phoneTimeLeft","setPhoneTimeLeft","verifyPhoneOTP","verifyLoginPhoneOtp","verifyPhoneOtp","handleResend","requestPhoneOtp","onResendPhone","interval","setInterval","prev","clearInterval","requestEmailOtp","nextStep","verified","seconds","floor","padStart","EmailRegistration","emailOtp","setEmailOtp","emailTimeLeft","setEmailTimeLeft","verifyLoginEmailOtp","verifyEmailOtp","VerifyMagicLink","searchParams","useSearchParams","token","get","successMsg","setSuccessMsg","mounted","channel","redirectTimeout","verifyMagicLink","BroadcastChannel","postMessage","setTimeout","verify","close","clearTimeout","verificationContent","spinner","successIcon","viewBox","checkIcon","stroke","strokeWidth","d","helperText","successText","CODE_ERRORS","oauth_missing_email","oauth_email_not_verified","oauth_missing_subject","oauth_invalid_id_token","oauth_provider_retired","OAuthCallback","startedRef","getItem","finishError","getOAuthErrorCode","removeItem","pathname","search","hash","inAppPath","MagicLinkSent","cooldown","setCooldown","timer","c","magicLinkCompleted","useCallback","checkMagicLink","onmessage","event","AuthRoutes","Routes","Route","path","element","Navigate","to"],"mappings":"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","x_google_ignoreList":[1]}
|
|
1
|
+
{"version":3,"file":"routes.js","sources":["../src/authRoutePaths.ts","../../../node_modules/style-inject/dist/style-inject.es.js","../src/utils.ts","../src/components/AuthFallbackOptions.tsx","../src/components/OAuthProviderButtons.tsx","../src/views/Login.tsx","../src/views/PassKeyLogin.tsx","../src/views/PassKeyRegistration.tsx","../src/components/OtpInput.tsx","../src/views/PhoneRegistration.tsx","../src/views/EmailRegistration.tsx","../src/views/VerifyMagicLink.tsx","../src/views/OAuthCallback.tsx","../src/components/MagicLinkSent.tsx","../src/AuthRoutes.tsx"],"sourcesContent":[null,"function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n",null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["authRoutePaths","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","isValidEmail","email","normalized","trim","length","parts","split","localPart","domainPart","test","startsWith","endsWith","includes","isValidPhoneNumber","phone","phoneNumber","parsePhoneNumberFromString","isValid","AuthFallbackOptions","identifier","onMagicLink","onEmailOtp","onPhoneOtp","onPasskeyRetry","loginMethods","allowedMethods","Set","showMagicLink","has","showEmailOtp","Boolean","showPhoneOtp","showPasskeyRetry","_jsxs","className","styles","children","_jsx","onClick","OAUTH_PROVIDER_STORAGE_KEY","OAuthProviderButtons","listOAuthProviders","startOAuthLogin","finishOAuthLogin","ports","useAuth","callbackHref","useHref","providers","setProviders","useState","error","setError","useEffect","active","then","data","map","provider","async","providerId","sessionStorage","setItem","redirectUri","URL","window","location","origin","toString","outcome","oauthRedirect","open","authorizationUrl","code","state","handleSelect","id","name","Login","navigate","useNavigate","hasSignedInBefore","login","handlePasskeyLogin","authClient","useAuthClient","passkeySupported","usePasskeySupport","configuredMethods","useLoginMethods","setIdentifier","setEmail","mode","setMode","formErrors","setFormErrors","emailError","setEmailError","identifierError","setIdentifierError","showFallbackOptions","setShowFallbackOptions","setLoginMethods","canSubmit","_Fragment","onSubmit","e","preventDefault","loginStart","availableMethods","FALLBACK_LOGIN_METHODS","passkeyError","register","message","console","htmlFor","value","onChange","target","autoComplete","placeholder","onBlur","required","requestMagicLink","requestLoginEmailOtp","flow","requestLoginPhoneOtp","undefined","disabled","role","PassKeyLogin","runPasskeyLogin","container","card","title","button","POLICY_REFUSAL_MESSAGES","attachment_not_allowed","synced_passkey_not_allowed","authenticator_not_allowed","prf_required","PasskeyRegistration","refreshSession","loading","passkeySupportLoading","loginMethodsLoading","destination","returnTo","destinationFrom","useLocation","status","setStatus","setMessage","canSkip","hasNonPasskeyLoginMethod","finishWithoutPasskey","registerPasskey","attachment","platform","browser","deviceInfo","ua","navigator","userAgent","toLowerCase","brave","parseUserAgent","metadata","friendlyName","getPasskeyPolicyErrorCode","policyRefusalMessage","isUnauthenticated","OtpInput","inputMode","inputs","useRef","values","concat","Array","fill","slice","handleChange","index","input","char","handleBulkInput","newValueArr","newValue","join","current","focus","cleaned","replace","chars","forEach","i","Math","min","onPaste","clipboardData","getData","el","maxLength","onKeyDown","key","handleKeyDown","PhoneRegistration","isLoginFlow","phoneOtp","setPhoneOtp","phoneVerified","setPhoneVerified","setLoading","resendMsg","setResendMsg","phoneTimeLeft","setPhoneTimeLeft","verifyPhoneOTP","verifyLoginPhoneOtp","verifyPhoneOtp","handleResend","requestPhoneOtp","onResendPhone","interval","setInterval","prev","clearInterval","requestEmailOtp","nextStep","verified","seconds","floor","padStart","EmailRegistration","emailOtp","setEmailOtp","emailTimeLeft","setEmailTimeLeft","verifyLoginEmailOtp","verifyEmailOtp","VerifyMagicLink","searchParams","useSearchParams","token","get","setOutcome","verification","mounted","redirectTimeout","result","verifyMagicLink","channel","BroadcastChannel","postMessage","close","session","background","checkMagicLink","setTimeout","verify","clearTimeout","verificationContent","spinner","successIcon","viewBox","checkIcon","stroke","strokeWidth","d","helperText","successText","CODE_ERRORS","oauth_missing_email","oauth_email_not_verified","oauth_missing_subject","oauth_invalid_id_token","oauth_provider_retired","OAuthCallback","startedRef","getItem","finishError","getOAuthErrorCode","removeItem","pathname","search","hash","inAppPath","MagicLinkSent","cooldown","setCooldown","timer","c","magicLinkCompleted","useCallback","onmessage","event","AuthRoutes","Routes","Route","path","element","Navigate","to"],"mappings":"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","x_google_ignoreList":[1]}
|
|
@@ -1,3 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Where an emailed magic link lands.
|
|
4
|
+
*
|
|
5
|
+
* Verifying the link does not sign in this tab. The session belongs to the
|
|
6
|
+
* browser that asked for the link, which collects it from `/magic-link/check`
|
|
7
|
+
* with its pre-auth cookie. So once the link is verified, this screen tells
|
|
8
|
+
* that tab, then signs in here too when it can: when the link was opened in
|
|
9
|
+
* the same browser, which holds the same pre-auth cookie. Opened on another
|
|
10
|
+
* device there is nothing to collect, and the screen says to go back.
|
|
11
|
+
*/
|
|
2
12
|
declare const VerifyMagicLink: React.FC;
|
|
3
13
|
export default VerifyMagicLink;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seamless-auth/react",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.1",
|
|
4
4
|
"description": "A drop-in authentication solution for modern React applications.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"LICENSE"
|
|
22
22
|
],
|
|
23
23
|
"engines": {
|
|
24
|
-
"node": ">=
|
|
24
|
+
"node": ">=22",
|
|
25
25
|
"npm": ">=9.0.0 <13.0.0"
|
|
26
26
|
},
|
|
27
27
|
"scripts": {
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@seamless-auth/client": "^0.3.
|
|
59
|
+
"@seamless-auth/client": "^0.3.1",
|
|
60
60
|
"@seamless-auth/types": "^0.26.0",
|
|
61
61
|
"@simplewebauthn/browser": "^13.1.0",
|
|
62
62
|
"libphonenumber-js": "^1.12.7"
|