@seamless-auth/react 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @seamless-auth/react
2
2
 
3
+ ## 0.12.0
4
+
5
+ ### Minor Changes
6
+
7
+ - f59be34: Add a passkey while signed in, and say what a 401 at enrollment means.
8
+
9
+ `registerPasskey` is now on `useAuth()` and on the framework-agnostic session actions,
10
+ not only on the client. The bundled UI already told users they could "add a passkey later
11
+ from a device that does", and nothing in the package implemented that: `credentials` could
12
+ be listed and deleted but never added. The context version refreshes the session
13
+ afterwards, so a settings screen renders the new passkey without a reload.
14
+
15
+ Enrollment now requires a signed-in session, which is a coordinated change with
16
+ `seamless-auth-api` and the server adapters. Upgrade all three together: the auth API and
17
+ the adapter have no safe release order between them, and enrollment answers `401` until
18
+ both land. The signup flow already satisfies it, because
19
+ verifying the email OTP issues a session before the passkey screen is reached, so nothing
20
+ in the bundled views moves. An application that called `registerPasskey()` before
21
+ verifying an address has to move that call after it.
22
+
23
+ A 401 from enrollment now reads "Your session expired before the passkey was saved" rather
24
+ than the generic "Error registering passkey." It is the session rather than anything about
25
+ the authenticator, and the generic wording invited the user to retry with the same expired
26
+ one. `isUnauthenticated(error)` is exported for callers rendering their own screens.
27
+
28
+ Corrects a stale README example that still passed a `token` to `registerPasskey`, a field
29
+ removed when the wire contract moved to `@seamless-auth/types`.
30
+
3
31
  ## 0.11.0
4
32
 
5
33
  ### Minor Changes
package/README.md CHANGED
@@ -612,7 +612,7 @@ on it:
612
612
  ```ts
613
613
  import { getPasskeyPolicyErrorCode } from '@seamless-auth/react';
614
614
 
615
- const { error } = await authClient.registerPasskey({ token, metadata });
615
+ const { error } = await authClient.registerPasskey({ metadata });
616
616
 
617
617
  switch (getPasskeyPolicyErrorCode(error)) {
618
618
  case 'attachment_not_allowed':
@@ -760,6 +760,10 @@ function CustomRegistration() {
760
760
  }
761
761
  ```
762
762
 
763
+ Enrolment takes the signed-in session, so it comes after the step that establishes one.
764
+ Verifying the email OTP signs the user in, which is why the bundled flow offers a passkey
765
+ on the screen after it rather than before.
766
+
763
767
  To offer a passkey right after registering, call `registerPasskey()` before `refreshSession()`:
764
768
 
765
769
  ```ts
@@ -775,6 +779,40 @@ if (!error) {
775
779
  }
776
780
  ```
777
781
 
782
+ ### Adding a passkey from a settings screen
783
+
784
+ The same call adds a passkey to an account that already has one, or gives one to a user
785
+ who declined at signup. Use it from `useAuth()` rather than the client directly: that
786
+ version refreshes the session afterwards, so `credentials` includes the new passkey
787
+ without a reload.
788
+
789
+ ```tsx
790
+ function AddPasskey() {
791
+ const { registerPasskey, credentials } = useAuth();
792
+
793
+ const add = async () => {
794
+ const { error } = await registerPasskey({
795
+ friendlyName: 'My laptop',
796
+ platform: 'macOS',
797
+ browser: 'Chrome',
798
+ deviceInfo: navigator.userAgent,
799
+ });
800
+
801
+ if (error) {
802
+ // A 401 means the session expired rather than anything about the
803
+ // authenticator. `isUnauthenticated(error)` tells the two apart.
804
+ }
805
+ };
806
+
807
+ return (
808
+ <>
809
+ <p>{credentials.length} passkeys</p>
810
+ <button onClick={add}>Add a passkey</button>
811
+ </>
812
+ );
813
+ }
814
+ ```
815
+
778
816
  ### OTP and magic-link continuation
779
817
 
780
818
  > **The request helpers take no identifier.** `requestMagicLink()`, `requestLoginEmailOtp()`, and
@@ -1,4 +1,4 @@
1
- import { CurrentUserResult, FinishOAuthLoginInput, FinishOAuthLoginResult, LoginStartResult, MessageResult, OAuthProvidersResult, OrganizationSwitchResult, PasskeyLoginData, StartOAuthLoginInput, StartOAuthLoginResult, StepUpPrfData, StepUpStatus } from './client/createSeamlessAuthClient';
1
+ import { CurrentUserResult, FinishOAuthLoginInput, FinishOAuthLoginResult, LoginStartResult, MessageResult, OAuthProvidersResult, OrganizationSwitchResult, PasskeyLoginData, PasskeyMetadata, PasskeyRegistrationData, RegisterPasskeyOptions, StartOAuthLoginInput, StartOAuthLoginResult, StepUpPrfData, StepUpStatus } from './client/createSeamlessAuthClient';
2
2
  import type { SeamlessAuthResult } from './client/result';
3
3
  import { PasskeyPrfInput } from './client/webauthnPrf';
4
4
  import { Credential, Organization, User } from './types';
