@seamless-auth/react 0.10.0 → 0.11.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 +79 -0
- package/README.md +30 -8
- package/dist/AuthProvider.d.ts +8 -2
- package/dist/client/createSeamlessAuthClient.d.ts +21 -4
- package/dist/client/errors.d.ts +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/session/createAuthSession.d.ts +2 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,84 @@
|
|
|
1
1
|
# @seamless-auth/react
|
|
2
2
|
|
|
3
|
+
## 0.11.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- bd26c22: Read the `returnTo` an OAuth sign-in asked for, and land on it.
|
|
8
|
+
|
|
9
|
+
`startOAuthLogin` has taken a `returnTo` since OAuth landed here, and nothing ever read one
|
|
10
|
+
back. The auth server validated it against the configured origins and signed it into the
|
|
11
|
+
state, but `finishOAuthLogin` was typed as a bare `MessageResult`, so the whole callback body
|
|
12
|
+
was discarded and an adopter had no way to learn where the flow had been asked to end up.
|
|
13
|
+
|
|
14
|
+
`finishOAuthLogin` now resolves to `FinishOAuthLoginResult`, the completed OAuth response
|
|
15
|
+
minus its session material, for the same reason `LoginStartResult` drops it: sessions are
|
|
16
|
+
carried by cookies, so there is no reason to hand an adopter raw tokens. The new field on it
|
|
17
|
+
is `returnTo`, absent when the caller asked for nothing.
|
|
18
|
+
|
|
19
|
+
The bundled `OAuthCallback` view lands there instead of always going to `/`. This is the same
|
|
20
|
+
gap the magic link redirect closed in 0.10.0: the headless client could reach the feature and
|
|
21
|
+
an application using `AuthRoutes` could not, which is the audience least likely to be wiring
|
|
22
|
+
up its own client.
|
|
23
|
+
|
|
24
|
+
The view only follows a destination on its own origin. That is not the guard against an open
|
|
25
|
+
redirect, which the auth server already applied before signing the state; it is that these
|
|
26
|
+
views route with react-router, which cannot leave the application. An adopter that wants to
|
|
27
|
+
send someone to another origin reads `returnTo` off the result and navigates itself.
|
|
28
|
+
|
|
29
|
+
Requires `@seamless-auth/types` 0.20.0, which carries the response field and holds both
|
|
30
|
+
`returnTo` fields to a scheme that can be a link destination.
|
|
31
|
+
|
|
32
|
+
- 74f17d2: Let the bundled screens choose where a magic link lands.
|
|
33
|
+
|
|
34
|
+
`requestMagicLink(redirectUri)` arrived in 0.10.0, but only the headless client
|
|
35
|
+
path could reach it. An application using `AuthRoutes` had no way to set one, so
|
|
36
|
+
the deployment-wide destination was the only option for the audience least likely
|
|
37
|
+
to be wiring up its own client.
|
|
38
|
+
|
|
39
|
+
`AuthProvider` now takes `magicLinkRedirectUri`, and `useAuthClient()` hands it to
|
|
40
|
+
the client as the default for every send. `SeamlessAuthClientOptions` carries the
|
|
41
|
+
same field, so a directly constructed client can do this too.
|
|
42
|
+
|
|
43
|
+
The destination lives on the client rather than at each call site on purpose. The
|
|
44
|
+
sign-in screen and the resend on the "check your email" screen both send with no
|
|
45
|
+
argument, so they cannot disagree about where the link goes. A resend that landed
|
|
46
|
+
somewhere other than the link it repeats would be a confusing failure and an easy
|
|
47
|
+
one to miss in review.
|
|
48
|
+
|
|
49
|
+
Nothing changes if you omit it: the same empty body is sent and the deployment's
|
|
50
|
+
own destination still applies. An explicit `requestMagicLink(uri)` still wins over
|
|
51
|
+
the configured default.
|
|
52
|
+
|
|
53
|
+
- eb10397: Stop painting the disabled submit button as a filled grey primary.
|
|
54
|
+
|
|
55
|
+
On the sign-in and MFA screens the submit button was disabled until its field
|
|
56
|
+
validated, and while disabled it was filled with `--seamless-disabled` while the
|
|
57
|
+
label kept `--seamless-accent-contrast`. Those two colours were chosen in
|
|
58
|
+
different places, so no value a themed app could supply worked in both a light
|
|
59
|
+
and a dark theme: lighten the fill and the label washed out, darken it and the
|
|
60
|
+
label went near-black on dark. The result read as a primary button that had
|
|
61
|
+
broken rather than a control waiting on input.
|
|
62
|
+
|
|
63
|
+
The disabled state is now the enabled button at reduced opacity. Label and
|
|
64
|
+
background stay on the accent pair the app already tuned, so their contrast
|
|
65
|
+
cannot invert with the theme, and the control reads as inactive instead of
|
|
66
|
+
broken. This matches how the magic-link and passkey screens already draw their
|
|
67
|
+
disabled buttons.
|
|
68
|
+
|
|
69
|
+
`--seamless-disabled` is no longer read anywhere and has been dropped from the
|
|
70
|
+
token table. If you set it, remove it; every other token behaves as before.
|
|
71
|
+
|
|
72
|
+
The sign-in screen now also says why the button is refusing, in a live region
|
|
73
|
+
below it that reports whether the field is empty, incomplete, or ready. A
|
|
74
|
+
disabled button is not focusable and is passed over by screen readers, so the
|
|
75
|
+
refusal was previously silent for the people least able to guess the reason.
|
|
76
|
+
|
|
77
|
+
Fixing that surfaced a related bug: a valid email typed in registration left the
|
|
78
|
+
Login button enabled after switching to sign-in, even with the identifier field
|
|
79
|
+
empty, because the submit check fell through to the registration field. Each
|
|
80
|
+
mode now checks only its own field.
|
|
81
|
+
|
|
3
82
|
## 0.10.0
|
|
4
83
|
|
|
5
84
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -178,6 +178,25 @@ async function completeLogin() {
|
|
|
178
178
|
|
|
179
179
|
To disable this auto-detection entirely, pass `autoDetectPreviousSignin={false}` to `AuthProvider`.
|
|
180
180
|
|
|
181
|
+
### Magic link destination
|
|
182
|
+
|
|
183
|
+
By default a magic link lands wherever the deployment is configured to send it. A deployment serving
|
|
184
|
+
more than one front end can override that per application with `magicLinkRedirectUri`:
|
|
185
|
+
|
|
186
|
+
```tsx
|
|
187
|
+
<AuthProvider apiHost={apiHost} magicLinkRedirectUri="https://app.example.com/auth/magic">
|
|
188
|
+
<AuthRoutes />
|
|
189
|
+
</AuthProvider>
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Every magic link the bundled screens send uses it, including the resend on the "check your email"
|
|
193
|
+
screen, so a resent link always lands where the first one did. The deployment validates the value
|
|
194
|
+
against its configured origins and refuses anything else, which comes back as an ordinary error
|
|
195
|
+
result.
|
|
196
|
+
|
|
197
|
+
Custom UIs get the same default through `useAuthClient()`, and can still override a single send with
|
|
198
|
+
`requestMagicLink(uri)`.
|
|
199
|
+
|
|
181
200
|
### Scoped roles
|
|
182
201
|
|
|
183
202
|
`hasRole(role)` remains an exact role check. Use `hasScopedRole(role)` for colon-separated scoped
|
|
@@ -625,11 +644,11 @@ switch (getPasskeyPolicyErrorCode(error)) {
|
|
|
625
644
|
`attachment_not_allowed` is refused before any ceremony runs, so the browser never prompts. The rest
|
|
626
645
|
are refused after a credential exists and can be inspected.
|
|
627
646
|
|
|
628
|
-
`syncedPasskeys` defaults to `
|
|
629
|
-
and Google Password Manager
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
from the client.
|
|
647
|
+
`syncedPasskeys` defaults to `allow` on the Seamless Auth API, so a default deployment enrols the
|
|
648
|
+
passkeys iCloud Keychain and Google Password Manager create. A deployment that issues its own
|
|
649
|
+
authenticators can set `authenticator_policy.syncedPasskeys` to `block` in the API's system config,
|
|
650
|
+
and every backup-eligible passkey is then refused at registration. Handle the code: the SDK cannot
|
|
651
|
+
tell from the client which way the API is configured.
|
|
633
652
|
|
|
634
653
|
Like `getOAuthErrorCode()`, this returns `undefined` for anything it does not recognize, including
|
|
635
654
|
codes added by a newer API, so an unexpected refusal keeps your generic messaging.
|
|
@@ -971,7 +990,6 @@ There is no provider prop or JavaScript API for this. Setting the variables is t
|
|
|
971
990
|
| `--seamless-border` | Input, button, and panel borders | `#4b5563`, `#d1d5db` |
|
|
972
991
|
| `--seamless-text` | Headings and body text | `white` |
|
|
973
992
|
| `--seamless-text-muted` | Labels, helper text, secondary copy | `#9ca3af`, `#d1d5db` |
|
|
974
|
-
| `--seamless-disabled` | Background of disabled submit buttons | `#9ca3af` |
|
|
975
993
|
| `--seamless-danger` | Error messages | `#f87171` |
|
|
976
994
|
| `--seamless-success` | Success messages and the verified check icon | `#34d399` |
|
|
977
995
|
| `--seamless-warning` | OTP countdown and resend timers | `#facc15` |
|
|
@@ -990,6 +1008,10 @@ There is no provider prop or JavaScript API for this. Setting the variables is t
|
|
|
990
1008
|
- Two decorative tints are deliberately not tokenised: the pulse ring behind the magic-link mail icon
|
|
991
1009
|
and the disc behind the success check. Both are translucent and sit directly under an icon, so an
|
|
992
1010
|
opaque override would hide the icon it is meant to frame.
|
|
1011
|
+
- Disabled buttons are not a separate colour. They are the enabled button at reduced opacity, so the
|
|
1012
|
+
label and its background always come from the same accent pair you set and the contrast between
|
|
1013
|
+
them cannot invert when the theme changes. `--seamless-disabled` used to set a standalone grey fill
|
|
1014
|
+
and no longer does anything; remove it from your overrides.
|
|
993
1015
|
- The package ships one palette and no `prefers-color-scheme` rules. If you want the auth UI to follow
|
|
994
1016
|
the system theme, wrap your own overrides in a media query.
|
|
995
1017
|
|
|
@@ -1049,8 +1071,8 @@ email sends to a signed-in user. Using `@seamless-auth/react` with an older adap
|
|
|
1049
1071
|
`GET` forms returns a 404 for those requests. See the changelog for the minimum adapter version.
|
|
1050
1072
|
|
|
1051
1073
|
`/webAuthn/register/finish` can refuse a verified credential on policy grounds with a `403` whose
|
|
1052
|
-
body is a stable code. `syncedPasskeys` defaults to `
|
|
1053
|
-
passkey, so
|
|
1074
|
+
body is a stable code. `syncedPasskeys` defaults to `allow`, but a deployment that sets `block`
|
|
1075
|
+
refuses every backup-eligible passkey, so handle the code rather than assuming the default. See
|
|
1054
1076
|
[Passkey policy refusals](#passkey-policy-refusals).
|
|
1055
1077
|
|
|
1056
1078
|
## Notes
|
package/dist/AuthProvider.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CurrentUserResult, FinishOAuthLoginInput, LoginStartResult, MessageResult, OAuthProvidersResult, OrganizationSwitchResult, PasskeyLoginData, StartOAuthLoginInput, StartOAuthLoginResult, StepUpPrfData, StepUpStatus } from './client/createSeamlessAuthClient';
|
|
1
|
+
import { CurrentUserResult, FinishOAuthLoginInput, FinishOAuthLoginResult, LoginStartResult, MessageResult, OAuthProvidersResult, OrganizationSwitchResult, PasskeyLoginData, 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';
|
|
@@ -13,6 +13,7 @@ export interface AuthContextType {
|
|
|
13
13
|
hasRole: (role: string) => boolean | undefined;
|
|
14
14
|
hasScopedRole: (role: string | string[]) => boolean | undefined;
|
|
15
15
|
apiHost: string;
|
|
16
|
+
magicLinkRedirectUri?: string;
|
|
16
17
|
markSignedIn: () => void;
|
|
17
18
|
hasSignedInBefore: boolean;
|
|
18
19
|
credentials: Credential[];
|
|
@@ -21,7 +22,7 @@ export interface AuthContextType {
|
|
|
21
22
|
switchOrganization: (organizationId: string) => Promise<SeamlessAuthResult<OrganizationSwitchResult>>;
|
|
22
23
|
listOAuthProviders: () => Promise<SeamlessAuthResult<OAuthProvidersResult>>;
|
|
23
24
|
startOAuthLogin: (input: StartOAuthLoginInput) => Promise<SeamlessAuthResult<StartOAuthLoginResult>>;
|
|
24
|
-
finishOAuthLogin: (input: FinishOAuthLoginInput) => Promise<SeamlessAuthResult<
|
|
25
|
+
finishOAuthLogin: (input: FinishOAuthLoginInput) => Promise<SeamlessAuthResult<FinishOAuthLoginResult>>;
|
|
25
26
|
stepUpStatus: StepUpStatus | null;
|
|
26
27
|
updateCredential: (credential: Credential) => Promise<SeamlessAuthResult<Credential>>;
|
|
27
28
|
deleteCredential: (credentialId: string) => Promise<SeamlessAuthResult<MessageResult>>;
|
|
@@ -42,6 +43,11 @@ interface AuthProviderProps {
|
|
|
42
43
|
children: ReactNode;
|
|
43
44
|
apiHost: string;
|
|
44
45
|
autoDetectPreviousSignin?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Where a magic link sent by the bundled screens should land. Both the first
|
|
48
|
+
* send and a resend read it from here, so the two cannot drift apart.
|
|
49
|
+
*/
|
|
50
|
+
magicLinkRedirectUri?: string;
|
|
45
51
|
}
|
|
46
52
|
export declare const AuthProvider: React.FC<AuthProviderProps>;
|
|
47
53
|
export {};
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import type { AddOrganizationMemberRequest, AuthenticatorAttachmentPolicy, CreateOrganizationRequest, CredentialUpdateResponse, LoginMethod as LoginMethodShape, LoginSuccessResponse, LogoutScope as LogoutScopeShape, MeResponse, MessageResponse, OAuthProvidersResponse, OrganizationEnvelopeResponse, OrganizationListResponse, OrganizationMembersResponse, OrganizationMembershipEnvelopeResponse, OrganizationSwitchResponse, PublicOAuthProvider, PublicSystemConfigResponse, RegistrationRequest, StartOAuthLoginResponse, StepUpMethod as StepUpMethodShape, StepUpStatus as StepUpStatusShape, TotpEnrollmentStartResponse, TotpStatus as TotpStatusShape, UpdateOrganizationMemberRequest, UpdateOrganizationRequest } from '@seamless-auth/types';
|
|
1
|
+
import type { AddOrganizationMemberRequest, AuthenticatorAttachmentPolicy, CreateOrganizationRequest, CredentialUpdateResponse, LoginMethod as LoginMethodShape, LoginSuccessResponse, LogoutScope as LogoutScopeShape, MeResponse, MessageResponse, OAuthLoginSuccessResponse, OAuthProvidersResponse, OrganizationEnvelopeResponse, OrganizationListResponse, OrganizationMembersResponse, OrganizationMembershipEnvelopeResponse, OrganizationSwitchResponse, PublicOAuthProvider, PublicSystemConfigResponse, RegistrationRequest, StartOAuthLoginResponse, StepUpMethod as StepUpMethodShape, StepUpStatus as StepUpStatusShape, TotpEnrollmentStartResponse, TotpStatus as TotpStatusShape, UpdateOrganizationMemberRequest, UpdateOrganizationRequest } from '@seamless-auth/types';
|
|
2
2
|
import { type SeamlessAuthResult } from './result';
|
|
3
3
|
import { PasskeyPrfInput, PasskeyPrfResult } from './webauthnPrf';
|
|
4
4
|
export interface SeamlessAuthClientOptions {
|
|
5
5
|
apiHost: string;
|
|
6
|
+
/**
|
|
7
|
+
* Default destination for `requestMagicLink()`. Every send from this client
|
|
8
|
+
* uses it unless a call passes its own, which keeps a resend on the same
|
|
9
|
+
* destination as the send it repeats. Omit it to keep the deployment's.
|
|
10
|
+
*/
|
|
11
|
+
magicLinkRedirectUri?: string;
|
|
6
12
|
}
|
|
7
13
|
export interface LoginInput {
|
|
8
14
|
identifier: string;
|
|
@@ -56,6 +62,17 @@ export interface FinishOAuthLoginInput {
|
|
|
56
62
|
code: string;
|
|
57
63
|
state: string;
|
|
58
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* The completed OAuth response minus its session material, for the same reason
|
|
67
|
+
* `LoginStartResult` drops it: sessions are carried by cookies.
|
|
68
|
+
*
|
|
69
|
+
* What this does surface is `returnTo`, the destination the caller asked for when it
|
|
70
|
+
* started the flow. It comes back out of the state the auth server signed, so it is
|
|
71
|
+
* the value that was validated against the configured origins at the start and not
|
|
72
|
+
* one introduced at the callback. Absent when the caller asked for nothing, so treat
|
|
73
|
+
* that as "use my own default" rather than as a failure.
|
|
74
|
+
*/
|
|
75
|
+
export type FinishOAuthLoginResult = Omit<OAuthLoginSuccessResponse, 'token' | 'refreshToken' | 'sub'>;
|
|
59
76
|
/** Response body for endpoints that only acknowledge the request. */
|
|
60
77
|
export type MessageResult = MessageResponse;
|
|
61
78
|
/** Payload returned by a completed passkey login. */
|
|
@@ -134,8 +151,8 @@ export interface SeamlessAuthClient {
|
|
|
134
151
|
/**
|
|
135
152
|
* @param redirectUri Where the emailed link should land. The deployment validates
|
|
136
153
|
* it against its configured origins and refuses anything else, so a tenant serving
|
|
137
|
-
* a web app and a mobile app can send each to its own destination. Omit it to
|
|
138
|
-
* the deployment's
|
|
154
|
+
* a web app and a mobile app can send each to its own destination. Omit it to fall
|
|
155
|
+
* back to the client's `magicLinkRedirectUri`, then to the deployment's own.
|
|
139
156
|
*/
|
|
140
157
|
requestMagicLink: (redirectUri?: string) => Promise<SeamlessAuthResult<MessageResult>>;
|
|
141
158
|
checkMagicLink: () => Promise<SeamlessAuthResult<MessageResult>>;
|
|
@@ -143,7 +160,7 @@ export interface SeamlessAuthClient {
|
|
|
143
160
|
listOAuthProviders: () => Promise<SeamlessAuthResult<OAuthProvidersResult>>;
|
|
144
161
|
getPublicSystemConfig: () => Promise<SeamlessAuthResult<PublicSystemConfigResult>>;
|
|
145
162
|
startOAuthLogin: (input: StartOAuthLoginInput) => Promise<SeamlessAuthResult<StartOAuthLoginResult>>;
|
|
146
|
-
finishOAuthLogin: (input: FinishOAuthLoginInput) => Promise<SeamlessAuthResult<
|
|
163
|
+
finishOAuthLogin: (input: FinishOAuthLoginInput) => Promise<SeamlessAuthResult<FinishOAuthLoginResult>>;
|
|
147
164
|
registerPasskey: (input: PasskeyMetadata | RegisterPasskeyOptions) => Promise<SeamlessAuthResult<PasskeyRegistrationData>>;
|
|
148
165
|
isPasskeyPrfSupported: () => Promise<boolean>;
|
|
149
166
|
getStepUpStatus: () => Promise<SeamlessAuthResult<StepUpStatus>>;
|
package/dist/client/errors.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export declare function getOAuthErrorCode(error: unknown): OAuthErrorCode | unde
|
|
|
37
37
|
* ceremony runs. The rest come from register/finish with a `403`, once the
|
|
38
38
|
* credential exists and can be inspected.
|
|
39
39
|
*/
|
|
40
|
-
export type PasskeyPolicyErrorCode =
|
|
40
|
+
export type PasskeyPolicyErrorCode = Exclude<WebAuthnErrorCodeShape, 'prf_output_not_allowed'>;
|
|
41
41
|
/**
|
|
42
42
|
* Read the passkey policy refusal off a registration error, from either stage of
|
|
43
43
|
* the ceremony. Returns `undefined` for anything unrecognized, including codes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AuthContextType, AuthProvider, useAuth } from './AuthProvider';
|
|
2
2
|
import { AuthRoutes } from './AuthRoutes';
|
|
3
|
-
import { createSeamlessAuthClient, CredentialUpdateResult, CreateOrganizationInput, CurrentUserResult, FinishOAuthLoginInput, 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';
|
|
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
4
|
import { getOAuthErrorCode, getPasskeyPolicyErrorCode, getWebAuthnErrorDetail, 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';
|
|
@@ -10,4 +10,4 @@ import { usePasskeySupport } from './hooks/usePasskeySupport';
|
|
|
10
10
|
import { hasScopedRole, roleGrantsAccess } from './scopedRoles';
|
|
11
11
|
import { Credential, Organization, OrganizationMembership, User } from './types';
|
|
12
12
|
export { AuthProvider, AuthRoutes, createSeamlessAuthClient, encodePrfSalt, extractPasskeyPrfResult, getOAuthErrorCode, getPasskeyPolicyErrorCode, getWebAuthnErrorDetail, hasNonPasskeyLoginMethod, hasScopedRole, isPasskeyPrfSupported, roleGrantsAccess, SeamlessAuthError, useAuth, useAuthClient, useLoginMethods, usePasskeySupport, };
|
|
13
|
-
export type { CredentialUpdateResult, AuthContextType, Credential, CreateOrganizationInput, CurrentUserResult, FinishOAuthLoginInput, 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, };
|
|
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 o,bufferToBase64URLString as n,base64URLStringToBuffer as a,startAuthentication as i,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 f,useCallback as p}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,o){super(e),this.name="SeamlessAuthError",this.status=t,this.body=r,this.cause=o}}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){if(!(e instanceof S)||("object"!=typeof(t=e.cause)||null===t||"string"!=typeof t.name))return;var t;const{name:r,code:o,message:n}=e.cause;return{name:r,code:"string"==typeof o?o:void 0,message:"string"==typeof n?n:""}}async function E(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 z(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 E(r,t)}}function U(e){return{data:e,error:null}}function L(e,t=0,r,o){return{data:null,error:new S(e,t,r,o)}}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:n(q(e))}function R(e){return"string"==typeof e?a(e):e}function j(e){return{...e.credentialId?{credentialId:e.credentialId}:{},prf:{salt:B(e.salt),...e.secondSalt?{secondSalt:B(e.secondSalt)}:{}}}}async function J(){return!!o()&&("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:R(r.first)}:{},...r.second?{second:R(r.second)}:{}}}}}:e}function W(e){const t=e.clientExtensionResults,r=t?.prf?.results?.first;if(!r)return null;const o=(a=r)instanceof ArrayBuffer?new Uint8Array(a):new Uint8Array(a.buffer,a.byteOffset,a.byteLength);var a;return{credentialId:e.id,output:o,outputBase64url:n(q(o))}}function D(e){const t=e.clientExtensionResults;return t?.prf?.results?{...e,clientExtensionResults:{...e.clientExtensionResults,prf:{...t.prf,results:void 0}}}:e}function $(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 K(e,t,r){const o=L(t,0,void 0,r),n=M(o.error);return console.error(e,n?.name??"Unknown error."),o}const H=e=>{const t=(e=>{const{authHost:t}=e;return async function(e,r){const o=`${t?.replace(/\/+$/,"")??""}/auth${e.startsWith("/")?e:`/${e}`}`,n=null!=r?.body,a={...r,credentials:"include",headers:{...n?{"Content-Type":"application/json"}:{},...r?.headers}};return fetch(o,a)}})({authHost:e.apiHost});return{getCurrentUser:()=>z(t("users/me",{method:"GET"}),"Failed to load the current user."),login:e=>z(t("/login",{method:"POST",body:JSON.stringify(e)}),"Failed to start sign-in."),loginWithPasskey:async e=>{const r=await z(t("/webAuthn/login/start",{...V(e?.prf)}),"Failed to start passkey login.");if(r.error)return r;let o,n;try{const e=await i({optionsJSON:G(r.data)});o=W(e),n=D(e)}catch(e){return K("Passkey login error.","Passkey login failed.",e)}const a=await z(t("/webAuthn/login/finish",{method:"POST",body:JSON.stringify({assertionResponse:n})}),"Failed to verify passkey.");return a.error?a:"Success"!==a.data?.message?L(a.data?.message??"Passkey login failed."):U(o?{prf:o}:{})},logout:(e={})=>z(t("all_sessions"===e.scope?"/logout/all":"/logout",{method:"DELETE"}),"Failed to sign out."),logoutAllSessions:()=>z(t("/logout/all",{method:"DELETE"}),"Failed to sign out of all sessions."),deleteUser:()=>z(t("/users/delete",{method:"DELETE"}),"Failed to delete the account."),register:e=>z(t("/registration/register",{method:"POST",body:JSON.stringify({email:e.email,...e.phone?{phone:e.phone}:{}})}),"Failed to register."),requestPhoneOtp:()=>z(t("/otp/generate-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyPhoneOtp:e=>z(t("/otp/verify-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestLoginPhoneOtp:()=>z(t("/otp/generate-login-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyLoginPhoneOtp:e=>z(t("/otp/verify-login-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestEmailOtp:()=>z(t("/otp/generate-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyEmailOtp:e=>z(t("/otp/verify-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestLoginEmailOtp:()=>z(t("/otp/generate-login-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyLoginEmailOtp:e=>z(t("/otp/verify-login-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestMagicLink:e=>z(t("/magic-link",{method:"POST",body:JSON.stringify(e?{redirectUri:e}:{})}),"Failed to send the magic link."),checkMagicLink:()=>z(t("/magic-link/check",{method:"GET"}),"Failed to check the magic link."),verifyMagicLink:e=>z(t(`/magic-link/verify/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to verify the magic link."),listOAuthProviders:()=>z(t("/oauth/providers",{method:"GET"}),"Failed to list OAuth providers."),getPublicSystemConfig:()=>z(t("/system-config/public",{method:"GET"}),"Failed to read the public system configuration."),startOAuthLogin:e=>z(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=>z(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),o=await z(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(o.error)return o;let n;try{n=await s({optionsJSON:o.data})}catch(e){return e instanceof l?L(e.name,0,void 0,e):K("Passkey registration error.","Passkey registration failed.",e)}const a=function(e){const t=e.clientExtensionResults;return!0===t?.prf?.enabled}(n),i=await z(t("/webAuthn/register/finish",{method:"POST",body:JSON.stringify({attestationResponse:n,metadata:{...r.metadata,prfCapable:a}})}),"Verification failed.");return i.error?i:U({credentialId:n.id,prfCapable:a})},isPasskeyPrfSupported:J,getStepUpStatus:()=>z(t("/step-up/status",{method:"GET"}),"Failed to load step-up status."),verifyStepUpWithPasskey:async()=>{const e=await z(t("/step-up/webauthn/start",{method:"POST"}),"Failed to start step-up authentication.");if(e.error)return e;let r;try{r=D(await i({optionsJSON:G(e.data)}))}catch(e){return K("Step-up authentication error.","Step-up authentication failed.",e)}const o=await z(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:r})}),"Failed to verify step-up authentication.");return o.error?o:$(o.data??{},"webauthn")},verifyStepUpWithPasskeyPrf:async e=>{const r=await z(t("/step-up/webauthn/start",{...V(e)}),"Failed to start step-up authentication.");if(r.error)return r;let o,n;try{const e=await i({optionsJSON:G(r.data)});o=W(e),n=D(e)}catch(e){return K("Step-up authentication error.","Step-up authentication failed.",e)}if(!o)return L("Passkey did not return PRF output.");const a=await z(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:n})}),"Failed to verify step-up authentication.");if(a.error)return a;const s=$(a.data??{},"webauthn");return s.error?s:U({...s.data,credentialId:o.credentialId,prf:o})},getTotpStatus:()=>z(t("/totp/status",{method:"GET"}),"Failed to load authenticator status."),startTotpEnrollment:()=>z(t("/totp/enroll/start",{method:"POST"}),"Failed to start authenticator enrollment."),verifyTotpEnrollment:e=>z(t("/totp/enroll/verify",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify the authenticator code."),disableTotp:e=>z(t("/totp/disable",{method:"POST",body:JSON.stringify({code:e})}),"Failed to disable the authenticator."),verifyStepUpWithTotp:async e=>{const r=await z(t("/totp/verify-mfa",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify step-up authentication.");return r.error?r:$(r.data??{},"totp")},updateCredential:e=>z(t("users/credentials",{method:"POST",body:JSON.stringify(e)}),"Failed to update credential."),deleteCredential:e=>z(t("users/credentials",{method:"DELETE",body:JSON.stringify({id:e})}),"Failed to delete credential."),listOrganizations:()=>z(t("/organizations",{method:"GET"}),"Failed to list organizations."),createOrganization:e=>z(t("/organizations",{method:"POST",body:JSON.stringify(e)}),"Failed to create organization."),getOrganization:e=>z(t(`/organizations/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to load organization."),updateOrganization:(e,r)=>z(t(`/organizations/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(r)}),"Failed to update organization."),switchOrganization:e=>z(t(`/organizations/${encodeURIComponent(e)}/switch`,{method:"POST"}),"Failed to switch organization."),listOrganizationMembers:e=>z(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"GET"}),"Failed to list organization members."),addOrganizationMember:(e,r)=>z(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"POST",body:JSON.stringify(r)}),"Failed to add organization member."),updateOrganizationMember:(e,r,o)=>z(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(r)}`,{method:"PATCH",body:JSON.stringify(o)}),"Failed to update organization member."),removeOrganizationMember:(e,r)=>z(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(r)}`,{method:"DELETE"}),"Failed to remove organization member.")}};function Y(e,t){const r=e.trim(),o=t.trim();if(!r||!o)return!1;if(r===o)return!0;if(r.endsWith(":*")){const e=r.slice(0,-2);return o===e||o.startsWith(`${e}:`)}if(!o.includes(":"))return!1;if(!r.includes(":"))return o.startsWith(`${r}:`);const n=r.split(":"),a=o.split(":"),i=n[n.length-1],s=a[a.length-1],l=n.slice(0,-1),c=a.slice(0,-1);return"write"===i&&"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},oe=({children:t,apiHost:r,autoDetectPreviousSignin:o=!0})=>{const n=d(()=>function(e){const{apiHost:t,detectPreviousSignIn:r=!0}=e,o=H({apiHost:t}),n=e.storage??Q(),a=new Set;let i=!1,s=0,l={...ee,loading:!0,hasSignedInBefore:r&&"true"===n.get(X)};function c(e){const t={...l,...e};Object.keys(e).some(e=>l[e]!==t[e])&&(l=t,a.forEach(e=>e()))}function d(){n.set(X,"true"),r&&c({hasSignedInBefore:!0})}function u(){c(ee)}async function m(){const e=++s;c({loading:!0});const t=await o.getCurrentUser();return i||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=>(a.add(e),()=>{a.delete(e)}),actions:{login:(e,t)=>o.login({identifier:e,passkeyAvailable:t}),handlePasskeyLogin:()=>_(()=>o.loginWithPasskey()),refreshSession:m,logout:async function(){try{return await o.logout()}finally{u()}},logoutAllSessions:async function(){try{return await o.logoutAllSessions()}finally{u()}},deleteUser:async()=>{const e=await o.deleteUser();return e.error||u(),e},updateCredential:async e=>{const{data:t,error:r}=await o.updateCredential({friendlyName:e.friendlyName??null,id:e.id});if(r)return{data:null,error:r};const n=t.credential;return c({credentials:l.credentials.map(e=>e.id===n.id?{...e,...n}:e)}),{data:n,error:null}},deleteCredential:async e=>{const t=await o.deleteCredential(e);return t.error||c({credentials:l.credentials.filter(t=>t.id!==e)}),t},switchOrganization:e=>_(()=>o.switchOrganization(e)),listOAuthProviders:()=>o.listOAuthProviders(),startOAuthLogin:e=>o.startOAuthLogin(e),finishOAuthLogin:e=>_(()=>o.finishOAuthLogin(e)),refreshStepUpStatus:async()=>{const e=await o.getStepUpStatus();return c({stepUpStatus:e.error?null:e.data}),e},verifyStepUpWithPasskey:async()=>{const e=await o.verifyStepUpWithPasskey();return e.error||c({stepUpStatus:e.data}),e},verifyStepUpWithPasskeyPrf:async e=>{const t=await o.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 o.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:()=>{i=!0,a.clear()}}}({apiHost:r,detectPreviousSignIn:o}),[r,o]),a=u(n.subscribe,n.getState,n.getState);m(()=>{n.actions.refreshSession()},[n]);const i=d(()=>({...a,...n.actions,apiHost:r}),[a,n,r]);return e(te.Provider,{value:i,children:t})},ne=()=>{const{apiHost:e}=re();return d(()=>H({apiHost:e}),[e])},ae=["passkey","magic_link"],ie=()=>{const e=ne(),[t,r]=g(null),[o,n]=g(!0);return m(()=>{let t=!0;return(async()=>{try{const{data:o,error:n}=await e.getPublicSystemConfig();t&&!n&&o?.loginMethods?.length&&r(o.loginMethods)}catch{}finally{t&&n(!1)}})(),()=>{t=!1}},[e]),{loginMethods:t,loading:o}},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[o,n]=r;return!(!/^[A-Za-z0-9._%+-]+$/.test(o)||o.startsWith(".")||o.endsWith(".")||o.includes(".."))&&!(!/^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/.test(n)||n.startsWith("-")||n.endsWith("-")||n.startsWith(".")||n.endsWith(".")||n.includes(".."))},ce=e=>{const t=P(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,o]=g(!0);return m(()=>{let e=!0;return(async()=>{try{const r=await de();e&&t(r)}catch{e&&t(!1)}finally{e&&o(!1)}})(),()=>{e=!1}},[]),{passkeySupported:e,loading:r}},me="/login",_e="/passkey-login",ge="/verify-phone-otp",fe="/verify-email-otp",pe="/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 o=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===r&&o.firstChild?o.insertBefore(n,o.firstChild):o.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}var ke="login-module__container___YggDx",we="login-module__card___Ub-Py",xe="login-module__heading___neEqb",Pe="login-module__inputGroup___P6qgS",Se="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__toggle___1JiG1",Ae="login-module__fallbackCard___HdIk-",Me="login-module__fallbackHeader___-il2v",Ee="login-module__fallbackDescription___ea5EB",Fe="login-module__fallbackActions___AD3ni",ze="login-module__fallbackActionButton___lFgWf",Ue="login-module__actionTitle___ycrMp",Le="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;width:100%}.login-module__button___0kFBs:hover{background-color:var(--seamless-accent-hover,#1d4ed8)}.login-module__button___0kFBs:disabled{background-color:var(--seamless-disabled,#9ca3af);cursor:not-allowed}.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:o,onEmailOtp:n,onPhoneOtp:a,onPasskeyRetry:i,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(n)&&le(r),u=l.has("phone_otp")&&ce(r),m=l.has("passkey")&&Boolean(i);return c||d||u||m?t("div",{className:Ae,children:[e("div",{className:Me,children:"Choose a sign-in method"}),e("p",{className:Ee,children:"Choose another secure sign-in method."}),t("div",{className:Fe,children:[c&&t("button",{type:"button",className:ze,onClick:o,children:[e("span",{className:Ue,children:"Email Magic Link"}),e("span",{className:Le,children:"Send a secure sign-in link to your email"})]}),d&&t("button",{type:"button",className:ze,onClick:n,children:[e("span",{className:Ue,children:"Email Code"}),e("span",{className:Le,children:"Receive a one-time code by email"})]}),u&&t("button",{type:"button",className:ze,onClick:a,children:[e("span",{className:Ue,children:"Text Message Code"}),e("span",{className:Le,children:"Receive a one-time code via SMS"})]})]}),m&&e("button",{type:"button",className:qe,onClick:i,children:"Try passkey anyway"})]}):null},Re="seamless:oauth:provider",je=()=>{const{listOAuthProviders:r,startOAuthLogin:o}=re(),n=h("/oauth/callback"),[a,i]=g([]),[s,l]=g("");if(m(()=>{let e=!0;return r().then(({data:t})=>{e&&i(t?.providers??[])}),()=>{e=!1}},[r]),0===a.length)return null;return t("div",{className:Fe,children:[a.map(r=>e("button",{type:"button",className:ze,onClick:()=>(async e=>{l(""),sessionStorage.setItem(Re,e);const{data:t,error:r}=await o({providerId:e,redirectUri:new URL(n,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:Ue,children:["Continue with ",r.name]})},r.id)),s&&e("p",{className:Te,children:s})]})},Je=()=>{const o=y(),{hasSignedInBefore:n,login:a,handlePasskeyLogin:i}=re(),s=ne(),{passkeySupported:l}=ue(),{loginMethods:c}=ie(),[d,u]=g(""),[_,f]=g(""),[p,h]=g("register"),[b,v]=g(""),[k,w]=g(""),[x,P]=g(""),[S,O]=g(!1),[N,T]=g(null);m(()=>{n&&h("login")},[n]);return e("div",{className:ke,children:t("div",{className:we,children:[e("h2",{className:xe,children:"login"===p?"Sign In":"Create Account"}),t(r,{children:[t("form",{onSubmit:async e=>{e.preventDefault(),v(""),O(!1);try{if("login"===p){const{data:e,error:t}=await a(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 i();return e?(O(!0),void v("Passkey sign-in could not be completed. Choose another sign-in method.")):void o("/")}return void O(!0)}"register"===p&&await(async()=>{v("");const{data:e,error:t}=await s.register({email:_});t?v("Failed to register. Please try again."):"Success"===e.message?o(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"===p&&t("div",{className:Pe,children:[e("label",{htmlFor:"identifier",className:Se,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);P(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"}),S&&e(Be,{identifier:d,onMagicLink:async()=>{const{error:e}=await s.requestMagicLink();e?v("Failed to send magic link."):o(be,{state:{identifier:d}})},onEmailOtp:async()=>{const{error:e}=await s.requestLoginEmailOtp();e?v("Failed to send email code."):o(fe,{state:{flow:"login"}})},onPhoneOtp:async()=>{const{error:e}=await s.requestLoginPhoneOtp();e?v("Failed to send OTP."):o(ge,{state:{flow:"login"}})},onPasskeyRetry:l?i:void 0,loginMethods:N}),x&&e("p",{className:Te,children:x})]}),"register"===p&&t("div",{className:Pe,children:[e("label",{htmlFor:"email",className:Se,children:"Email Address"}),e("input",{id:"email",type:"email",value:_,onChange:e=>{const t=e.target.value;f(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:!("login"===p&&d?le(d)||ce(d):le(_)),children:"login"===p?"Login":"Register"}),b&&e("p",{className:Te,children:b}),e("button",{type:"button",onClick:()=>h("login"===p?"register":"login"),className:Ie,children:"login"===p?"Don't have an account? Create one":"Already have an account? Sign in"})]}),e(je,{})]})]})})};var Ge={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 We=()=>{const r=y(),{handlePasskeyLogin:o}=re(),[n,a]=g("");return e("div",{className:Ge.container,children:t("div",{className:Ge.card,children:[e("h2",{className:Ge.title,children:"Login with Passkey"}),e("button",{onClick:async()=>{a("");const{error:e}=await o();e?a("Passkey sign-in could not be completed. Try another sign-in method."):r("/")},className:Ge.button,children:"Use Passkey"}),n&&e("p",{className:Ge.error,children:n})]})})};var De="registerPasskey-module__container___jqEh8",$e="registerPasskey-module__card___MJAyC",Ve="registerPasskey-module__loading___Q4i1x",Ke="registerPasskey-module__spinner___V1nhd",He="registerPasskey-module__supported___ihTih",Ye="registerPasskey-module__title___vn2Qu",Ze="registerPasskey-module__description___AWmO-",Qe="registerPasskey-module__button___D3b4B",Xe="registerPasskey-module__message___RiOw-",et="registerPasskey-module__success___HP5aX",tt="registerPasskey-module__error___hGiqE",rt="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 nt={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(),o=ne(),{passkeySupported:n,loading:a}=ue(),{loginMethods:i,loading:s}=ie(),l=y(),[c,d]=g("idle"),[u,m]=g(""),_=se(i),f=async()=>{await r(),l("/")},p=async e=>{const{platform:t,browser:n,deviceInfo:a}=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}`}}(),i={friendlyName:a,platform:t,browser:n,deviceInfo:a};d("loading");try{const{error:t}=await o.registerPasskey({metadata:i,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?nt[t]:void 0}(e)??"Error registering passkey.")}};return e("div",{className:De,children:e("div",{className:$e,children:t("div",a||s?{className:Ve,children:[e("div",{className:Ke}),e("span",{children:"Checking for Passkey Support..."})]}:n?{className:He,children:[e("h2",{className:Ye,children:"Secure Your Account with a Passkey"}),e("p",{className:Ze,children:"Your device supports passkeys! Register one to skip passwords forever."}),e("button",{onClick:()=>p(),disabled:"loading"===c,className:Qe,children:"loading"===c?"Registering...":"Register Passkey"}),e("button",{type:"button",onClick:()=>p("cross-platform"),disabled:"loading"===c,className:ot,children:"Use a security key instead"}),u&&e("p",{className:`${Xe} ${"success"===c?et:tt}`,children:u}),_&&e("button",{type:"button",onClick:f,disabled:"loading"===c,className:rt,children:"Skip for now"})]}:{className:He,children:[e("h2",{className:Ye,children:"Passkeys are not available here"}),e("p",{className:Ze,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:f,className:Qe,children:"Continue"})]})})})};var it="verifyOTP-module__container___wgoDE",st="verifyOTP-module__card___3cs2p",lt="verifyOTP-module__title___fZ-1d",ct="verifyOTP-module__subtitle___dGSu3",dt="verifyOTP-module__error___GEtlG",ut="verifyOTP-module__success___46TjG",mt="verifyOTP-module__form___jiGG-",_t="verifyOTP-module__label___Zq5Mi",gt="verifyOTP-module__timer___smq-a",ft="verifyOTP-module__resend___PlmkG",pt="verifyOTP-module__button___8pIuO",ht="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 yt="otpInput-module__otpContainer___MUjby",bt="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 vt=({length:t=6,value:r,inputMode:o="numeric",onChange:n,name:a="otp"})=>{const i=f([]),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"===o?/^\d$/.test(r):/^[a-zA-Z]$/.test(r))){const r=[...s];r[e]=t;const o=r.join("");n(o),t&&i.current[e+1]&&i.current[e+1]?.focus()}},c=(e,r)=>{let a=r;a="numeric"===o?r.replace(/\D/g,""):r.replace(/[^a-zA-Z]/g,"");const l=a.slice(0,t).split(""),c=[...s];l.forEach((r,o)=>{e+o<t&&(c[e+o]=r)}),n(c.join("")),i.current[Math.min(e+l.length,t-1)]?.focus()};return e("div",{className:yt,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=>i.current[c]=e,type:"text",inputMode:"numeric"===o?"numeric":"text",autoComplete:"one-time-code",name:`${a}-${c}`,maxLength:1,value:r,className:bt,onChange:e=>l(c,e.target.value),onKeyDown:e=>((e,r)=>{if("Backspace"===r.key){r.preventDefault();const t=[...s];s[e]?(t[e]="",n(t.join(""))):e>0&&(t[e-1]="",n(t.join("")),i.current[e-1]?.focus())}"ArrowLeft"===r.key&&e>0&&i.current[e-1]?.focus(),"ArrowRight"===r.key&&e<t-1&&i.current[e+1]?.focus()})(c,e),"aria-label":`Digit ${c+1}`},c))})},kt=()=>{const r=y(),o=b(),{refreshSession:n}=re(),a="login"===o.state?.flow,[i,s]=g(""),[l,c]=g(null),[d,u]=g(""),[_,f]=g(!1),[p,h]=g(""),[v,k]=g(300),w=ne(),x=async()=>{if(f(!0),!l){const{error:e}=a?await w.verifyLoginPhoneOtp(i):await w.verifyPhoneOtp(i);if(e)u("Verification failed.");else{if(a)return await n(),void r("/");c(!0)}}f(!1)},P=async()=>{h(""),await(async()=>{u("");const{error:e}=a?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&&!a&&(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,a,r,w]),e("div",{className:it,children:t("div",{className:st,children:[e("h2",{className:lt,children:"Verify Your Phone Number"}),e("p",{className:ct,children:"Enter the code sent to your phone number."}),d&&e("p",{className:dt,children:d}),p&&e("p",{className:ut,children:p}),t("form",{onSubmit:async e=>{if(e.preventDefault(),u(""),6===i.length){f(!0);try{await x()}catch{u("Unexpected error occurred.")}finally{f(!1)}}else u("Please enter a valid code.")},className:mt,children:[t("div",{children:[t("label",{htmlFor:"phoneCode",className:_t,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:gt,children:["Code expires in: ",(S=v,`${Math.floor(S/60).toString().padStart(2,"0")}:${(S%60).toString().padStart(2,"0")}`)]})]}),e(vt,{length:6,value:i,onChange:s}),e("button",{type:"button",onClick:()=>P(),className:ft,children:"Resend code to phone"})]}),e("button",{type:"submit",className:pt,children:_?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>r("/login"),className:ht,children:"Back to login"})]})]})});var S,O},wt=()=>{const r=y(),o=b(),{refreshSession:n}=re(),a=ne(),{passkeySupported:i}=ue(),s="login"===o.state?.flow,[l,c]=g(!1),[d,u]=g(""),[_,f]=g(300),[p,h]=g(""),[v,k]=g("");return m(()=>{const e=setInterval(()=>{f(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),e("div",{className:it,children:t("div",{className:st,children:[e("h2",{className:lt,children:"Verify Your Email"}),e("p",{className:ct,children:"We sent you a verification email. Enter the code below."}),p&&e("p",{className:dt,children:p}),v&&e("p",{className:ut,children:v}),t("form",{onSubmit:async e=>{if(e.preventDefault(),h(""),6===d.length){c(!0);try{const{error:e}=s?await a.verifyLoginEmailOtp(d):await a.verifyEmailOtp(d);if(e)return void h("Verification failed.");if(s)return await n(),void r("/");i?r(ye):(await n(),r("/"))}catch{console.error("Email OTP verification failed."),h("Verification failed.")}finally{c(!1)}}else h("Please enter a valid code.")},className:mt,children:[t("div",{children:[t("label",{htmlFor:"emailCode",className:_t,children:["Email Verification Code",t("span",{className:gt,children:[" ","— Code expires in ",(w=_,`${Math.floor(w/60).toString().padStart(2,"0")}:${(w%60).toString().padStart(2,"0")}`)]})]}),e(vt,{length:6,value:d,onChange:u,inputMode:"text"}),e("button",{type:"button",onClick:async()=>{h(""),k("");const{error:e}=s?await a.requestLoginEmailOtp():await a.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:pt,disabled:l,children:l?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>r("/login"),className:ht,children:"Back to login"})]})]})});var w};var xt={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(),o=y(),n=r.get("token"),[a,i]=g(""),[s,l]=g(""),c=ne(),{refreshSession:d}=re();return m(()=>{let e=!0,t=null,r=null;return(async()=>{if(!n)return e&&i("Missing token for verification."),void console.error("No magic-link token found.");const{error:a}=await c.verifyMagicLink(n);if(a)return console.error("Failed to verify token"),void(e&&i("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&&o("/")},900))})(),()=>{e=!1,t?.close(),r&&clearTimeout(r)}},[n,c,o,d]),e("div",{className:xt.container,children:t("div",{className:xt.card,children:[e("h1",{className:xt.title,children:"Verifying your login"}),t("div",{className:xt.verificationContent,children:[!s&&!a&&e("div",{className:xt.spinner}),s&&e("div",{className:xt.successIcon,children:e("svg",{viewBox:"0 0 24 24",className:xt.checkIcon,fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M5 13l4 4L19 7"})})}),!s&&!a&&e("p",{className:xt.helperText,children:"Please wait while we securely verify your sign-in link."}),s&&e("p",{className:xt.successText,children:"Login verified. Redirecting…"}),a&&e("p",{className:xt.error,children:a})]})]})})},St={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."},Ot=()=>{const{finishOAuthLogin:o}=re(),n=y(),[a]=v(),[i,s]=g(""),l=f(!1);return m(()=>{if(l.current)return;l.current=!0;const e=a.get("code"),t=a.get("state"),r=sessionStorage.getItem(Re);e&&t&&r?o({providerId:r,code:e,state:t}).then(({error:e})=>{if(e){const t=T(e);return void s(t?St[t]:"We could not complete sign-in. Please try again.")}sessionStorage.removeItem(Re),n("/")}):s("This sign-in link is missing required information.")},[o,n,a]),t("div",{className:xt.container,children:[e("h2",{className:xt.title,children:i?"Sign-in failed":"Completing sign-in..."}),i&&t(r,{children:[e("p",{children:i}),e("button",{type:"button",onClick:()=>n("/login"),children:"Back to login"})]})]})};var Nt="magiclink-module__container___45zcA",Tt="magiclink-module__card___Au9oN",Ct="magiclink-module__iconWrapper___k5ndr",It="magiclink-module__mailIcon___Pwb7q",At="magiclink-module__iconRing___bdLvf",Mt="magiclink-module__heading___b9cre",Et="magiclink-module__message___kiVFj",Ft="magiclink-module__identifier___JtcFM",zt="magiclink-module__helperText___7Mlfh",Ut="magiclink-module__actions___64I-3",Lt="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 Rt=()=>{const{refreshSession:r}=re(),o=y(),n=b(),a=ne(),i=n.state?.identifier,[s,l]=g(30);m(()=>{const e=setInterval(()=>{l(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]);const c=p(async()=>{const{data:e,error:t}=await a.checkMagicLink();return!t&&"Success"===e?.message},[a]);return m(()=>{const e=new BroadcastChannel("seamless-auth");return e.onmessage=async e=>{"MAGIC_LINK_AUTH_SUCCESS"===e.data?.type&&await c()&&(await r(),o("/"))},()=>{e.close()}},[c,o,r]),m(()=>{const e=setInterval(async()=>{try{await c()&&(await r(),o("/"))}catch{}},5e3);return()=>clearInterval(e)},[c,r,o]),e("div",{className:Nt,children:t("div",{className:Tt,children:[t("div",{className:Ct,children:[e("div",{className:At}),t("svg",{className:It,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:Mt,children:"Check your email"}),e("p",{className:Et,children:"If an account exists for this address, we sent a secure sign-in link."}),i&&e("div",{className:Ft,children:i}),e("p",{className:zt,children:"Open the email and click the link to finish signing in."}),e("p",{className:zt,children:"Didn’t receive anything? Check your spam folder or try creating a new account."}),t("div",{className:Ut,children:[e("button",{className:Lt,disabled:s>0,onClick:async()=>{s>0||(await a.requestMagicLink(),l(30))},children:"Resend link"}),s>0&&t("div",{className:qt,children:["Available in ",s,"s"]}),e("button",{className:Bt,onClick:()=>o("/login"),children:"Change email or phone"})]})]})})},jt=()=>t(k,{children:[e(w,{path:me,element:e(Je,{})}),e(w,{path:_e,element:e(We,{})}),e(w,{path:ge,element:e(kt,{})}),e(w,{path:fe,element:e(wt,{})}),e(w,{path:pe,element:e(Pt,{})}),e(w,{path:he,element:e(Ot,{})}),e(w,{path:ye,element:e(at,{})}),e(w,{path:be,element:e(Rt,{})}),e(w,{path:"*",element:e(x,{to:me,replace:!0})})]});export{oe as AuthProvider,jt as AuthRoutes,S as SeamlessAuthError,H as createSeamlessAuthClient,B 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,ne as useAuthClient,ie 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 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};
|
|
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","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","_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","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","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, LoginStartResult, MessageResult, OAuthProvidersResult, OrganizationSwitchResult, PasskeyLoginData, StartOAuthLoginInput, StartOAuthLoginResult, StepUpPrfData, StepUpStatus } from '../client/createSeamlessAuthClient';
|
|
1
|
+
import { CurrentUserResult, FinishOAuthLoginInput, FinishOAuthLoginResult, LoginStartResult, MessageResult, OAuthProvidersResult, OrganizationSwitchResult, PasskeyLoginData, 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';
|
|
@@ -26,7 +26,7 @@ export interface AuthSessionActions {
|
|
|
26
26
|
switchOrganization: (organizationId: string) => Promise<SeamlessAuthResult<OrganizationSwitchResult>>;
|
|
27
27
|
listOAuthProviders: () => Promise<SeamlessAuthResult<OAuthProvidersResult>>;
|
|
28
28
|
startOAuthLogin: (input: StartOAuthLoginInput) => Promise<SeamlessAuthResult<StartOAuthLoginResult>>;
|
|
29
|
-
finishOAuthLogin: (input: FinishOAuthLoginInput) => Promise<SeamlessAuthResult<
|
|
29
|
+
finishOAuthLogin: (input: FinishOAuthLoginInput) => Promise<SeamlessAuthResult<FinishOAuthLoginResult>>;
|
|
30
30
|
refreshStepUpStatus: () => Promise<SeamlessAuthResult<StepUpStatus>>;
|
|
31
31
|
verifyStepUpWithPasskey: () => Promise<SeamlessAuthResult<StepUpStatus>>;
|
|
32
32
|
verifyStepUpWithPasskeyPrf: (input: PasskeyPrfInput) => Promise<SeamlessAuthResult<StepUpPrfData>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seamless-auth/react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "A drop-in authentication solution for modern React applications.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"typescript-eslint": "^8.46.1"
|
|
103
103
|
},
|
|
104
104
|
"dependencies": {
|
|
105
|
-
"@seamless-auth/types": "^0.
|
|
105
|
+
"@seamless-auth/types": "^0.20.0",
|
|
106
106
|
"@simplewebauthn/browser": "^13.1.0",
|
|
107
107
|
"eslint-plugin-license-header": "^0.9.0",
|
|
108
108
|
"libphonenumber-js": "^1.12.7",
|