@@ -28,6 +28,7 @@ export interface AuthContextType {
28
28
  deleteCredential: (credentialId: string) => Promise<SeamlessAuthResult<MessageResult>>;
29
29
  login: (identifier: string, passkeyAvailable: boolean) => Promise<SeamlessAuthResult<LoginStartResult>>;
30
30
  handlePasskeyLogin: () => Promise<SeamlessAuthResult<PasskeyLoginData>>;
31
+ registerPasskey: (input: PasskeyMetadata | RegisterPasskeyOptions) => Promise<SeamlessAuthResult<PasskeyRegistrationData>>;
31
32
  refreshStepUpStatus: () => Promise<SeamlessAuthResult<StepUpStatus>>;
32
33
  verifyStepUpWithPasskey: () => Promise<SeamlessAuthResult<StepUpStatus>>;
33
34
  verifyStepUpWithPasskeyPrf: (input: PasskeyPrfInput) => Promise<SeamlessAuthResult<StepUpPrfData>>;
@@ -51,6 +51,16 @@ export type PasskeyPolicyErrorCode = Exclude<WebAuthnErrorCodeShape, 'prf_output
51
51
  * ending the lookup.
52
52
  */
53
53
  export declare function getPasskeyPolicyErrorCode(error: unknown): PasskeyPolicyErrorCode | undefined;
54
+ /**
55
+ * Whether a failure means nobody is signed in.
56
+ *
57
+ * Enrollment takes the signed-in session, so a `401` there is an expired or missing
58
+ * one rather than anything about the authenticator, and the two need different
59
+ * messages: one asks the user to sign in again, the other to reach for a different
60
+ * key. Raised locally, a ceremony failure carries `NETWORK_ERROR_STATUS`, so this
61
+ * matches on the response status alone.
62
+ */
63
+ export declare function isUnauthenticated(error: unknown): boolean;
54
64
  /**
55
65
  * Detail recovered from a failed WebAuthn ceremony.
56
66
  *
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { AuthContextType, AuthProvider, useAuth } from './AuthProvider';
2
2
  import { AuthRoutes } from './AuthRoutes';
3
3
  import { createSeamlessAuthClient, CredentialUpdateResult, CreateOrganizationInput, CurrentUserResult, FinishOAuthLoginInput, FinishOAuthLoginResult, LoginInput, LoginMethod, LoginStartResult, MessageResult, OAuthProvider, OAuthProvidersResult, PublicSystemConfigResult, OrganizationMemberInput, OrganizationMemberUpdateInput, OrganizationMembersResult, OrganizationMembershipResult, OrganizationResult, OrganizationSwitchResult, OrganizationsResult, PasskeyLoginData, PasskeyAttachment, PasskeyMetadata, PasskeyRegistrationData, RegisterInput, RegisterPasskeyOptions, SeamlessAuthClient, SeamlessAuthClientOptions, StartOAuthLoginInput, StartOAuthLoginResult, StepUpMethod, StepUpStatus, StepUpPrfData, TotpEnrollmentStartResult, TotpStatus, UpdateOrganizationInput } from './client/createSeamlessAuthClient';
4
- import { getOAuthErrorCode, getPasskeyPolicyErrorCode, getWebAuthnErrorDetail, OAuthErrorCode, PasskeyPolicyErrorCode, SeamlessAuthError, WebAuthnErrorDetail } from './client/errors';
4
+ import { getOAuthErrorCode, getPasskeyPolicyErrorCode, getWebAuthnErrorDetail, isUnauthenticated, OAuthErrorCode, PasskeyPolicyErrorCode, SeamlessAuthError, WebAuthnErrorDetail } from './client/errors';
5
5
  import type { SeamlessAuthResult } from './client/result';
6
6
  import { encodePrfSalt, extractPasskeyPrfResult, isPasskeyPrfSupported, PasskeyPrfInput, PasskeyPrfResult } from './client/webauthnPrf';
7
7
  import { useAuthClient } from './hooks/useAuthClient';
@@ -9,5 +9,5 @@ import { hasNonPasskeyLoginMethod, useLoginMethods } from './hooks/useLoginMetho
9
9
  import { usePasskeySupport } from './hooks/usePasskeySupport';
10
10
  import { hasScopedRole, roleGrantsAccess } from './scopedRoles';
11
11
  import { Credential, Organization, OrganizationMembership, User } from './types';
12
- export { AuthProvider, AuthRoutes, createSeamlessAuthClient, encodePrfSalt, extractPasskeyPrfResult, getOAuthErrorCode, getPasskeyPolicyErrorCode, getWebAuthnErrorDetail, hasNonPasskeyLoginMethod, hasScopedRole, isPasskeyPrfSupported, roleGrantsAccess, SeamlessAuthError, useAuth, useAuthClient, useLoginMethods, usePasskeySupport, };
12
+ export { AuthProvider, AuthRoutes, createSeamlessAuthClient, encodePrfSalt, extractPasskeyPrfResult, getOAuthErrorCode, getPasskeyPolicyErrorCode, getWebAuthnErrorDetail, hasNonPasskeyLoginMethod, hasScopedRole, isPasskeyPrfSupported, isUnauthenticated, roleGrantsAccess, SeamlessAuthError, useAuth, useAuthClient, useLoginMethods, usePasskeySupport, };
13
13
  export type { CredentialUpdateResult, AuthContextType, Credential, CreateOrganizationInput, CurrentUserResult, FinishOAuthLoginInput, FinishOAuthLoginResult, LoginInput, LoginMethod, LoginStartResult, MessageResult, OAuthErrorCode, OAuthProvider, OAuthProvidersResult, Organization, OrganizationMemberInput, OrganizationMembership, OrganizationMemberUpdateInput, OrganizationMembersResult, OrganizationMembershipResult, OrganizationResult, OrganizationSwitchResult, OrganizationsResult, PasskeyLoginData, PasskeyAttachment, PasskeyMetadata, PasskeyPolicyErrorCode, PasskeyPrfInput, PasskeyPrfResult, PasskeyRegistrationData, PublicSystemConfigResult, RegisterInput, RegisterPasskeyOptions, SeamlessAuthClient, SeamlessAuthClientOptions, SeamlessAuthResult, StartOAuthLoginInput, StartOAuthLoginResult, StepUpMethod, StepUpStatus, StepUpPrfData, TotpEnrollmentStartResult, TotpStatus, UpdateOrganizationInput, User, WebAuthnErrorDetail, };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{browserSupportsWebAuthn as n,bufferToBase64URLString as o,base64URLStringToBuffer as i,startAuthentication as a,startRegistration as s,WebAuthnError as l}from"@simplewebauthn/browser";import{createContext as c,useMemo as d,useSyncExternalStore as u,useEffect as m,useContext as _,useState as g,useRef as p,useCallback as f}from"react";import{useHref as h,useNavigate as y,useLocation as b,useSearchParams as v,Routes as k,Route as w,Navigate as x}from"react-router-dom";import S from"libphonenumber-js";class P extends Error{constructor(e,t,r,n){super(e),this.name="SeamlessAuthError",this.status=t,this.body=r,this.cause=n}}const O={oauth_missing_email:!0,oauth_email_not_verified:!0,oauth_missing_subject:!0};function N(e){if("object"==typeof e&&null!==e)return e.code}function T(e){if(!(e instanceof P))return;if("object"!=typeof e.body||null===e.body)return;const t=N(e.body)??N(e.body.details);return"string"==typeof t&&Object.prototype.hasOwnProperty.call(O,t)?t:void 0}const C={attachment_not_allowed:!0,synced_passkey_not_allowed:!0,authenticator_not_allowed:!0,prf_required:!0};function I(e){if("object"!=typeof e||null===e)return;const t=e.error;return"string"==typeof t&&Object.prototype.hasOwnProperty.call(C,t)?t:void 0}function A(e){if(e instanceof P&&"object"==typeof e.body&&null!==e.body)return I(e.body)??I(e.body.details)}function M(e){if(!(e instanceof P)||("object"!=typeof(t=e.cause)||null===t||"string"!=typeof t.name))return;var t;const{name:r,code:n,message:o}=e.cause;return{name:r,code:"string"==typeof n?n:void 0,message:"string"==typeof o?o:""}}async function E(e,t){let r;try{r=await e.json()}catch{r=void 0}return new P(function(e){if("object"!=typeof e||null===e)return;const{error:t,message:r}=e;return"string"==typeof t&&t?t:"string"==typeof r&&r?r:void 0}(r)??t,e.status,r)}async function z(e){try{return await e.json()}catch{return}}async function F(e,t){let r;try{r=await e}catch{return{data:null,error:new P(t,0)}}return r.ok?{data:await z(r),error:null}:{data:null,error:await E(r,t)}}function U(e){return{data:e,error:null}}function L(e,t=0,r,n){return{data:null,error:new P(e,t,r,n)}}function R(e){if(e instanceof ArrayBuffer)return e;const t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=new Uint8Array(t.byteLength);return r.set(t),r.buffer}function q(e){return"string"==typeof e?e:o(R(e))}function B(e){return"string"==typeof e?i(e):e}function j(e){return{...e.credentialId?{credentialId:e.credentialId}:{},prf:{salt:q(e.salt),...e.secondSalt?{secondSalt:q(e.secondSalt)}:{}}}}async function J(){return!!n()&&("undefined"==typeof window||!1!==window.isSecureContext)&&void 0!==globalThis.PublicKeyCredential&&"undefined"!=typeof navigator&&"function"==typeof navigator.credentials?.get}function G(e){const t=e,r=t.extensions?.prf?.eval;return r?{...t,extensions:{...t.extensions,prf:{...t.extensions?.prf,eval:{...r,...r.first?{first:B(r.first)}:{},...r.second?{second:B(r.second)}:{}}}}}:e}function W(e){const t=e.clientExtensionResults,r=t?.prf?.results?.first;if(!r)return null;const n=(i=r)instanceof ArrayBuffer?new Uint8Array(i):new Uint8Array(i.buffer,i.byteOffset,i.byteLength);var i;return{credentialId:e.id,output:n,outputBase64url:o(R(n))}}function $(e){const t=e.clientExtensionResults;return t?.prf?.results?{...e,clientExtensionResults:{...e.clientExtensionResults,prf:{...t.prf,results:void 0}}}:e}function D(e,t){const r=e.method===t?e.method:null;return"Success"===e.message&&!0===e.fresh&&null!==r?U({fresh:!0,method:r,verifiedAt:e.verifiedAt??null,expiresAt:e.expiresAt??null,maxAgeSeconds:e.maxAgeSeconds??0}):L(e.message??"Step-up authentication failed.")}function V(e){return e?{method:"POST",body:JSON.stringify(j(e))}:{method:"POST"}}function H(e,t,r){const n=L(t,0,void 0,r),o=M(n.error);return console.error(e,o?.name??"Unknown error."),n}const K=e=>{const t=(e=>{const{authHost:t}=e;return async function(e,r){const n=`${t?.replace(/\/+$/,"")??""}/auth${e.startsWith("/")?e:`/${e}`}`,o=null!=r?.body,i={...r,credentials:"include",headers:{...o?{"Content-Type":"application/json"}:{},...r?.headers}};return fetch(n,i)}})({authHost:e.apiHost});return{getCurrentUser:()=>F(t("users/me",{method:"GET"}),"Failed to load the current user."),login:e=>F(t("/login",{method:"POST",body:JSON.stringify(e)}),"Failed to start sign-in."),loginWithPasskey:async e=>{const r=await F(t("/webAuthn/login/start",{...V(e?.prf)}),"Failed to start passkey login.");if(r.error)return r;let n,o;try{const e=await a({optionsJSON:G(r.data)});n=W(e),o=$(e)}catch(e){return H("Passkey login error.","Passkey login failed.",e)}const i=await F(t("/webAuthn/login/finish",{method:"POST",body:JSON.stringify({assertionResponse:o})}),"Failed to verify passkey.");return i.error?i:"Success"!==i.data?.message?L(i.data?.message??"Passkey login failed."):U(n?{prf:n}:{})},logout:(e={})=>F(t("all_sessions"===e.scope?"/logout/all":"/logout",{method:"DELETE"}),"Failed to sign out."),logoutAllSessions:()=>F(t("/logout/all",{method:"DELETE"}),"Failed to sign out of all sessions."),deleteUser:()=>F(t("/users/delete",{method:"DELETE"}),"Failed to delete the account."),register:e=>F(t("/registration/register",{method:"POST",body:JSON.stringify({email:e.email,...e.phone?{phone:e.phone}:{}})}),"Failed to register."),requestPhoneOtp:()=>F(t("/otp/generate-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyPhoneOtp:e=>F(t("/otp/verify-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestLoginPhoneOtp:()=>F(t("/otp/generate-login-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyLoginPhoneOtp:e=>F(t("/otp/verify-login-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestEmailOtp:()=>F(t("/otp/generate-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyEmailOtp:e=>F(t("/otp/verify-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestLoginEmailOtp:()=>F(t("/otp/generate-login-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyLoginEmailOtp:e=>F(t("/otp/verify-login-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestMagicLink:r=>{const n=r??e.magicLinkRedirectUri;return F(t("/magic-link",{method:"POST",body:JSON.stringify(n?{redirectUri:n}:{})}),"Failed to send the magic link.")},checkMagicLink:()=>F(t("/magic-link/check",{method:"GET"}),"Failed to check the magic link."),verifyMagicLink:e=>F(t(`/magic-link/verify/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to verify the magic link."),listOAuthProviders:()=>F(t("/oauth/providers",{method:"GET"}),"Failed to list OAuth providers."),getPublicSystemConfig:()=>F(t("/system-config/public",{method:"GET"}),"Failed to read the public system configuration."),startOAuthLogin:e=>F(t(`/oauth/${encodeURIComponent(e.providerId)}/start`,{method:"POST",body:JSON.stringify({...e.redirectUri?{redirectUri:e.redirectUri}:{},...e.returnTo?{returnTo:e.returnTo}:{}})}),"Failed to start OAuth login."),finishOAuthLogin:e=>F(t(`/oauth/${encodeURIComponent(e.providerId)}/callback`,{method:"POST",body:JSON.stringify({code:e.code,state:e.state})}),"Failed to finish OAuth login."),registerPasskey:async e=>{const r=function(e){return"metadata"in e?e:{metadata:e}}(e),n=await F(t(function(e){const t=new URLSearchParams;e.requirePrf?t.set("requirePrf","true"):e.requestPrf&&t.set("requestPrf","true"),e.attachment&&t.set("attachment",e.attachment);const r=t.toString();return"/webAuthn/register/start"+(r?`?${r}`:"")}(r),{method:"GET"}),"Failed to fetch passkey registration challenge.");if(n.error)return n;let o;try{o=await s({optionsJSON:n.data})}catch(e){return e instanceof l?L(e.name,0,void 0,e):H("Passkey registration error.","Passkey registration failed.",e)}const i=function(e){const t=e.clientExtensionResults;return!0===t?.prf?.enabled}(o),a=await F(t("/webAuthn/register/finish",{method:"POST",body:JSON.stringify({attestationResponse:o,metadata:{...r.metadata,prfCapable:i}})}),"Verification failed.");return a.error?a:U({credentialId:o.id,prfCapable:i})},isPasskeyPrfSupported:J,getStepUpStatus:()=>F(t("/step-up/status",{method:"GET"}),"Failed to load step-up status."),verifyStepUpWithPasskey:async()=>{const e=await F(t("/step-up/webauthn/start",{method:"POST"}),"Failed to start step-up authentication.");if(e.error)return e;let r;try{r=$(await a({optionsJSON:G(e.data)}))}catch(e){return H("Step-up authentication error.","Step-up authentication failed.",e)}const n=await F(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:r})}),"Failed to verify step-up authentication.");return n.error?n:D(n.data??{},"webauthn")},verifyStepUpWithPasskeyPrf:async e=>{const r=await F(t("/step-up/webauthn/start",{...V(e)}),"Failed to start step-up authentication.");if(r.error)return r;let n,o;try{const e=await a({optionsJSON:G(r.data)});n=W(e),o=$(e)}catch(e){return H("Step-up authentication error.","Step-up authentication failed.",e)}if(!n)return L("Passkey did not return PRF output.");const i=await F(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:o})}),"Failed to verify step-up authentication.");if(i.error)return i;const s=D(i.data??{},"webauthn");return s.error?s:U({...s.data,credentialId:n.credentialId,prf:n})},getTotpStatus:()=>F(t("/totp/status",{method:"GET"}),"Failed to load authenticator status."),startTotpEnrollment:()=>F(t("/totp/enroll/start",{method:"POST"}),"Failed to start authenticator enrollment."),verifyTotpEnrollment:e=>F(t("/totp/enroll/verify",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify the authenticator code."),disableTotp:e=>F(t("/totp/disable",{method:"POST",body:JSON.stringify({code:e})}),"Failed to disable the authenticator."),verifyStepUpWithTotp:async e=>{const r=await F(t("/totp/verify-mfa",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify step-up authentication.");return r.error?r:D(r.data??{},"totp")},updateCredential:e=>F(t("users/credentials",{method:"POST",body:JSON.stringify(e)}),"Failed to update credential."),deleteCredential:e=>F(t("users/credentials",{method:"DELETE",body:JSON.stringify({id:e})}),"Failed to delete credential."),listOrganizations:()=>F(t("/organizations",{method:"GET"}),"Failed to list organizations."),createOrganization:e=>F(t("/organizations",{method:"POST",body:JSON.stringify(e)}),"Failed to create organization."),getOrganization:e=>F(t(`/organizations/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to load organization."),updateOrganization:(e,r)=>F(t(`/organizations/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(r)}),"Failed to update organization."),switchOrganization:e=>F(t(`/organizations/${encodeURIComponent(e)}/switch`,{method:"POST"}),"Failed to switch organization."),listOrganizationMembers:e=>F(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"GET"}),"Failed to list organization members."),addOrganizationMember:(e,r)=>F(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"POST",body:JSON.stringify(r)}),"Failed to add organization member."),updateOrganizationMember:(e,r,n)=>F(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(r)}`,{method:"PATCH",body:JSON.stringify(n)}),"Failed to update organization member."),removeOrganizationMember:(e,r)=>F(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(r)}`,{method:"DELETE"}),"Failed to remove organization member.")}};function Y(e,t){const r=e.trim(),n=t.trim();if(!r||!n)return!1;if(r===n)return!0;if(r.endsWith(":*")){const e=r.slice(0,-2);return n===e||n.startsWith(`${e}:`)}if(!n.includes(":"))return!1;if(!r.includes(":"))return n.startsWith(`${r}:`);const o=r.split(":"),i=n.split(":"),a=o[o.length-1],s=i[i.length-1],l=o.slice(0,-1),c=i.slice(0,-1);return"write"===a&&"read"===s&&l.length===c.length&&l.every((e,t)=>e===c[t])}function Z(e,t){if(!Array.isArray(e))return!1;const r=e.filter(e=>"string"==typeof e);return(Array.isArray(t)?t:[t]).some(e=>r.some(t=>Y(t,e)))}function Q(){return"undefined"==typeof localStorage?function(){const e=new Map;return{get:t=>e.get(t)??null,set:(t,r)=>{e.set(t,r)}}}():{get:e=>{try{return localStorage.getItem(e)}catch{return null}},set:(e,t)=>{try{localStorage.setItem(e,t)}catch{}}}}const X="seamlessauth_seen",ee={user:null,credentials:[],organizations:[],activeOrganization:null,stepUpStatus:null,isAuthenticated:!1};const te=c(void 0),re=()=>{const e=_(te);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e},ne=({children:t,apiHost:r,autoDetectPreviousSignin:n=!0,magicLinkRedirectUri:o})=>{const i=d(()=>function(e){const{apiHost:t,detectPreviousSignIn:r=!0}=e,n=K({apiHost:t}),o=e.storage??Q(),i=new Set;let a=!1,s=0,l={...ee,loading:!0,hasSignedInBefore:r&&"true"===o.get(X)};function c(e){const t={...l,...e};Object.keys(e).some(e=>l[e]!==t[e])&&(l=t,i.forEach(e=>e()))}function d(){o.set(X,"true"),r&&c({hasSignedInBefore:!0})}function u(){c(ee)}async function m(){const e=++s;c({loading:!0});const t=await n.getCurrentUser();return a||e!==s?t:t.error?(u(),c({loading:!1}),t):(c({user:t.data.user,credentials:t.data.credentials??[],organizations:t.data.organizations??[],activeOrganization:t.data.activeOrganization??null,isAuthenticated:!0,loading:!1}),l.hasSignedInBefore||d(),t)}async function _(e){const t=await e();return t.error||await m(),t}return{getState:()=>l,subscribe:e=>(i.add(e),()=>{i.delete(e)}),actions:{login:(e,t)=>n.login({identifier:e,passkeyAvailable:t}),handlePasskeyLogin:()=>_(()=>n.loginWithPasskey()),refreshSession:m,logout:async function(){try{return await n.logout()}finally{u()}},logoutAllSessions:async function(){try{return await n.logoutAllSessions()}finally{u()}},deleteUser:async()=>{const e=await n.deleteUser();return e.error||u(),e},updateCredential:async e=>{const{data:t,error:r}=await n.updateCredential({friendlyName:e.friendlyName??null,id:e.id});if(r)return{data:null,error:r};const o=t.credential;return c({credentials:l.credentials.map(e=>e.id===o.id?{...e,...o}:e)}),{data:o,error:null}},deleteCredential:async e=>{const t=await n.deleteCredential(e);return t.error||c({credentials:l.credentials.filter(t=>t.id!==e)}),t},switchOrganization:e=>_(()=>n.switchOrganization(e)),listOAuthProviders:()=>n.listOAuthProviders(),startOAuthLogin:e=>n.startOAuthLogin(e),finishOAuthLogin:e=>_(()=>n.finishOAuthLogin(e)),refreshStepUpStatus:async()=>{const e=await n.getStepUpStatus();return c({stepUpStatus:e.error?null:e.data}),e},verifyStepUpWithPasskey:async()=>{const e=await n.verifyStepUpWithPasskey();return e.error||c({stepUpStatus:e.data}),e},verifyStepUpWithPasskeyPrf:async e=>{const t=await n.verifyStepUpWithPasskeyPrf(e);return t.error||c({stepUpStatus:{fresh:t.data.fresh,method:t.data.method,verifiedAt:t.data.verifiedAt,expiresAt:t.data.expiresAt,maxAgeSeconds:t.data.maxAgeSeconds}}),t},verifyStepUpWithTotp:async e=>{const t=await n.verifyStepUpWithTotp(e);return t.error||c({stepUpStatus:t.data}),t},hasRole:e=>l.user?.roles?.includes(e),hasScopedRole:e=>l.user?Z(l.user.roles,e):void 0,markSignedIn:d},destroy:()=>{a=!0,i.clear()}}}({apiHost:r,detectPreviousSignIn:n}),[r,n]),a=u(i.subscribe,i.getState,i.getState);m(()=>{i.actions.refreshSession()},[i]);const s=d(()=>({...a,...i.actions,apiHost:r,magicLinkRedirectUri:o}),[a,i,r,o]);return e(te.Provider,{value:s,children:t})},oe=()=>{const{apiHost:e,magicLinkRedirectUri:t}=re();return d(()=>K({apiHost:e,magicLinkRedirectUri:t}),[e,t])},ie=["passkey","magic_link"],ae=()=>{const e=oe(),[t,r]=g(null),[n,o]=g(!0);return m(()=>{let t=!0;return(async()=>{try{const{data:n,error:o}=await e.getPublicSystemConfig();t&&!o&&n?.loginMethods?.length&&r(n.loginMethods)}catch{}finally{t&&o(!1)}})(),()=>{t=!1}},[e]),{loginMethods:t,loading:n}},se=e=>Boolean(e?.some(e=>"passkey"!==e)),le=e=>{if("string"!=typeof e)return!1;const t=e.trim();if(t.length<3||t.length>320)return!1;const r=t.split("@");if(2!==r.length)return!1;const[n,o]=r;return!(!/^[A-Za-z0-9._%+-]+$/.test(n)||n.startsWith(".")||n.endsWith(".")||n.includes(".."))&&!(!/^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/.test(o)||o.startsWith("-")||o.endsWith("-")||o.startsWith(".")||o.endsWith(".")||o.includes(".."))},ce=e=>{const t=S(e);return t?.isValid()||!1};async function de(){return async function(){if("undefined"==typeof window)return!1;if(window.PublicKeyCredential&&"function"==typeof window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable)try{return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{return console.error("Error checking passkey support."),!1}return!1}()}const ue=()=>{const[e,t]=g(!1),[r,n]=g(!0);return m(()=>{let e=!0;return(async()=>{try{const r=await de();e&&t(r)}catch{e&&t(!1)}finally{e&&n(!1)}})(),()=>{e=!1}},[]),{passkeySupported:e,loading:r}},me="/login",_e="/passkey-login",ge="/verify-phone-otp",pe="/verify-email-otp",fe="/verify-magiclink",he="/oauth/callback",ye="/register-passkey",be="/magic-link-sent";function ve(e,t){void 0===t&&(t={});var r=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===r&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var ke="login-module__container___YggDx",we="login-module__card___Ub-Py",xe="login-module__heading___neEqb",Se="login-module__inputGroup___P6qgS",Pe="login-module__label___mx5vu",Oe="login-module__input___U07lW",Ne="login-module__helperText___kDQ4-",Te="login-module__error___40zxh",Ce="login-module__button___0kFBs",Ie="login-module__submitHint___qOS5Z",Ae="login-module__toggle___1JiG1",Me="login-module__fallbackCard___HdIk-",Ee="login-module__fallbackHeader___-il2v",ze="login-module__fallbackDescription___ea5EB",Fe="login-module__fallbackActions___AD3ni",Ue="login-module__fallbackActionButton___lFgWf",Le="login-module__actionTitle___ycrMp",Re="login-module__actionSubtext___opaIV",qe="login-module__linkButton___5lsoe";ve(".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 Be=({identifier:r,onMagicLink:n,onEmailOtp:o,onPhoneOtp:i,onPasskeyRetry:a,loginMethods:s})=>{const l=new Set(s??["passkey","magic_link","phone_otp"]),c=l.has("magic_link")&&le(r),d=l.has("email_otp")&&Boolean(o)&&le(r),u=l.has("phone_otp")&&ce(r),m=l.has("passkey")&&Boolean(a);return c||d||u||m?t("div",{className:Me,children:[e("div",{className:Ee,children:"Choose a sign-in method"}),e("p",{className:ze,children:"Choose another secure sign-in method."}),t("div",{className:Fe,children:[c&&t("button",{type:"button",className:Ue,onClick:n,children:[e("span",{className:Le,children:"Email Magic Link"}),e("span",{className:Re,children:"Send a secure sign-in link to your email"})]}),d&&t("button",{type:"button",className:Ue,onClick:o,children:[e("span",{className:Le,children:"Email Code"}),e("span",{className:Re,children:"Receive a one-time code by email"})]}),u&&t("button",{type:"button",className:Ue,onClick:i,children:[e("span",{className:Le,children:"Text Message Code"}),e("span",{className:Re,children:"Receive a one-time code via SMS"})]})]}),m&&e("button",{type:"button",className:qe,onClick:a,children:"Try passkey anyway"})]}):null},je="seamless:oauth:provider",Je=()=>{const{listOAuthProviders:r,startOAuthLogin:n}=re(),o=h("/oauth/callback"),[i,a]=g([]),[s,l]=g("");if(m(()=>{let e=!0;return r().then(({data:t})=>{e&&a(t?.providers??[])}),()=>{e=!1}},[r]),0===i.length)return null;return t("div",{className:Fe,children:[i.map(r=>e("button",{type:"button",className:Ue,onClick:()=>(async e=>{l(""),sessionStorage.setItem(je,e);const{data:t,error:r}=await n({providerId:e,redirectUri:new URL(o,window.location.origin).toString()});r?l("Could not start sign-in with this provider."):window.location.assign(t.authorizationUrl)})(r.id),children:t("span",{className:Le,children:["Continue with ",r.name]})},r.id)),s&&e("p",{className:Te,children:s})]})},Ge=()=>{const n=y(),{hasSignedInBefore:o,login:i,handlePasskeyLogin:a}=re(),s=oe(),{passkeySupported:l}=ue(),{loginMethods:c}=ae(),[d,u]=g(""),[_,p]=g(""),[f,h]=g("register"),[b,v]=g(""),[k,w]=g(""),[x,S]=g(""),[P,O]=g(!1),[N,T]=g(null);m(()=>{o&&h("login")},[o]);const C=()=>"login"===f?le(d)||ce(d):le(_);return e("div",{className:ke,children:t("div",{className:we,children:[e("h2",{className:xe,children:"login"===f?"Sign In":"Create Account"}),t(r,{children:[t("form",{onSubmit:async e=>{e.preventDefault(),v(""),O(!1);try{if("login"===f){const{data:e,error:t}=await i(d,l);if(t)return void v("Failed to start sign-in. Please try again.");const r=e?.loginMethods?.length?e.loginMethods:c??ie;if(T(r),l&&r.includes("passkey")){const{error:e}=await a();return e?(O(!0),void v("Passkey sign-in could not be completed. Choose another sign-in method.")):void n("/")}return void O(!0)}"register"===f&&await(async()=>{v("");const{data:e,error:t}=await s.register({email:_});t?v("Failed to register. Please try again."):"Success"===e.message?n(pe):v("An unexpected error occurred. Try again. If the problem persists, contact support.")})()}catch{console.error("Failed to continue sign-in."),v("Failed to continue sign-in. Please try again.")}},children:["login"===f&&t("div",{className:Se,children:[e("label",{htmlFor:"identifier",className:Pe,children:"Email Address / Phone Number"}),e("input",{id:"identifier",type:"text",value:d,onChange:e=>{const t=e.target.value;u(t)},autoComplete:"off",placeholder:"Email or Phone Number",className:Oe,onBlur:()=>{if(d){const e=le(d)||ce(d);S(e?"":"Please enter a valid email or phone number")}},required:!0}),e("p",{className:Ne,children:"Phone numbers must include a country code e.g. +1"}),P&&e(Be,{identifier:d,onMagicLink:async()=>{const{error:e}=await s.requestMagicLink();e?v("Failed to send magic link."):n(be,{state:{identifier:d}})},onEmailOtp:async()=>{const{error:e}=await s.requestLoginEmailOtp();e?v("Failed to send email code."):n(pe,{state:{flow:"login"}})},onPhoneOtp:async()=>{const{error:e}=await s.requestLoginPhoneOtp();e?v("Failed to send OTP."):n(ge,{state:{flow:"login"}})},onPasskeyRetry:l?a:void 0,loginMethods:N}),x&&e("p",{className:Te,children:x})]}),"register"===f&&t("div",{className:Se,children:[e("label",{htmlFor:"email",className:Pe,children:"Email Address"}),e("input",{id:"email",type:"email",value:_,onChange:e=>{const t=e.target.value;p(t)},autoComplete:"off",className:Oe,onBlur:()=>{if(_){const e=le(_);w(e?"":"Please enter a valid email")}},required:!0}),k&&e("p",{className:Te,children:k})]}),e("button",{type:"submit",className:Ce,disabled:!C(),"aria-describedby":"seamless-submit-hint",children:"login"===f?"Login":"Register"}),e("p",{id:"seamless-submit-hint",role:"status",className:Ie,children:"login"===f?d?C()?"Ready to continue.":"This does not look like a complete email or phone number yet.":"Enter your email or phone number to continue.":_?C()?"Ready to continue.":"This does not look like a complete email address yet.":"Enter your email address to continue."}),b&&e("p",{className:Te,children:b}),e("button",{type:"button",onClick:()=>h("login"===f?"register":"login"),className:Ae,children:"login"===f?"Don't have an account? Create one":"Already have an account? Sign in"})]}),e(Je,{})]})]})})};var We={container:"passKeyLogin-module__container___IUKxF",card:"passKeyLogin-module__card___2sKM1",title:"passKeyLogin-module__title___HZxvc",button:"passKeyLogin-module__button___FvR4I"};ve(".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 $e=()=>{const r=y(),{handlePasskeyLogin:n}=re(),[o,i]=g("");return e("div",{className:We.container,children:t("div",{className:We.card,children:[e("h2",{className:We.title,children:"Login with Passkey"}),e("button",{onClick:async()=>{i("");const{error:e}=await n();e?i("Passkey sign-in could not be completed. Try another sign-in method."):r("/")},className:We.button,children:"Use Passkey"}),o&&e("p",{className:We.error,children:o})]})})};var De="registerPasskey-module__container___jqEh8",Ve="registerPasskey-module__card___MJAyC",He="registerPasskey-module__loading___Q4i1x",Ke="registerPasskey-module__spinner___V1nhd",Ye="registerPasskey-module__supported___ihTih",Ze="registerPasskey-module__title___vn2Qu",Qe="registerPasskey-module__description___AWmO-",Xe="registerPasskey-module__button___D3b4B",et="registerPasskey-module__message___RiOw-",tt="registerPasskey-module__success___HP5aX",rt="registerPasskey-module__error___hGiqE",nt="registerPasskey-module__skip___1hDyU",ot="registerPasskey-module__secondary___bnOB4";ve(".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 it={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 at=()=>{const{refreshSession:r}=re(),n=oe(),{passkeySupported:o,loading:i}=ue(),{loginMethods:a,loading:s}=ae(),l=y(),[c,d]=g("idle"),[u,m]=g(""),_=se(a),p=async()=>{await r(),l("/")},f=async e=>{const{platform:t,browser:o,deviceInfo:i}=function(){const e=navigator.userAgent.toLowerCase();let t="unknown",r="unknown";return/iphone|ipad|ipod/.test(e)?t="ios":/android/.test(e)?t="android":/mac os/.test(e)?t="mac":/windows/.test(e)?t="windows":/linux/.test(e)&&(t="linux"),navigator.brave?r="brave":/edg\/|edgios/.test(e)?r="edge":/opr\/|opt\/|opera/.test(e)?r="opera":/vivaldi/.test(e)?r="vivaldi":/samsungbrowser/.test(e)?r="samsung":/firefox|fxios/.test(e)?r="firefox":/chrome|crios/.test(e)?r="chrome":/safari/.test(e)&&(r="safari"),{platform:t,browser:r,deviceInfo:`${t} • ${r}`}}(),a={friendlyName:i,platform:t,browser:o,deviceInfo:i};d("loading");try{const{error:t}=await n.registerPasskey({metadata:a,attachment:e});if(t)throw t;await r(),d("success"),m("Passkey registered successfully."),l("/")}catch(e){console.error("Passkey registration failed."),d("error"),m(function(e){const t=A(e);return t?it[t]:void 0}(e)??"Error registering passkey.")}};return e("div",{className:De,children:e("div",{className:Ve,children:t("div",i||s?{className:He,children:[e("div",{className:Ke}),e("span",{children:"Checking for Passkey Support..."})]}:o?{className:Ye,children:[e("h2",{className:Ze,children:"Secure Your Account with a Passkey"}),e("p",{className:Qe,children:"Your device supports passkeys! Register one to skip passwords forever."}),e("button",{onClick:()=>f(),disabled:"loading"===c,className:Xe,children:"loading"===c?"Registering...":"Register Passkey"}),e("button",{type:"button",onClick:()=>f("cross-platform"),disabled:"loading"===c,className:ot,children:"Use a security key instead"}),u&&e("p",{className:`${et} ${"success"===c?tt:rt}`,children:u}),_&&e("button",{type:"button",onClick:p,disabled:"loading"===c,className:nt,children:"Skip for now"})]}:{className:Ye,children:[e("h2",{className:Ze,children:"Passkeys are not available here"}),e("p",{className:Qe,children:_?"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."}),_&&e("button",{type:"button",onClick:p,className:Xe,children:"Continue"})]})})})};var st="verifyOTP-module__container___wgoDE",lt="verifyOTP-module__card___3cs2p",ct="verifyOTP-module__title___fZ-1d",dt="verifyOTP-module__subtitle___dGSu3",ut="verifyOTP-module__error___GEtlG",mt="verifyOTP-module__success___46TjG",_t="verifyOTP-module__form___jiGG-",gt="verifyOTP-module__label___Zq5Mi",pt="verifyOTP-module__timer___smq-a",ft="verifyOTP-module__resend___PlmkG",ht="verifyOTP-module__button___8pIuO",yt="verifyOTP-module__toggle___wbzVa";ve(".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 bt="otpInput-module__otpContainer___MUjby",vt="otpInput-module__otpInput___3YMVm";ve(".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 kt=({length:t=6,value:r,inputMode:n="numeric",onChange:o,name:i="otp"})=>{const a=p([]),s=r.split("").concat(Array(t).fill("")).slice(0,t),l=(e,t)=>{var r;if(t.length>1)c(e,t);else if(!t||(r=t,"numeric"===n?/^\d$/.test(r):/^[a-zA-Z]$/.test(r))){const r=[...s];r[e]=t;const n=r.join("");o(n),t&&a.current[e+1]&&a.current[e+1]?.focus()}},c=(e,r)=>{let i=r;i="numeric"===n?r.replace(/\D/g,""):r.replace(/[^a-zA-Z]/g,"");const l=i.slice(0,t).split(""),c=[...s];l.forEach((r,n)=>{e+n<t&&(c[e+n]=r)}),o(c.join("")),a.current[Math.min(e+l.length,t-1)]?.focus()};return e("div",{className:bt,role:"group","aria-label":"One-time password input",onPaste:e=>{e.preventDefault(),c(0,e.clipboardData.getData("text"))},children:s.map((r,c)=>e("input",{ref:e=>a.current[c]=e,type:"text",inputMode:"numeric"===n?"numeric":"text",autoComplete:"one-time-code",name:`${i}-${c}`,maxLength:1,value:r,className:vt,onChange:e=>l(c,e.target.value),onKeyDown:e=>((e,r)=>{if("Backspace"===r.key){r.preventDefault();const t=[...s];s[e]?(t[e]="",o(t.join(""))):e>0&&(t[e-1]="",o(t.join("")),a.current[e-1]?.focus())}"ArrowLeft"===r.key&&e>0&&a.current[e-1]?.focus(),"ArrowRight"===r.key&&e<t-1&&a.current[e+1]?.focus()})(c,e),"aria-label":`Digit ${c+1}`},c))})},wt=()=>{const r=y(),n=b(),{refreshSession:o}=re(),i="login"===n.state?.flow,[a,s]=g(""),[l,c]=g(null),[d,u]=g(""),[_,p]=g(!1),[f,h]=g(""),[v,k]=g(300),w=oe(),x=async()=>{if(p(!0),!l){const{error:e}=i?await w.verifyLoginPhoneOtp(a):await w.verifyPhoneOtp(a);if(e)u("Verification failed.");else{if(i)return await o(),void r("/");c(!0)}}p(!1)},S=async()=>{h(""),await(async()=>{u("");const{error:e}=i?await w.requestLoginPhoneOtp():await w.requestPhoneOtp();e?u("Failed to send SMS code. If this persists, refresh the page and try again."):h("Verification SMS has been resent.")})(),h("Verification SMS has been resent.")};return m(()=>{const e=setInterval(()=>{k(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),m(()=>{l&&!i&&(async()=>{const{error:e}=await w.requestEmailOtp();e?u("Failed to send Email code. If this persists, refresh the page and try registering again."):r(pe)})()},[l,i,r,w]),e("div",{className:st,children:t("div",{className:lt,children:[e("h2",{className:ct,children:"Verify Your Phone Number"}),e("p",{className:dt,children:"Enter the code sent to your phone number."}),d&&e("p",{className:ut,children:d}),f&&e("p",{className:mt,children:f}),t("form",{onSubmit:async e=>{if(e.preventDefault(),u(""),6===a.length){p(!0);try{await x()}catch{u("Unexpected error occurred.")}finally{p(!1)}}else u("Please enter a valid code.")},className:_t,children:[t("div",{children:[t("label",{htmlFor:"phoneCode",className:gt,children:["Phone Verification Code ",(O=l,!0===O?e("span",{className:"text-green-400 ml-2",children:"✅"}):!1===O?e("span",{className:"text-red-400 ml-2",children:"❌"}):null)," -"," ",t("span",{className:pt,children:["Code expires in: ",(P=v,`${Math.floor(P/60).toString().padStart(2,"0")}:${(P%60).toString().padStart(2,"0")}`)]})]}),e(kt,{length:6,value:a,onChange:s}),e("button",{type:"button",onClick:()=>S(),className:ft,children:"Resend code to phone"})]}),e("button",{type:"submit",className:ht,children:_?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>r("/login"),className:yt,children:"Back to login"})]})]})});var P,O},xt=()=>{const r=y(),n=b(),{refreshSession:o}=re(),i=oe(),{passkeySupported:a}=ue(),s="login"===n.state?.flow,[l,c]=g(!1),[d,u]=g(""),[_,p]=g(300),[f,h]=g(""),[v,k]=g("");return m(()=>{const e=setInterval(()=>{p(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),e("div",{className:st,children:t("div",{className:lt,children:[e("h2",{className:ct,children:"Verify Your Email"}),e("p",{className:dt,children:"We sent you a verification email. Enter the code below."}),f&&e("p",{className:ut,children:f}),v&&e("p",{className:mt,children:v}),t("form",{onSubmit:async e=>{if(e.preventDefault(),h(""),6===d.length){c(!0);try{const{error:e}=s?await i.verifyLoginEmailOtp(d):await i.verifyEmailOtp(d);if(e)return void h("Verification failed.");if(s)return await o(),void r("/");a?r(ye):(await o(),r("/"))}catch{console.error("Email OTP verification failed."),h("Verification failed.")}finally{c(!1)}}else h("Please enter a valid code.")},className:_t,children:[t("div",{children:[t("label",{htmlFor:"emailCode",className:gt,children:["Email Verification Code",t("span",{className:pt,children:[" ","— Code expires in ",(w=_,`${Math.floor(w/60).toString().padStart(2,"0")}:${(w%60).toString().padStart(2,"0")}`)]})]}),e(kt,{length:6,value:d,onChange:u,inputMode:"text"}),e("button",{type:"button",onClick:async()=>{h(""),k("");const{error:e}=s?await i.requestLoginEmailOtp():await i.requestEmailOtp();e?h("Failed to send Email code. If this persists, refresh the page and try again."):k("Verification email has been resent.")},className:ft,children:"Resend code to email"})]}),e("button",{type:"submit",className:ht,disabled:l,children:l?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>r("/login"),className:yt,children:"Back to login"})]})]})});var w};var St={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"};ve(".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 Pt=()=>{const[r]=v(),n=y(),o=r.get("token"),[i,a]=g(""),[s,l]=g(""),c=oe(),{refreshSession:d}=re();return m(()=>{let e=!0,t=null,r=null;return(async()=>{if(!o)return e&&a("Missing token for verification."),void console.error("No magic-link token found.");const{error:i}=await c.verifyMagicLink(o);if(i)return console.error("Failed to verify token"),void(e&&a("Failed to verify token"));await d(),e&&(t=new BroadcastChannel("seamless-auth"),t.postMessage({type:"MAGIC_LINK_AUTH_SUCCESS"}),l("You have been verified on the device and browser that initiated this request"),r=setTimeout(()=>{e&&n("/")},900))})(),()=>{e=!1,t?.close(),r&&clearTimeout(r)}},[o,c,n,d]),e("div",{className:St.container,children:t("div",{className:St.card,children:[e("h1",{className:St.title,children:"Verifying your login"}),t("div",{className:St.verificationContent,children:[!s&&!i&&e("div",{className:St.spinner}),s&&e("div",{className:St.successIcon,children:e("svg",{viewBox:"0 0 24 24",className:St.checkIcon,fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M5 13l4 4L19 7"})})}),!s&&!i&&e("p",{className:St.helperText,children:"Please wait while we securely verify your sign-in link."}),s&&e("p",{className:St.successText,children:"Login verified. Redirecting…"}),i&&e("p",{className:St.error,children:i})]})]})})};const Ot={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."},Nt=()=>{const{finishOAuthLogin:n}=re(),o=y(),[i]=v(),[a,s]=g(""),l=p(!1);return m(()=>{if(l.current)return;l.current=!0;const e=i.get("code"),t=i.get("state"),r=sessionStorage.getItem(je);e&&t&&r?n({providerId:r,code:e,state:t}).then(({data:e,error:t})=>{if(t){const e=T(t);return void s(e?Ot[e]:"We could not complete sign-in. Please try again.")}sessionStorage.removeItem(je),o(function(e){if(!e)return null;try{const t=new URL(e,window.location.origin);return t.origin!==window.location.origin?null:`${t.pathname}${t.search}${t.hash}`}catch{return null}}(e?.returnTo)??"/")}):s("This sign-in link is missing required information.")},[n,o,i]),t("div",{className:St.container,children:[e("h2",{className:St.title,children:a?"Sign-in failed":"Completing sign-in..."}),a&&t(r,{children:[e("p",{children:a}),e("button",{type:"button",onClick:()=>o("/login"),children:"Back to login"})]})]})};var Tt="magiclink-module__container___45zcA",Ct="magiclink-module__card___Au9oN",It="magiclink-module__iconWrapper___k5ndr",At="magiclink-module__mailIcon___Pwb7q",Mt="magiclink-module__iconRing___bdLvf",Et="magiclink-module__heading___b9cre",zt="magiclink-module__message___kiVFj",Ft="magiclink-module__identifier___JtcFM",Ut="magiclink-module__helperText___7Mlfh",Lt="magiclink-module__actions___64I-3",Rt="magiclink-module__secondaryButton___BntAI",qt="magiclink-module__cooldown___Ib4rm",Bt="magiclink-module__linkButton___maJiv";ve(".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 jt=()=>{const{refreshSession:r}=re(),n=y(),o=b(),i=oe(),a=o.state?.identifier,[s,l]=g(30);m(()=>{const e=setInterval(()=>{l(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]);const c=f(async()=>{const{data:e,error:t}=await i.checkMagicLink();return!t&&"Success"===e?.message},[i]);return m(()=>{const e=new BroadcastChannel("seamless-auth");return e.onmessage=async e=>{"MAGIC_LINK_AUTH_SUCCESS"===e.data?.type&&await c()&&(await r(),n("/"))},()=>{e.close()}},[c,n,r]),m(()=>{const e=setInterval(async()=>{try{await c()&&(await r(),n("/"))}catch{}},5e3);return()=>clearInterval(e)},[c,r,n]),e("div",{className:Tt,children:t("div",{className:Ct,children:[t("div",{className:It,children:[e("div",{className:Mt}),t("svg",{className:At,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[e("path",{d:"M4 6h16v12H4z"}),e("path",{d:"m4 6 8 6 8-6"})]})]}),e("h2",{className:Et,children:"Check your email"}),e("p",{className:zt,children:"If an account exists for this address, we sent a secure sign-in link."}),a&&e("div",{className:Ft,children:a}),e("p",{className:Ut,children:"Open the email and click the link to finish signing in."}),e("p",{className:Ut,children:"Didn’t receive anything? Check your spam folder or try creating a new account."}),t("div",{className:Lt,children:[e("button",{className:Rt,disabled:s>0,onClick:async()=>{s>0||(await i.requestMagicLink(),l(30))},children:"Resend link"}),s>0&&t("div",{className:qt,children:["Available in ",s,"s"]}),e("button",{className:Bt,onClick:()=>n("/login"),children:"Change email or phone"})]})]})})},Jt=()=>t(k,{children:[e(w,{path:me,element:e(Ge,{})}),e(w,{path:_e,element:e($e,{})}),e(w,{path:ge,element:e(wt,{})}),e(w,{path:pe,element:e(xt,{})}),e(w,{path:fe,element:e(Pt,{})}),e(w,{path:he,element:e(Nt,{})}),e(w,{path:ye,element:e(at,{})}),e(w,{path:be,element:e(jt,{})}),e(w,{path:"*",element:e(x,{to:me,replace:!0})})]});export{ne as AuthProvider,Jt as AuthRoutes,P as SeamlessAuthError,K as createSeamlessAuthClient,q as encodePrfSalt,W as extractPasskeyPrfResult,T as getOAuthErrorCode,A as getPasskeyPolicyErrorCode,M as getWebAuthnErrorDetail,se as hasNonPasskeyLoginMethod,Z as hasScopedRole,J as isPasskeyPrfSupported,Y as roleGrantsAccess,re as useAuth,oe as useAuthClient,ae as useLoginMethods,ue as usePasskeySupport};
1
+ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{browserSupportsWebAuthn as n,bufferToBase64URLString as o,base64URLStringToBuffer as i,startAuthentication as a,startRegistration as s,WebAuthnError as l}from"@simplewebauthn/browser";import{createContext as c,useMemo as d,useSyncExternalStore as u,useEffect as m,useContext as _,useState as g,useRef as p,useCallback as f}from"react";import{useHref as h,useNavigate as y,useLocation as b,useSearchParams as v,Routes as k,Route as w,Navigate as x}from"react-router-dom";import P from"libphonenumber-js";class S extends Error{constructor(e,t,r,n){super(e),this.name="SeamlessAuthError",this.status=t,this.body=r,this.cause=n}}const O={oauth_missing_email:!0,oauth_email_not_verified:!0,oauth_missing_subject:!0};function N(e){if("object"==typeof e&&null!==e)return e.code}function T(e){if(!(e instanceof S))return;if("object"!=typeof e.body||null===e.body)return;const t=N(e.body)??N(e.body.details);return"string"==typeof t&&Object.prototype.hasOwnProperty.call(O,t)?t:void 0}const C={attachment_not_allowed:!0,synced_passkey_not_allowed:!0,authenticator_not_allowed:!0,prf_required:!0};function I(e){if("object"!=typeof e||null===e)return;const t=e.error;return"string"==typeof t&&Object.prototype.hasOwnProperty.call(C,t)?t:void 0}function A(e){if(e instanceof S&&"object"==typeof e.body&&null!==e.body)return I(e.body)??I(e.body.details)}function M(e){return e instanceof S&&401===e.status}function E(e){if(!(e instanceof S)||("object"!=typeof(t=e.cause)||null===t||"string"!=typeof t.name))return;var t;const{name:r,code:n,message:o}=e.cause;return{name:r,code:"string"==typeof n?n:void 0,message:"string"==typeof o?o:""}}async function z(e,t){let r;try{r=await e.json()}catch{r=void 0}return new S(function(e){if("object"!=typeof e||null===e)return;const{error:t,message:r}=e;return"string"==typeof t&&t?t:"string"==typeof r&&r?r:void 0}(r)??t,e.status,r)}async function F(e){try{return await e.json()}catch{return}}async function U(e,t){let r;try{r=await e}catch{return{data:null,error:new S(t,0)}}return r.ok?{data:await F(r),error:null}:{data:null,error:await z(r,t)}}function L(e){return{data:e,error:null}}function R(e,t=0,r,n){return{data:null,error:new S(e,t,r,n)}}function q(e){if(e instanceof ArrayBuffer)return e;const t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=new Uint8Array(t.byteLength);return r.set(t),r.buffer}function B(e){return"string"==typeof e?e:o(q(e))}function j(e){return"string"==typeof e?i(e):e}function J(e){return{...e.credentialId?{credentialId:e.credentialId}:{},prf:{salt:B(e.salt),...e.secondSalt?{secondSalt:B(e.secondSalt)}:{}}}}async function G(){return!!n()&&("undefined"==typeof window||!1!==window.isSecureContext)&&void 0!==globalThis.PublicKeyCredential&&"undefined"!=typeof navigator&&"function"==typeof navigator.credentials?.get}function W(e){const t=e,r=t.extensions?.prf?.eval;return r?{...t,extensions:{...t.extensions,prf:{...t.extensions?.prf,eval:{...r,...r.first?{first:j(r.first)}:{},...r.second?{second:j(r.second)}:{}}}}}:e}function $(e){const t=e.clientExtensionResults,r=t?.prf?.results?.first;if(!r)return null;const n=(i=r)instanceof ArrayBuffer?new Uint8Array(i):new Uint8Array(i.buffer,i.byteOffset,i.byteLength);var i;return{credentialId:e.id,output:n,outputBase64url:o(q(n))}}function D(e){const t=e.clientExtensionResults;return t?.prf?.results?{...e,clientExtensionResults:{...e.clientExtensionResults,prf:{...t.prf,results:void 0}}}:e}function V(e,t){const r=e.method===t?e.method:null;return"Success"===e.message&&!0===e.fresh&&null!==r?L({fresh:!0,method:r,verifiedAt:e.verifiedAt??null,expiresAt:e.expiresAt??null,maxAgeSeconds:e.maxAgeSeconds??0}):R(e.message??"Step-up authentication failed.")}function H(e){return e?{method:"POST",body:JSON.stringify(J(e))}:{method:"POST"}}function K(e,t,r){const n=R(t,0,void 0,r),o=E(n.error);return console.error(e,o?.name??"Unknown error."),n}const Y=e=>{const t=(e=>{const{authHost:t}=e;return async function(e,r){const n=`${t?.replace(/\/+$/,"")??""}/auth${e.startsWith("/")?e:`/${e}`}`,o=null!=r?.body,i={...r,credentials:"include",headers:{...o?{"Content-Type":"application/json"}:{},...r?.headers}};return fetch(n,i)}})({authHost:e.apiHost});return{getCurrentUser:()=>U(t("users/me",{method:"GET"}),"Failed to load the current user."),login:e=>U(t("/login",{method:"POST",body:JSON.stringify(e)}),"Failed to start sign-in."),loginWithPasskey:async e=>{const r=await U(t("/webAuthn/login/start",{...H(e?.prf)}),"Failed to start passkey login.");if(r.error)return r;let n,o;try{const e=await a({optionsJSON:W(r.data)});n=$(e),o=D(e)}catch(e){return K("Passkey login error.","Passkey login failed.",e)}const i=await U(t("/webAuthn/login/finish",{method:"POST",body:JSON.stringify({assertionResponse:o})}),"Failed to verify passkey.");return i.error?i:"Success"!==i.data?.message?R(i.data?.message??"Passkey login failed."):L(n?{prf:n}:{})},logout:(e={})=>U(t("all_sessions"===e.scope?"/logout/all":"/logout",{method:"DELETE"}),"Failed to sign out."),logoutAllSessions:()=>U(t("/logout/all",{method:"DELETE"}),"Failed to sign out of all sessions."),deleteUser:()=>U(t("/users/delete",{method:"DELETE"}),"Failed to delete the account."),register:e=>U(t("/registration/register",{method:"POST",body:JSON.stringify({email:e.email,...e.phone?{phone:e.phone}:{}})}),"Failed to register."),requestPhoneOtp:()=>U(t("/otp/generate-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyPhoneOtp:e=>U(t("/otp/verify-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestLoginPhoneOtp:()=>U(t("/otp/generate-login-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyLoginPhoneOtp:e=>U(t("/otp/verify-login-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestEmailOtp:()=>U(t("/otp/generate-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyEmailOtp:e=>U(t("/otp/verify-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestLoginEmailOtp:()=>U(t("/otp/generate-login-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyLoginEmailOtp:e=>U(t("/otp/verify-login-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestMagicLink:r=>{const n=r??e.magicLinkRedirectUri;return U(t("/magic-link",{method:"POST",body:JSON.stringify(n?{redirectUri:n}:{})}),"Failed to send the magic link.")},checkMagicLink:()=>U(t("/magic-link/check",{method:"GET"}),"Failed to check the magic link."),verifyMagicLink:e=>U(t(`/magic-link/verify/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to verify the magic link."),listOAuthProviders:()=>U(t("/oauth/providers",{method:"GET"}),"Failed to list OAuth providers."),getPublicSystemConfig:()=>U(t("/system-config/public",{method:"GET"}),"Failed to read the public system configuration."),startOAuthLogin:e=>U(t(`/oauth/${encodeURIComponent(e.providerId)}/start`,{method:"POST",body:JSON.stringify({...e.redirectUri?{redirectUri:e.redirectUri}:{},...e.returnTo?{returnTo:e.returnTo}:{}})}),"Failed to start OAuth login."),finishOAuthLogin:e=>U(t(`/oauth/${encodeURIComponent(e.providerId)}/callback`,{method:"POST",body:JSON.stringify({code:e.code,state:e.state})}),"Failed to finish OAuth login."),registerPasskey:async e=>{const r=function(e){return"metadata"in e?e:{metadata:e}}(e),n=await U(t(function(e){const t=new URLSearchParams;e.requirePrf?t.set("requirePrf","true"):e.requestPrf&&t.set("requestPrf","true"),e.attachment&&t.set("attachment",e.attachment);const r=t.toString();return"/webAuthn/register/start"+(r?`?${r}`:"")}(r),{method:"GET"}),"Failed to fetch passkey registration challenge.");if(n.error)return n;let o;try{o=await s({optionsJSON:n.data})}catch(e){return e instanceof l?R(e.name,0,void 0,e):K("Passkey registration error.","Passkey registration failed.",e)}const i=function(e){const t=e.clientExtensionResults;return!0===t?.prf?.enabled}(o),a=await U(t("/webAuthn/register/finish",{method:"POST",body:JSON.stringify({attestationResponse:o,metadata:{...r.metadata,prfCapable:i}})}),"Verification failed.");return a.error?a:L({credentialId:o.id,prfCapable:i})},isPasskeyPrfSupported:G,getStepUpStatus:()=>U(t("/step-up/status",{method:"GET"}),"Failed to load step-up status."),verifyStepUpWithPasskey:async()=>{const e=await U(t("/step-up/webauthn/start",{method:"POST"}),"Failed to start step-up authentication.");if(e.error)return e;let r;try{r=D(await a({optionsJSON:W(e.data)}))}catch(e){return K("Step-up authentication error.","Step-up authentication failed.",e)}const n=await U(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:r})}),"Failed to verify step-up authentication.");return n.error?n:V(n.data??{},"webauthn")},verifyStepUpWithPasskeyPrf:async e=>{const r=await U(t("/step-up/webauthn/start",{...H(e)}),"Failed to start step-up authentication.");if(r.error)return r;let n,o;try{const e=await a({optionsJSON:W(r.data)});n=$(e),o=D(e)}catch(e){return K("Step-up authentication error.","Step-up authentication failed.",e)}if(!n)return R("Passkey did not return PRF output.");const i=await U(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:o})}),"Failed to verify step-up authentication.");if(i.error)return i;const s=V(i.data??{},"webauthn");return s.error?s:L({...s.data,credentialId:n.credentialId,prf:n})},getTotpStatus:()=>U(t("/totp/status",{method:"GET"}),"Failed to load authenticator status."),startTotpEnrollment:()=>U(t("/totp/enroll/start",{method:"POST"}),"Failed to start authenticator enrollment."),verifyTotpEnrollment:e=>U(t("/totp/enroll/verify",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify the authenticator code."),disableTotp:e=>U(t("/totp/disable",{method:"POST",body:JSON.stringify({code:e})}),"Failed to disable the authenticator."),verifyStepUpWithTotp:async e=>{const r=await U(t("/totp/verify-mfa",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify step-up authentication.");return r.error?r:V(r.data??{},"totp")},updateCredential:e=>U(t("users/credentials",{method:"POST",body:JSON.stringify(e)}),"Failed to update credential."),deleteCredential:e=>U(t("users/credentials",{method:"DELETE",body:JSON.stringify({id:e})}),"Failed to delete credential."),listOrganizations:()=>U(t("/organizations",{method:"GET"}),"Failed to list organizations."),createOrganization:e=>U(t("/organizations",{method:"POST",body:JSON.stringify(e)}),"Failed to create organization."),getOrganization:e=>U(t(`/organizations/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to load organization."),updateOrganization:(e,r)=>U(t(`/organizations/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(r)}),"Failed to update organization."),switchOrganization:e=>U(t(`/organizations/${encodeURIComponent(e)}/switch`,{method:"POST"}),"Failed to switch organization."),listOrganizationMembers:e=>U(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"GET"}),"Failed to list organization members."),addOrganizationMember:(e,r)=>U(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"POST",body:JSON.stringify(r)}),"Failed to add organization member."),updateOrganizationMember:(e,r,n)=>U(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(r)}`,{method:"PATCH",body:JSON.stringify(n)}),"Failed to update organization member."),removeOrganizationMember:(e,r)=>U(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(r)}`,{method:"DELETE"}),"Failed to remove organization member.")}};function Z(e,t){const r=e.trim(),n=t.trim();if(!r||!n)return!1;if(r===n)return!0;if(r.endsWith(":*")){const e=r.slice(0,-2);return n===e||n.startsWith(`${e}:`)}if(!n.includes(":"))return!1;if(!r.includes(":"))return n.startsWith(`${r}:`);const o=r.split(":"),i=n.split(":"),a=o[o.length-1],s=i[i.length-1],l=o.slice(0,-1),c=i.slice(0,-1);return"write"===a&&"read"===s&&l.length===c.length&&l.every((e,t)=>e===c[t])}function Q(e,t){if(!Array.isArray(e))return!1;const r=e.filter(e=>"string"==typeof e);return(Array.isArray(t)?t:[t]).some(e=>r.some(t=>Z(t,e)))}function X(){return"undefined"==typeof localStorage?function(){const e=new Map;return{get:t=>e.get(t)??null,set:(t,r)=>{e.set(t,r)}}}():{get:e=>{try{return localStorage.getItem(e)}catch{return null}},set:(e,t)=>{try{localStorage.setItem(e,t)}catch{}}}}const ee="seamlessauth_seen",te={user:null,credentials:[],organizations:[],activeOrganization:null,stepUpStatus:null,isAuthenticated:!1};const re=c(void 0),ne=()=>{const e=_(re);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e},oe=({children:t,apiHost:r,autoDetectPreviousSignin:n=!0,magicLinkRedirectUri:o})=>{const i=d(()=>function(e){const{apiHost:t,detectPreviousSignIn:r=!0}=e,n=Y({apiHost:t}),o=e.storage??X(),i=new Set;let a=!1,s=0,l={...te,loading:!0,hasSignedInBefore:r&&"true"===o.get(ee)};function c(e){const t={...l,...e};Object.keys(e).some(e=>l[e]!==t[e])&&(l=t,i.forEach(e=>e()))}function d(){o.set(ee,"true"),r&&c({hasSignedInBefore:!0})}function u(){c(te)}async function m(){const e=++s;c({loading:!0});const t=await n.getCurrentUser();return a||e!==s?t:t.error?(u(),c({loading:!1}),t):(c({user:t.data.user,credentials:t.data.credentials??[],organizations:t.data.organizations??[],activeOrganization:t.data.activeOrganization??null,isAuthenticated:!0,loading:!1}),l.hasSignedInBefore||d(),t)}async function _(e){const t=await e();return t.error||await m(),t}return{getState:()=>l,subscribe:e=>(i.add(e),()=>{i.delete(e)}),actions:{login:(e,t)=>n.login({identifier:e,passkeyAvailable:t}),handlePasskeyLogin:()=>_(()=>n.loginWithPasskey()),registerPasskey:e=>_(()=>n.registerPasskey(e)),refreshSession:m,logout:async function(){try{return await n.logout()}finally{u()}},logoutAllSessions:async function(){try{return await n.logoutAllSessions()}finally{u()}},deleteUser:async()=>{const e=await n.deleteUser();return e.error||u(),e},updateCredential:async e=>{const{data:t,error:r}=await n.updateCredential({friendlyName:e.friendlyName??null,id:e.id});if(r)return{data:null,error:r};const o=t.credential;return c({credentials:l.credentials.map(e=>e.id===o.id?{...e,...o}:e)}),{data:o,error:null}},deleteCredential:async e=>{const t=await n.deleteCredential(e);return t.error||c({credentials:l.credentials.filter(t=>t.id!==e)}),t},switchOrganization:e=>_(()=>n.switchOrganization(e)),listOAuthProviders:()=>n.listOAuthProviders(),startOAuthLogin:e=>n.startOAuthLogin(e),finishOAuthLogin:e=>_(()=>n.finishOAuthLogin(e)),refreshStepUpStatus:async()=>{const e=await n.getStepUpStatus();return c({stepUpStatus:e.error?null:e.data}),e},verifyStepUpWithPasskey:async()=>{const e=await n.verifyStepUpWithPasskey();return e.error||c({stepUpStatus:e.data}),e},verifyStepUpWithPasskeyPrf:async e=>{const t=await n.verifyStepUpWithPasskeyPrf(e);return t.error||c({stepUpStatus:{fresh:t.data.fresh,method:t.data.method,verifiedAt:t.data.verifiedAt,expiresAt:t.data.expiresAt,maxAgeSeconds:t.data.maxAgeSeconds}}),t},verifyStepUpWithTotp:async e=>{const t=await n.verifyStepUpWithTotp(e);return t.error||c({stepUpStatus:t.data}),t},hasRole:e=>l.user?.roles?.includes(e),hasScopedRole:e=>l.user?Q(l.user.roles,e):void 0,markSignedIn:d},destroy:()=>{a=!0,i.clear()}}}({apiHost:r,detectPreviousSignIn:n}),[r,n]),a=u(i.subscribe,i.getState,i.getState);m(()=>{i.actions.refreshSession()},[i]);const s=d(()=>({...a,...i.actions,apiHost:r,magicLinkRedirectUri:o}),[a,i,r,o]);return e(re.Provider,{value:s,children:t})},ie=()=>{const{apiHost:e,magicLinkRedirectUri:t}=ne();return d(()=>Y({apiHost:e,magicLinkRedirectUri:t}),[e,t])},ae=["passkey","magic_link"],se=()=>{const e=ie(),[t,r]=g(null),[n,o]=g(!0);return m(()=>{let t=!0;return(async()=>{try{const{data:n,error:o}=await e.getPublicSystemConfig();t&&!o&&n?.loginMethods?.length&&r(n.loginMethods)}catch{}finally{t&&o(!1)}})(),()=>{t=!1}},[e]),{loginMethods:t,loading:n}},le=e=>Boolean(e?.some(e=>"passkey"!==e)),ce=e=>{if("string"!=typeof e)return!1;const t=e.trim();if(t.length<3||t.length>320)return!1;const r=t.split("@");if(2!==r.length)return!1;const[n,o]=r;return!(!/^[A-Za-z0-9._%+-]+$/.test(n)||n.startsWith(".")||n.endsWith(".")||n.includes(".."))&&!(!/^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/.test(o)||o.startsWith("-")||o.endsWith("-")||o.startsWith(".")||o.endsWith(".")||o.includes(".."))},de=e=>{const t=P(e);return t?.isValid()||!1};async function ue(){return async function(){if("undefined"==typeof window)return!1;if(window.PublicKeyCredential&&"function"==typeof window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable)try{return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{return console.error("Error checking passkey support."),!1}return!1}()}const me=()=>{const[e,t]=g(!1),[r,n]=g(!0);return m(()=>{let e=!0;return(async()=>{try{const r=await ue();e&&t(r)}catch{e&&t(!1)}finally{e&&n(!1)}})(),()=>{e=!1}},[]),{passkeySupported:e,loading:r}},_e="/login",ge="/passkey-login",pe="/verify-phone-otp",fe="/verify-email-otp",he="/verify-magiclink",ye="/oauth/callback",be="/register-passkey",ve="/magic-link-sent";function ke(e,t){void 0===t&&(t={});var r=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===r&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var we="login-module__container___YggDx",xe="login-module__card___Ub-Py",Pe="login-module__heading___neEqb",Se="login-module__inputGroup___P6qgS",Oe="login-module__label___mx5vu",Ne="login-module__input___U07lW",Te="login-module__helperText___kDQ4-",Ce="login-module__error___40zxh",Ie="login-module__button___0kFBs",Ae="login-module__submitHint___qOS5Z",Me="login-module__toggle___1JiG1",Ee="login-module__fallbackCard___HdIk-",ze="login-module__fallbackHeader___-il2v",Fe="login-module__fallbackDescription___ea5EB",Ue="login-module__fallbackActions___AD3ni",Le="login-module__fallbackActionButton___lFgWf",Re="login-module__actionTitle___ycrMp",qe="login-module__actionSubtext___opaIV",Be="login-module__linkButton___5lsoe";ke(".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 je=({identifier:r,onMagicLink:n,onEmailOtp:o,onPhoneOtp:i,onPasskeyRetry:a,loginMethods:s})=>{const l=new Set(s??["passkey","magic_link","phone_otp"]),c=l.has("magic_link")&&ce(r),d=l.has("email_otp")&&Boolean(o)&&ce(r),u=l.has("phone_otp")&&de(r),m=l.has("passkey")&&Boolean(a);return c||d||u||m?t("div",{className:Ee,children:[e("div",{className:ze,children:"Choose a sign-in method"}),e("p",{className:Fe,children:"Choose another secure sign-in method."}),t("div",{className:Ue,children:[c&&t("button",{type:"button",className:Le,onClick:n,children:[e("span",{className:Re,children:"Email Magic Link"}),e("span",{className:qe,children:"Send a secure sign-in link to your email"})]}),d&&t("button",{type:"button",className:Le,onClick:o,children:[e("span",{className:Re,children:"Email Code"}),e("span",{className:qe,children:"Receive a one-time code by email"})]}),u&&t("button",{type:"button",className:Le,onClick:i,children:[e("span",{className:Re,children:"Text Message Code"}),e("span",{className:qe,children:"Receive a one-time code via SMS"})]})]}),m&&e("button",{type:"button",className:Be,onClick:a,children:"Try passkey anyway"})]}):null},Je="seamless:oauth:provider",Ge=()=>{const{listOAuthProviders:r,startOAuthLogin:n}=ne(),o=h("/oauth/callback"),[i,a]=g([]),[s,l]=g("");if(m(()=>{let e=!0;return r().then(({data:t})=>{e&&a(t?.providers??[])}),()=>{e=!1}},[r]),0===i.length)return null;return t("div",{className:Ue,children:[i.map(r=>e("button",{type:"button",className:Le,onClick:()=>(async e=>{l(""),sessionStorage.setItem(Je,e);const{data:t,error:r}=await n({providerId:e,redirectUri:new URL(o,window.location.origin).toString()});r?l("Could not start sign-in with this provider."):window.location.assign(t.authorizationUrl)})(r.id),children:t("span",{className:Re,children:["Continue with ",r.name]})},r.id)),s&&e("p",{className:Ce,children:s})]})},We=()=>{const n=y(),{hasSignedInBefore:o,login:i,handlePasskeyLogin:a}=ne(),s=ie(),{passkeySupported:l}=me(),{loginMethods:c}=se(),[d,u]=g(""),[_,p]=g(""),[f,h]=g("register"),[b,v]=g(""),[k,w]=g(""),[x,P]=g(""),[S,O]=g(!1),[N,T]=g(null);m(()=>{o&&h("login")},[o]);const C=()=>"login"===f?ce(d)||de(d):ce(_);return e("div",{className:we,children:t("div",{className:xe,children:[e("h2",{className:Pe,children:"login"===f?"Sign In":"Create Account"}),t(r,{children:[t("form",{onSubmit:async e=>{e.preventDefault(),v(""),O(!1);try{if("login"===f){const{data:e,error:t}=await i(d,l);if(t)return void v("Failed to start sign-in. Please try again.");const r=e?.loginMethods?.length?e.loginMethods:c??ae;if(T(r),l&&r.includes("passkey")){const{error:e}=await a();return e?(O(!0),void v("Passkey sign-in could not be completed. Choose another sign-in method.")):void n("/")}return void O(!0)}"register"===f&&await(async()=>{v("");const{data:e,error:t}=await s.register({email:_});t?v("Failed to register. Please try again."):"Success"===e.message?n(fe):v("An unexpected error occurred. Try again. If the problem persists, contact support.")})()}catch{console.error("Failed to continue sign-in."),v("Failed to continue sign-in. Please try again.")}},children:["login"===f&&t("div",{className:Se,children:[e("label",{htmlFor:"identifier",className:Oe,children:"Email Address / Phone Number"}),e("input",{id:"identifier",type:"text",value:d,onChange:e=>{const t=e.target.value;u(t)},autoComplete:"off",placeholder:"Email or Phone Number",className:Ne,onBlur:()=>{if(d){const e=ce(d)||de(d);P(e?"":"Please enter a valid email or phone number")}},required:!0}),e("p",{className:Te,children:"Phone numbers must include a country code e.g. +1"}),S&&e(je,{identifier:d,onMagicLink:async()=>{const{error:e}=await s.requestMagicLink();e?v("Failed to send magic link."):n(ve,{state:{identifier:d}})},onEmailOtp:async()=>{const{error:e}=await s.requestLoginEmailOtp();e?v("Failed to send email code."):n(fe,{state:{flow:"login"}})},onPhoneOtp:async()=>{const{error:e}=await s.requestLoginPhoneOtp();e?v("Failed to send OTP."):n(pe,{state:{flow:"login"}})},onPasskeyRetry:l?a:void 0,loginMethods:N}),x&&e("p",{className:Ce,children:x})]}),"register"===f&&t("div",{className:Se,children:[e("label",{htmlFor:"email",className:Oe,children:"Email Address"}),e("input",{id:"email",type:"email",value:_,onChange:e=>{const t=e.target.value;p(t)},autoComplete:"off",className:Ne,onBlur:()=>{if(_){const e=ce(_);w(e?"":"Please enter a valid email")}},required:!0}),k&&e("p",{className:Ce,children:k})]}),e("button",{type:"submit",className:Ie,disabled:!C(),"aria-describedby":"seamless-submit-hint",children:"login"===f?"Login":"Register"}),e("p",{id:"seamless-submit-hint",role:"status",className:Ae,children:"login"===f?d?C()?"Ready to continue.":"This does not look like a complete email or phone number yet.":"Enter your email or phone number to continue.":_?C()?"Ready to continue.":"This does not look like a complete email address yet.":"Enter your email address to continue."}),b&&e("p",{className:Ce,children:b}),e("button",{type:"button",onClick:()=>h("login"===f?"register":"login"),className:Me,children:"login"===f?"Don't have an account? Create one":"Already have an account? Sign in"})]}),e(Ge,{})]})]})})};var $e={container:"passKeyLogin-module__container___IUKxF",card:"passKeyLogin-module__card___2sKM1",title:"passKeyLogin-module__title___HZxvc",button:"passKeyLogin-module__button___FvR4I"};ke(".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 De=()=>{const r=y(),{handlePasskeyLogin:n}=ne(),[o,i]=g("");return e("div",{className:$e.container,children:t("div",{className:$e.card,children:[e("h2",{className:$e.title,children:"Login with Passkey"}),e("button",{onClick:async()=>{i("");const{error:e}=await n();e?i("Passkey sign-in could not be completed. Try another sign-in method."):r("/")},className:$e.button,children:"Use Passkey"}),o&&e("p",{className:$e.error,children:o})]})})};var Ve="registerPasskey-module__container___jqEh8",He="registerPasskey-module__card___MJAyC",Ke="registerPasskey-module__loading___Q4i1x",Ye="registerPasskey-module__spinner___V1nhd",Ze="registerPasskey-module__supported___ihTih",Qe="registerPasskey-module__title___vn2Qu",Xe="registerPasskey-module__description___AWmO-",et="registerPasskey-module__button___D3b4B",tt="registerPasskey-module__message___RiOw-",rt="registerPasskey-module__success___HP5aX",nt="registerPasskey-module__error___hGiqE",ot="registerPasskey-module__skip___1hDyU",it="registerPasskey-module__secondary___bnOB4";ke(".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 at={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 st=()=>{const{refreshSession:r}=ne(),n=ie(),{passkeySupported:o,loading:i}=me(),{loginMethods:a,loading:s}=se(),l=y(),[c,d]=g("idle"),[u,m]=g(""),_=le(a),p=async()=>{await r(),l("/")},f=async e=>{const{platform:t,browser:o,deviceInfo:i}=function(){const e=navigator.userAgent.toLowerCase();let t="unknown",r="unknown";return/iphone|ipad|ipod/.test(e)?t="ios":/android/.test(e)?t="android":/mac os/.test(e)?t="mac":/windows/.test(e)?t="windows":/linux/.test(e)&&(t="linux"),navigator.brave?r="brave":/edg\/|edgios/.test(e)?r="edge":/opr\/|opt\/|opera/.test(e)?r="opera":/vivaldi/.test(e)?r="vivaldi":/samsungbrowser/.test(e)?r="samsung":/firefox|fxios/.test(e)?r="firefox":/chrome|crios/.test(e)?r="chrome":/safari/.test(e)&&(r="safari"),{platform:t,browser:r,deviceInfo:`${t} • ${r}`}}(),a={friendlyName:i,platform:t,browser:o,deviceInfo:i};d("loading");try{const{error:t}=await n.registerPasskey({metadata:a,attachment:e});if(t)throw t;await r(),d("success"),m("Passkey registered successfully."),l("/")}catch(e){console.error("Passkey registration failed."),d("error"),m(function(e){const t=A(e);return t?at[t]:void 0}(e)??(M(e)?"Your session expired before the passkey was saved. Sign in again to add one.":"Error registering passkey."))}};return e("div",{className:Ve,children:e("div",{className:He,children:t("div",i||s?{className:Ke,children:[e("div",{className:Ye}),e("span",{children:"Checking for Passkey Support..."})]}:o?{className:Ze,children:[e("h2",{className:Qe,children:"Secure Your Account with a Passkey"}),e("p",{className:Xe,children:"Your device supports passkeys! Register one to skip passwords forever."}),e("button",{onClick:()=>f(),disabled:"loading"===c,className:et,children:"loading"===c?"Registering...":"Register Passkey"}),e("button",{type:"button",onClick:()=>f("cross-platform"),disabled:"loading"===c,className:it,children:"Use a security key instead"}),u&&e("p",{className:`${tt} ${"success"===c?rt:nt}`,children:u}),_&&e("button",{type:"button",onClick:p,disabled:"loading"===c,className:ot,children:"Skip for now"})]}:{className:Ze,children:[e("h2",{className:Qe,children:"Passkeys are not available here"}),e("p",{className:Xe,children:_?"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."}),_&&e("button",{type:"button",onClick:p,className:et,children:"Continue"})]})})})};var lt="verifyOTP-module__container___wgoDE",ct="verifyOTP-module__card___3cs2p",dt="verifyOTP-module__title___fZ-1d",ut="verifyOTP-module__subtitle___dGSu3",mt="verifyOTP-module__error___GEtlG",_t="verifyOTP-module__success___46TjG",gt="verifyOTP-module__form___jiGG-",pt="verifyOTP-module__label___Zq5Mi",ft="verifyOTP-module__timer___smq-a",ht="verifyOTP-module__resend___PlmkG",yt="verifyOTP-module__button___8pIuO",bt="verifyOTP-module__toggle___wbzVa";ke(".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 vt="otpInput-module__otpContainer___MUjby",kt="otpInput-module__otpInput___3YMVm";ke(".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 wt=({length:t=6,value:r,inputMode:n="numeric",onChange:o,name:i="otp"})=>{const a=p([]),s=r.split("").concat(Array(t).fill("")).slice(0,t),l=(e,t)=>{var r;if(t.length>1)c(e,t);else if(!t||(r=t,"numeric"===n?/^\d$/.test(r):/^[a-zA-Z]$/.test(r))){const r=[...s];r[e]=t;const n=r.join("");o(n),t&&a.current[e+1]&&a.current[e+1]?.focus()}},c=(e,r)=>{let i=r;i="numeric"===n?r.replace(/\D/g,""):r.replace(/[^a-zA-Z]/g,"");const l=i.slice(0,t).split(""),c=[...s];l.forEach((r,n)=>{e+n<t&&(c[e+n]=r)}),o(c.join("")),a.current[Math.min(e+l.length,t-1)]?.focus()};return e("div",{className:vt,role:"group","aria-label":"One-time password input",onPaste:e=>{e.preventDefault(),c(0,e.clipboardData.getData("text"))},children:s.map((r,c)=>e("input",{ref:e=>a.current[c]=e,type:"text",inputMode:"numeric"===n?"numeric":"text",autoComplete:"one-time-code",name:`${i}-${c}`,maxLength:1,value:r,className:kt,onChange:e=>l(c,e.target.value),onKeyDown:e=>((e,r)=>{if("Backspace"===r.key){r.preventDefault();const t=[...s];s[e]?(t[e]="",o(t.join(""))):e>0&&(t[e-1]="",o(t.join("")),a.current[e-1]?.focus())}"ArrowLeft"===r.key&&e>0&&a.current[e-1]?.focus(),"ArrowRight"===r.key&&e<t-1&&a.current[e+1]?.focus()})(c,e),"aria-label":`Digit ${c+1}`},c))})},xt=()=>{const r=y(),n=b(),{refreshSession:o}=ne(),i="login"===n.state?.flow,[a,s]=g(""),[l,c]=g(null),[d,u]=g(""),[_,p]=g(!1),[f,h]=g(""),[v,k]=g(300),w=ie(),x=async()=>{if(p(!0),!l){const{error:e}=i?await w.verifyLoginPhoneOtp(a):await w.verifyPhoneOtp(a);if(e)u("Verification failed.");else{if(i)return await o(),void r("/");c(!0)}}p(!1)},P=async()=>{h(""),await(async()=>{u("");const{error:e}=i?await w.requestLoginPhoneOtp():await w.requestPhoneOtp();e?u("Failed to send SMS code. If this persists, refresh the page and try again."):h("Verification SMS has been resent.")})(),h("Verification SMS has been resent.")};return m(()=>{const e=setInterval(()=>{k(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),m(()=>{l&&!i&&(async()=>{const{error:e}=await w.requestEmailOtp();e?u("Failed to send Email code. If this persists, refresh the page and try registering again."):r(fe)})()},[l,i,r,w]),e("div",{className:lt,children:t("div",{className:ct,children:[e("h2",{className:dt,children:"Verify Your Phone Number"}),e("p",{className:ut,children:"Enter the code sent to your phone number."}),d&&e("p",{className:mt,children:d}),f&&e("p",{className:_t,children:f}),t("form",{onSubmit:async e=>{if(e.preventDefault(),u(""),6===a.length){p(!0);try{await x()}catch{u("Unexpected error occurred.")}finally{p(!1)}}else u("Please enter a valid code.")},className:gt,children:[t("div",{children:[t("label",{htmlFor:"phoneCode",className:pt,children:["Phone Verification Code ",(O=l,!0===O?e("span",{className:"text-green-400 ml-2",children:"✅"}):!1===O?e("span",{className:"text-red-400 ml-2",children:"❌"}):null)," -"," ",t("span",{className:ft,children:["Code expires in: ",(S=v,`${Math.floor(S/60).toString().padStart(2,"0")}:${(S%60).toString().padStart(2,"0")}`)]})]}),e(wt,{length:6,value:a,onChange:s}),e("button",{type:"button",onClick:()=>P(),className:ht,children:"Resend code to phone"})]}),e("button",{type:"submit",className:yt,children:_?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>r("/login"),className:bt,children:"Back to login"})]})]})});var S,O},Pt=()=>{const r=y(),n=b(),{refreshSession:o}=ne(),i=ie(),{passkeySupported:a}=me(),s="login"===n.state?.flow,[l,c]=g(!1),[d,u]=g(""),[_,p]=g(300),[f,h]=g(""),[v,k]=g("");return m(()=>{const e=setInterval(()=>{p(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),e("div",{className:lt,children:t("div",{className:ct,children:[e("h2",{className:dt,children:"Verify Your Email"}),e("p",{className:ut,children:"We sent you a verification email. Enter the code below."}),f&&e("p",{className:mt,children:f}),v&&e("p",{className:_t,children:v}),t("form",{onSubmit:async e=>{if(e.preventDefault(),h(""),6===d.length){c(!0);try{const{error:e}=s?await i.verifyLoginEmailOtp(d):await i.verifyEmailOtp(d);if(e)return void h("Verification failed.");if(s)return await o(),void r("/");a?r(be):(await o(),r("/"))}catch{console.error("Email OTP verification failed."),h("Verification failed.")}finally{c(!1)}}else h("Please enter a valid code.")},className:gt,children:[t("div",{children:[t("label",{htmlFor:"emailCode",className:pt,children:["Email Verification Code",t("span",{className:ft,children:[" ","— Code expires in ",(w=_,`${Math.floor(w/60).toString().padStart(2,"0")}:${(w%60).toString().padStart(2,"0")}`)]})]}),e(wt,{length:6,value:d,onChange:u,inputMode:"text"}),e("button",{type:"button",onClick:async()=>{h(""),k("");const{error:e}=s?await i.requestLoginEmailOtp():await i.requestEmailOtp();e?h("Failed to send Email code. If this persists, refresh the page and try again."):k("Verification email has been resent.")},className:ht,children:"Resend code to email"})]}),e("button",{type:"submit",className:yt,disabled:l,children:l?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>r("/login"),className:bt,children:"Back to login"})]})]})});var w};var St={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"};ke(".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 Ot=()=>{const[r]=v(),n=y(),o=r.get("token"),[i,a]=g(""),[s,l]=g(""),c=ie(),{refreshSession:d}=ne();return m(()=>{let e=!0,t=null,r=null;return(async()=>{if(!o)return e&&a("Missing token for verification."),void console.error("No magic-link token found.");const{error:i}=await c.verifyMagicLink(o);if(i)return console.error("Failed to verify token"),void(e&&a("Failed to verify token"));await d(),e&&(t=new BroadcastChannel("seamless-auth"),t.postMessage({type:"MAGIC_LINK_AUTH_SUCCESS"}),l("You have been verified on the device and browser that initiated this request"),r=setTimeout(()=>{e&&n("/")},900))})(),()=>{e=!1,t?.close(),r&&clearTimeout(r)}},[o,c,n,d]),e("div",{className:St.container,children:t("div",{className:St.card,children:[e("h1",{className:St.title,children:"Verifying your login"}),t("div",{className:St.verificationContent,children:[!s&&!i&&e("div",{className:St.spinner}),s&&e("div",{className:St.successIcon,children:e("svg",{viewBox:"0 0 24 24",className:St.checkIcon,fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M5 13l4 4L19 7"})})}),!s&&!i&&e("p",{className:St.helperText,children:"Please wait while we securely verify your sign-in link."}),s&&e("p",{className:St.successText,children:"Login verified. Redirecting…"}),i&&e("p",{className:St.error,children:i})]})]})})};const Nt={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."},Tt=()=>{const{finishOAuthLogin:n}=ne(),o=y(),[i]=v(),[a,s]=g(""),l=p(!1);return m(()=>{if(l.current)return;l.current=!0;const e=i.get("code"),t=i.get("state"),r=sessionStorage.getItem(Je);e&&t&&r?n({providerId:r,code:e,state:t}).then(({data:e,error:t})=>{if(t){const e=T(t);return void s(e?Nt[e]:"We could not complete sign-in. Please try again.")}sessionStorage.removeItem(Je),o(function(e){if(!e)return null;try{const t=new URL(e,window.location.origin);return t.origin!==window.location.origin?null:`${t.pathname}${t.search}${t.hash}`}catch{return null}}(e?.returnTo)??"/")}):s("This sign-in link is missing required information.")},[n,o,i]),t("div",{className:St.container,children:[e("h2",{className:St.title,children:a?"Sign-in failed":"Completing sign-in..."}),a&&t(r,{children:[e("p",{children:a}),e("button",{type:"button",onClick:()=>o("/login"),children:"Back to login"})]})]})};var Ct="magiclink-module__container___45zcA",It="magiclink-module__card___Au9oN",At="magiclink-module__iconWrapper___k5ndr",Mt="magiclink-module__mailIcon___Pwb7q",Et="magiclink-module__iconRing___bdLvf",zt="magiclink-module__heading___b9cre",Ft="magiclink-module__message___kiVFj",Ut="magiclink-module__identifier___JtcFM",Lt="magiclink-module__helperText___7Mlfh",Rt="magiclink-module__actions___64I-3",qt="magiclink-module__secondaryButton___BntAI",Bt="magiclink-module__cooldown___Ib4rm",jt="magiclink-module__linkButton___maJiv";ke(".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 Jt=()=>{const{refreshSession:r}=ne(),n=y(),o=b(),i=ie(),a=o.state?.identifier,[s,l]=g(30);m(()=>{const e=setInterval(()=>{l(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]);const c=f(async()=>{const{data:e,error:t}=await i.checkMagicLink();return!t&&"Success"===e?.message},[i]);return m(()=>{const e=new BroadcastChannel("seamless-auth");return e.onmessage=async e=>{"MAGIC_LINK_AUTH_SUCCESS"===e.data?.type&&await c()&&(await r(),n("/"))},()=>{e.close()}},[c,n,r]),m(()=>{const e=setInterval(async()=>{try{await c()&&(await r(),n("/"))}catch{}},5e3);return()=>clearInterval(e)},[c,r,n]),e("div",{className:Ct,children:t("div",{className:It,children:[t("div",{className:At,children:[e("div",{className:Et}),t("svg",{className:Mt,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[e("path",{d:"M4 6h16v12H4z"}),e("path",{d:"m4 6 8 6 8-6"})]})]}),e("h2",{className:zt,children:"Check your email"}),e("p",{className:Ft,children:"If an account exists for this address, we sent a secure sign-in link."}),a&&e("div",{className:Ut,children:a}),e("p",{className:Lt,children:"Open the email and click the link to finish signing in."}),e("p",{className:Lt,children:"Didn’t receive anything? Check your spam folder or try creating a new account."}),t("div",{className:Rt,children:[e("button",{className:qt,disabled:s>0,onClick:async()=>{s>0||(await i.requestMagicLink(),l(30))},children:"Resend link"}),s>0&&t("div",{className:Bt,children:["Available in ",s,"s"]}),e("button",{className:jt,onClick:()=>n("/login"),children:"Change email or phone"})]})]})})},Gt=()=>t(k,{children:[e(w,{path:_e,element:e(We,{})}),e(w,{path:ge,element:e(De,{})}),e(w,{path:pe,element:e(xt,{})}),e(w,{path:fe,element:e(Pt,{})}),e(w,{path:he,element:e(Ot,{})}),e(w,{path:ye,element:e(Tt,{})}),e(w,{path:be,element:e(st,{})}),e(w,{path:ve,element:e(Jt,{})}),e(w,{path:"*",element:e(x,{to:_e,replace:!0})})]});export{oe as AuthProvider,Gt as AuthRoutes,S as SeamlessAuthError,Y as createSeamlessAuthClient,B as encodePrfSalt,$ as extractPasskeyPrfResult,T as getOAuthErrorCode,A as getPasskeyPolicyErrorCode,E as getWebAuthnErrorDetail,le as hasNonPasskeyLoginMethod,Q as hasScopedRole,G as isPasskeyPrfSupported,M as isUnauthenticated,Z as roleGrantsAccess,ne as useAuth,ie as useAuthClient,se as useLoginMethods,me as usePasskeySupport};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/client/errors.ts","../src/client/result.ts","../src/client/webauthnPrf.ts","../src/client/webauthnSupport.ts","../src/client/createSeamlessAuthClient.ts","../src/fetchWithAuth.ts","../src/scopedRoles.ts","../src/session/storage.ts","../src/session/createAuthSession.ts","../src/AuthProvider.tsx","../src/hooks/useAuthClient.ts","../src/hooks/useLoginMethods.ts","../src/utils.ts","../src/hooks/usePasskeySupport.ts","../src/routes.ts","../node_modules/style-inject/dist/style-inject.es.js","../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,null,null,null,null,null,null,null,null,null,null,null,null,null,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],"names":["SeamlessAuthError","Error","constructor","message","status","body","cause","super","this","name","OAUTH_ERROR_CODES","oauth_missing_email","oauth_email_not_verified","oauth_missing_subject","readCode","code","getOAuthErrorCode","error","details","Object","prototype","hasOwnProperty","call","undefined","PASSKEY_POLICY_ERROR_CODES","attachment_not_allowed","synced_passkey_not_allowed","authenticator_not_allowed","prf_required","readPolicyCode","getPasskeyPolicyErrorCode","getWebAuthnErrorDetail","value","async","toSeamlessAuthError","response","fallbackMessage","json","extractMessage","readBody","requestResult","request","data","ok","resultOf","resultError","toArrayBuffer","ArrayBuffer","source","Uint8Array","buffer","byteOffset","byteLength","copy","set","encodePrfSalt","salt","bufferToBase64URLString","saltToBufferSource","base64URLStringToBuffer","createPrfRequestBody","input","credentialId","prf","secondSalt","isPasskeyPrfSupported","browserSupportsWebAuthn","window","isSecureContext","globalThis","PublicKeyCredential","navigator","credentials","get","preparePrfRequestOptions","optionsJSON","options","prfEval","extensions","eval","first","second","extractPasskeyPrfResult","credential","extensionResults","clientExtensionResults","results","output","id","outputBase64url","stripPrfResultsFromAssertion","toStepUpStatus","payload","expectedMethod","method","fresh","verifiedAt","expiresAt","maxAgeSeconds","buildAssertionStartInit","JSON","stringify","webAuthnFailure","logContext","thrown","failure","detail","console","createSeamlessAuthClient","opts","fetchWithAuth","authHost","init","url","replace","startsWith","hasBody","requestInit","headers","fetch","createFetchWithAuth","apiHost","getCurrentUser","login","loginWithPasskey","optionsInput","started","assertionResponse","startAuthentication","verified","logout","scope","logoutAllSessions","deleteUser","register","email","phone","requestPhoneOtp","verifyPhoneOtp","verificationToken","requestLoginPhoneOtp","verifyLoginPhoneOtp","requestEmailOtp","verifyEmailOtp","requestLoginEmailOtp","verifyLoginEmailOtp","requestMagicLink","redirectUri","destination","magicLinkRedirectUri","checkMagicLink","verifyMagicLink","token","encodeURIComponent","listOAuthProviders","getPublicSystemConfig","startOAuthLogin","providerId","returnTo","finishOAuthLogin","state","registerPasskey","registerInput","metadata","normalizeRegisterPasskeyInput","challenge","query","URLSearchParams","requirePrf","requestPrf","attachment","queryString","toString","buildRegisterStartPath","attestationResponse","startRegistration","WebAuthnError","prfCapable","enabled","getRegistrationPrfCapable","getStepUpStatus","verifyStepUpWithPasskey","verifyStepUpWithPasskeyPrf","getTotpStatus","startTotpEnrollment","verifyTotpEnrollment","disableTotp","verifyStepUpWithTotp","updateCredential","deleteCredential","listOrganizations","createOrganization","getOrganization","organizationId","updateOrganization","switchOrganization","listOrganizationMembers","addOrganizationMember","updateOrganizationMember","userId","removeOrganizationMember","roleGrantsAccess","grantedRole","requiredRole","granted","trim","required","endsWith","prefix","slice","includes","grantedParts","split","requiredParts","grantedAction","length","requiredAction","grantedPrefix","requiredPrefix","every","part","index","hasScopedRole","grantedRoles","requiredRoles","Array","isArray","filter","role","some","createDefaultStorage","localStorage","values","Map","key","createMemoryStorage","getItem","setItem","PREVIOUS_SIGN_IN_KEY","SIGNED_OUT","user","organizations","activeOrganization","stepUpStatus","isAuthenticated","AuthContext","createContext","useAuth","context","useContext","AuthProvider","children","autoDetectPreviousSignin","session","useMemo","detectPreviousSignIn","client","storage","listeners","Set","destroyed","refreshGeneration","loading","hasSignedInBefore","setState","patch","next","keys","forEach","listener","markSignedIn","clearSession","refreshSession","generation","result","refreshAfter","run","getState","subscribe","add","delete","actions","identifier","passkeyAvailable","handlePasskeyLogin","friendlyName","updated","map","current","refreshStepUpStatus","hasRole","roles","rolesGrantScopedAccess","destroy","clear","createAuthSession","useSyncExternalStore","useEffect","_jsx","Provider","useAuthClient","FALLBACK_LOGIN_METHODS","useLoginMethods","authClient","loginMethods","setLoginMethods","useState","setLoading","active","read","hasNonPasskeyLoginMethod","Boolean","isValidEmail","normalized","parts","localPart","domainPart","test","isValidPhoneNumber","phoneNumber","parsePhoneNumberFromString","isValid","isPasskeySupported","isUserVerifyingPlatformAuthenticatorAvailable","isPlatformAuthenticatorAvailable","usePasskeySupport","passkeySupported","setPasskeySupported","supported","checkSupport","authRoutePaths","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","AuthFallbackOptions","onMagicLink","onEmailOtp","onPhoneOtp","onPasskeyRetry","allowedMethods","showMagicLink","has","showEmailOtp","showPhoneOtp","showPasskeyRetry","_jsxs","className","styles","onClick","OAUTH_PROVIDER_STORAGE_KEY","OAuthProviderButtons","callbackHref","useHref","providers","setProviders","setError","then","provider","sessionStorage","URL","location","origin","assign","authorizationUrl","handleSelect","Login","navigate","useNavigate","configuredMethods","setIdentifier","setEmail","mode","setMode","formErrors","setFormErrors","emailError","setEmailError","identifierError","setIdentifierError","showFallbackOptions","setShowFallbackOptions","canSubmit","_Fragment","onSubmit","e","preventDefault","loginStart","availableMethods","passkeyError","htmlFor","onChange","target","autoComplete","placeholder","onBlur","flow","disabled","PassKeyLogin","runPasskeyLogin","container","card","title","button","POLICY_REFUSAL_MESSAGES","PasskeyRegistration","passkeySupportLoading","loginMethodsLoading","setStatus","setMessage","canSkip","finishWithoutPasskey","platform","browser","deviceInfo","ua","userAgent","toLowerCase","brave","parseUserAgent","policyRefusalMessage","OtpInput","inputMode","inputs","useRef","concat","fill","handleChange","char","handleBulkInput","newValueArr","newValue","join","focus","cleaned","chars","i","Math","min","onPaste","clipboardData","getData","el","maxLength","onKeyDown","handleKeyDown","PhoneRegistration","useLocation","isLoginFlow","phoneOtp","setPhoneOtp","phoneVerified","setPhoneVerified","resendMsg","setResendMsg","phoneTimeLeft","setPhoneTimeLeft","verifyPhoneOTP","handleResend","onResendPhone","interval","setInterval","prev","clearInterval","nextStep","seconds","floor","padStart","EmailRegistration","emailOtp","setEmailOtp","emailTimeLeft","setEmailTimeLeft","VerifyMagicLink","searchParams","useSearchParams","successMsg","setSuccessMsg","mounted","channel","redirectTimeout","BroadcastChannel","postMessage","setTimeout","verify","close","clearTimeout","verificationContent","spinner","successIcon","viewBox","checkIcon","stroke","strokeWidth","d","helperText","successText","CODE_ERRORS","OAuthCallback","startedRef","finishError","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":[15]}
1
+ {"version":3,"file":"index.js","sources":["../src/client/errors.ts","../src/client/result.ts","../src/client/webauthnPrf.ts","../src/client/webauthnSupport.ts","../src/client/createSeamlessAuthClient.ts","../src/fetchWithAuth.ts","../src/scopedRoles.ts","../src/session/storage.ts","../src/session/createAuthSession.ts","../src/AuthProvider.tsx","../src/hooks/useAuthClient.ts","../src/hooks/useLoginMethods.ts","../src/utils.ts","../src/hooks/usePasskeySupport.ts","../src/routes.ts","../node_modules/style-inject/dist/style-inject.es.js","../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,null,null,null,null,null,null,null,null,null,null,null,null,null,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],"names":["SeamlessAuthError","Error","constructor","message","status","body","cause","super","this","name","OAUTH_ERROR_CODES","oauth_missing_email","oauth_email_not_verified","oauth_missing_subject","readCode","code","getOAuthErrorCode","error","details","Object","prototype","hasOwnProperty","call","undefined","PASSKEY_POLICY_ERROR_CODES","attachment_not_allowed","synced_passkey_not_allowed","authenticator_not_allowed","prf_required","readPolicyCode","getPasskeyPolicyErrorCode","isUnauthenticated","getWebAuthnErrorDetail","value","async","toSeamlessAuthError","response","fallbackMessage","json","extractMessage","readBody","requestResult","request","data","ok","resultOf","resultError","toArrayBuffer","ArrayBuffer","source","Uint8Array","buffer","byteOffset","byteLength","copy","set","encodePrfSalt","salt","bufferToBase64URLString","saltToBufferSource","base64URLStringToBuffer","createPrfRequestBody","input","credentialId","prf","secondSalt","isPasskeyPrfSupported","browserSupportsWebAuthn","window","isSecureContext","globalThis","PublicKeyCredential","navigator","credentials","get","preparePrfRequestOptions","optionsJSON","options","prfEval","extensions","eval","first","second","extractPasskeyPrfResult","credential","extensionResults","clientExtensionResults","results","output","id","outputBase64url","stripPrfResultsFromAssertion","toStepUpStatus","payload","expectedMethod","method","fresh","verifiedAt","expiresAt","maxAgeSeconds","buildAssertionStartInit","JSON","stringify","webAuthnFailure","logContext","thrown","failure","detail","console","createSeamlessAuthClient","opts","fetchWithAuth","authHost","init","url","replace","startsWith","hasBody","requestInit","headers","fetch","createFetchWithAuth","apiHost","getCurrentUser","login","loginWithPasskey","optionsInput","started","assertionResponse","startAuthentication","verified","logout","scope","logoutAllSessions","deleteUser","register","email","phone","requestPhoneOtp","verifyPhoneOtp","verificationToken","requestLoginPhoneOtp","verifyLoginPhoneOtp","requestEmailOtp","verifyEmailOtp","requestLoginEmailOtp","verifyLoginEmailOtp","requestMagicLink","redirectUri","destination","magicLinkRedirectUri","checkMagicLink","verifyMagicLink","token","encodeURIComponent","listOAuthProviders","getPublicSystemConfig","startOAuthLogin","providerId","returnTo","finishOAuthLogin","state","registerPasskey","registerInput","metadata","normalizeRegisterPasskeyInput","challenge","query","URLSearchParams","requirePrf","requestPrf","attachment","queryString","toString","buildRegisterStartPath","attestationResponse","startRegistration","WebAuthnError","prfCapable","enabled","getRegistrationPrfCapable","getStepUpStatus","verifyStepUpWithPasskey","verifyStepUpWithPasskeyPrf","getTotpStatus","startTotpEnrollment","verifyTotpEnrollment","disableTotp","verifyStepUpWithTotp","updateCredential","deleteCredential","listOrganizations","createOrganization","getOrganization","organizationId","updateOrganization","switchOrganization","listOrganizationMembers","addOrganizationMember","updateOrganizationMember","userId","removeOrganizationMember","roleGrantsAccess","grantedRole","requiredRole","granted","trim","required","endsWith","prefix","slice","includes","grantedParts","split","requiredParts","grantedAction","length","requiredAction","grantedPrefix","requiredPrefix","every","part","index","hasScopedRole","grantedRoles","requiredRoles","Array","isArray","filter","role","some","createDefaultStorage","localStorage","values","Map","key","createMemoryStorage","getItem","setItem","PREVIOUS_SIGN_IN_KEY","SIGNED_OUT","user","organizations","activeOrganization","stepUpStatus","isAuthenticated","AuthContext","createContext","useAuth","context","useContext","AuthProvider","children","autoDetectPreviousSignin","session","useMemo","detectPreviousSignIn","client","storage","listeners","Set","destroyed","refreshGeneration","loading","hasSignedInBefore","setState","patch","next","keys","forEach","listener","markSignedIn","clearSession","refreshSession","generation","result","refreshAfter","run","getState","subscribe","add","delete","actions","identifier","passkeyAvailable","handlePasskeyLogin","friendlyName","updated","map","current","refreshStepUpStatus","hasRole","roles","rolesGrantScopedAccess","destroy","clear","createAuthSession","useSyncExternalStore","useEffect","_jsx","Provider","useAuthClient","FALLBACK_LOGIN_METHODS","useLoginMethods","authClient","loginMethods","setLoginMethods","useState","setLoading","active","read","hasNonPasskeyLoginMethod","Boolean","isValidEmail","normalized","parts","localPart","domainPart","test","isValidPhoneNumber","phoneNumber","parsePhoneNumberFromString","isValid","isPasskeySupported","isUserVerifyingPlatformAuthenticatorAvailable","isPlatformAuthenticatorAvailable","usePasskeySupport","passkeySupported","setPasskeySupported","supported","checkSupport","authRoutePaths","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","AuthFallbackOptions","onMagicLink","onEmailOtp","onPhoneOtp","onPasskeyRetry","allowedMethods","showMagicLink","has","showEmailOtp","showPhoneOtp","showPasskeyRetry","_jsxs","className","styles","onClick","OAUTH_PROVIDER_STORAGE_KEY","OAuthProviderButtons","callbackHref","useHref","providers","setProviders","setError","then","provider","sessionStorage","URL","location","origin","assign","authorizationUrl","handleSelect","Login","navigate","useNavigate","configuredMethods","setIdentifier","setEmail","mode","setMode","formErrors","setFormErrors","emailError","setEmailError","identifierError","setIdentifierError","showFallbackOptions","setShowFallbackOptions","canSubmit","_Fragment","onSubmit","e","preventDefault","loginStart","availableMethods","passkeyError","htmlFor","onChange","target","autoComplete","placeholder","onBlur","flow","disabled","PassKeyLogin","runPasskeyLogin","container","card","title","button","POLICY_REFUSAL_MESSAGES","PasskeyRegistration","passkeySupportLoading","loginMethodsLoading","setStatus","setMessage","canSkip","finishWithoutPasskey","platform","browser","deviceInfo","ua","userAgent","toLowerCase","brave","parseUserAgent","policyRefusalMessage","OtpInput","inputMode","inputs","useRef","concat","fill","handleChange","char","handleBulkInput","newValueArr","newValue","join","focus","cleaned","chars","i","Math","min","onPaste","clipboardData","getData","el","maxLength","onKeyDown","handleKeyDown","PhoneRegistration","useLocation","isLoginFlow","phoneOtp","setPhoneOtp","phoneVerified","setPhoneVerified","resendMsg","setResendMsg","phoneTimeLeft","setPhoneTimeLeft","verifyPhoneOTP","handleResend","onResendPhone","interval","setInterval","prev","clearInterval","nextStep","seconds","floor","padStart","EmailRegistration","emailOtp","setEmailOtp","emailTimeLeft","setEmailTimeLeft","VerifyMagicLink","searchParams","useSearchParams","successMsg","setSuccessMsg","mounted","channel","redirectTimeout","BroadcastChannel","postMessage","setTimeout","verify","close","clearTimeout","verificationContent","spinner","successIcon","viewBox","checkIcon","stroke","strokeWidth","d","helperText","successText","CODE_ERRORS","OAuthCallback","startedRef","finishError","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":[15]}
@@ -1,4 +1,4 @@
1
- import { CurrentUserResult, FinishOAuthLoginInput, FinishOAuthLoginResult, LoginStartResult, MessageResult, OAuthProvidersResult, OrganizationSwitchResult, PasskeyLoginData, StartOAuthLoginInput, StartOAuthLoginResult, StepUpPrfData, StepUpStatus } from '../client/createSeamlessAuthClient';
1
+ import { CurrentUserResult, FinishOAuthLoginInput, FinishOAuthLoginResult, LoginStartResult, MessageResult, OAuthProvidersResult, OrganizationSwitchResult, PasskeyLoginData, PasskeyMetadata, PasskeyRegistrationData, RegisterPasskeyOptions, StartOAuthLoginInput, StartOAuthLoginResult, StepUpPrfData, StepUpStatus } from '../client/createSeamlessAuthClient';
2
2
  import type { SeamlessAuthResult } from '../client/result';
3
3
  import { PasskeyPrfInput } from '../client/webauthnPrf';
4
4
  import { Credential, Organization, User } from '../types';
@@ -17,6 +17,7 @@ export interface AuthSessionState {
17
17
  export interface AuthSessionActions {
18
18
  login: (identifier: string, passkeyAvailable: boolean) => Promise<SeamlessAuthResult<LoginStartResult>>;
19
19
  handlePasskeyLogin: () => Promise<SeamlessAuthResult<PasskeyLoginData>>;
20
+ registerPasskey: (input: PasskeyMetadata | RegisterPasskeyOptions) => Promise<SeamlessAuthResult<PasskeyRegistrationData>>;
20
21
  refreshSession: () => Promise<SeamlessAuthResult<CurrentUserResult>>;
21
22
  logout: () => Promise<SeamlessAuthResult<MessageResult>>;
22
23
  logoutAllSessions: () => Promise<SeamlessAuthResult<MessageResult>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamless-auth/react",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "A drop-in authentication solution for modern React applications.",
5
5
  "type": "module",
6
6
  "exports": {