@seamless-auth/react 0.8.0 → 0.9.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 +12 -0
- package/README.md +63 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @seamless-auth/react
|
|
2
2
|
|
|
3
|
+
## 0.9.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 4ea4fd0: feat(styles): make the built-in auth UI themeable with CSS custom properties
|
|
8
|
+
|
|
9
|
+
Every colour in the bundled screens now reads from a `--seamless-*` custom property with the previous
|
|
10
|
+
literal as its fallback, so consumers can match the auth UI to their brand by setting variables on
|
|
11
|
+
`:root` or on any ancestor of `<AuthRoutes />`.
|
|
12
|
+
|
|
13
|
+
This is opt-in and non-breaking. Applications that set nothing render exactly as before.
|
|
14
|
+
|
|
3
15
|
## 0.8.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -849,6 +849,69 @@ Two paths are unchanged because they are owned by contracts outside this package
|
|
|
849
849
|
- `/oauth/callback` is registered with OAuth providers as an allowed redirect URI, so renaming it
|
|
850
850
|
would break configured integrations.
|
|
851
851
|
|
|
852
|
+
## Theming The Built-In UI
|
|
853
|
+
|
|
854
|
+
Every colour in the built-in screens is a CSS custom property with a fallback, so the default look is
|
|
855
|
+
unchanged if you set nothing. To match your brand, set the tokens you care about on `:root`, or on any
|
|
856
|
+
element that wraps `<AuthRoutes />`.
|
|
857
|
+
|
|
858
|
+
```css
|
|
859
|
+
:root {
|
|
860
|
+
--seamless-accent: #1f3a34;
|
|
861
|
+
--seamless-accent-hover: #16302b;
|
|
862
|
+
--seamless-surface: #f7f5f0;
|
|
863
|
+
--seamless-text: #1a1a1a;
|
|
864
|
+
}
|
|
865
|
+
```
|
|
866
|
+
|
|
867
|
+
Scoping to a wrapper also works, which is useful when the auth screens should look different from the
|
|
868
|
+
rest of the app:
|
|
869
|
+
|
|
870
|
+
```css
|
|
871
|
+
.auth-shell {
|
|
872
|
+
--seamless-accent: #1f3a34;
|
|
873
|
+
--seamless-accent-soft: #3c6f63;
|
|
874
|
+
}
|
|
875
|
+
```
|
|
876
|
+
|
|
877
|
+
There is no provider prop or JavaScript API for this. Setting the variables is the whole interface.
|
|
878
|
+
|
|
879
|
+
### Tokens
|
|
880
|
+
|
|
881
|
+
| Token | Used for | Default |
|
|
882
|
+
| ---------------------------- | ---------------------------------------------------------------------- | --------------------------------------------- |
|
|
883
|
+
| `--seamless-accent` | Primary buttons, focus rings, selected states, accent borders, spinner | `#2563eb` fills, `#3b82f6` rings and borders |
|
|
884
|
+
| `--seamless-accent-hover` | Hover state of primary buttons | `#1d4ed8` |
|
|
885
|
+
| `--seamless-accent-contrast` | Label text on accent-filled buttons | `white` |
|
|
886
|
+
| `--seamless-accent-soft` | Links, toggle buttons, accent icons | `#60a5fa`, `#a5b4fc` on the magic-link screen |
|
|
887
|
+
| `--seamless-surface` | Card and modal backgrounds | `#1f2937` |
|
|
888
|
+
| `--seamless-surface-raised` | Inputs and panels sitting on a card | `#374151`, `#4b5563` on the login form |
|
|
889
|
+
| `--seamless-surface-hover` | Hover state of secondary buttons | `#4b5563` |
|
|
890
|
+
| `--seamless-border` | Input, button, and panel borders | `#4b5563`, `#d1d5db` |
|
|
891
|
+
| `--seamless-text` | Headings and body text | `white` |
|
|
892
|
+
| `--seamless-text-muted` | Labels, helper text, secondary copy | `#9ca3af`, `#d1d5db` |
|
|
893
|
+
| `--seamless-disabled` | Background of disabled submit buttons | `#9ca3af` |
|
|
894
|
+
| `--seamless-danger` | Error messages | `#f87171` |
|
|
895
|
+
| `--seamless-success` | Success messages and the verified check icon | `#34d399` |
|
|
896
|
+
| `--seamless-warning` | OTP countdown and resend timers | `#facc15` |
|
|
897
|
+
| `--seamless-overlay` | Modal backdrop scrim | `rgba(0, 0, 0, 0.45)` |
|
|
898
|
+
| `--seamless-shadow` | Card and modal shadow colour | `rgba(0, 0, 0, 0.1)` to `rgba(0, 0, 0, 0.4)` |
|
|
899
|
+
|
|
900
|
+
### Notes
|
|
901
|
+
|
|
902
|
+
- Where the original design used near-duplicate shades for the same role, each declaration keeps its
|
|
903
|
+
own original value as the fallback. That is why some rows list more than one default. Nothing shifts
|
|
904
|
+
until you set the token, and once you do, every use of that role picks up your value.
|
|
905
|
+
- `--seamless-shadow` is the shadow colour only. Offsets and blur are fixed. Setting it applies one
|
|
906
|
+
colour to every shadow in the built-in UI, replacing the per-screen alpha values.
|
|
907
|
+
- If you set `--seamless-surface` to a light colour, set `--seamless-text` too. The default text
|
|
908
|
+
colour is white and will disappear otherwise.
|
|
909
|
+
- Two decorative tints are deliberately not tokenised: the pulse ring behind the magic-link mail icon
|
|
910
|
+
and the disc behind the success check. Both are translucent and sit directly under an icon, so an
|
|
911
|
+
opaque override would hide the icon it is meant to frame.
|
|
912
|
+
- The package ships one palette and no `prefers-color-scheme` rules. If you want the auth UI to follow
|
|
913
|
+
the system theme, wrap your own overrides in a media query.
|
|
914
|
+
|
|
852
915
|
## Backend Expectations
|
|
853
916
|
|
|
854
917
|
This package assumes a Seamless Auth-compatible backend with the auth adapter mounted at `/auth`.
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t,Fragment as i}from"react/jsx-runtime";import{browserSupportsWebAuthn as o,bufferToBase64URLString as n,base64URLStringToBuffer as r,startAuthentication as a,startRegistration as s,WebAuthnError as l}from"@simplewebauthn/browser";import{createContext as d,useMemo as c,useSyncExternalStore as u,useEffect as _,useContext as m,useState as g,useRef as p,useCallback as f}from"react";import{useHref as h,useNavigate as y,useLocation as b,useSearchParams as v,Routes as k,Route as w,Navigate as x}from"react-router-dom";import P from"libphonenumber-js";class S extends Error{constructor(e,t,i,o){super(e),this.name="SeamlessAuthError",this.status=t,this.body=i,this.cause=o}}const N={oauth_missing_email:!0,oauth_email_not_verified:!0,oauth_missing_subject:!0};function O(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=O(e.body)??O(e.body.details);return"string"==typeof t&&Object.prototype.hasOwnProperty.call(N,t)?t:void 0}function C(e){if(!(e instanceof S)||("object"!=typeof(t=e.cause)||null===t||"string"!=typeof t.name))return;var t;const{name:i,code:o,message:n}=e.cause;return{name:i,code:"string"==typeof o?o:void 0,message:"string"==typeof n?n:""}}async function M(e,t){let i;try{i=await e.json()}catch{i=void 0}return new S(function(e){if("object"!=typeof e||null===e)return;const{error:t,message:i}=e;return"string"==typeof t&&t?t:"string"==typeof i&&i?i:void 0}(i)??t,e.status,i)}async function I(e){try{return await e.json()}catch{return}}async function A(e,t){let i;try{i=await e}catch{return{data:null,error:new S(t,0)}}return i.ok?{data:await I(i),error:null}:{data:null,error:await M(i,t)}}function z(e){return{data:e,error:null}}function E(e,t=0,i,o){return{data:null,error:new S(e,t,i,o)}}function F(e){if(e instanceof ArrayBuffer)return e;const t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=new Uint8Array(t.byteLength);return i.set(t),i.buffer}function U(e){return"string"==typeof e?e:n(F(e))}function L(e){return"string"==typeof e?r(e):e}function R(e){return{...e.credentialId?{credentialId:e.credentialId}:{},prf:{salt:U(e.salt),...e.secondSalt?{secondSalt:U(e.secondSalt)}:{}}}}async function B(){return!!o()&&("undefined"==typeof window||!1!==window.isSecureContext)&&void 0!==globalThis.PublicKeyCredential&&"undefined"!=typeof navigator&&"function"==typeof navigator.credentials?.get}function q(e){const t=e,i=t.extensions?.prf?.eval;return i?{...t,extensions:{...t.extensions,prf:{...t.extensions?.prf,eval:{...i,...i.first?{first:L(i.first)}:{},...i.second?{second:L(i.second)}:{}}}}}:e}function j(e){const t=e.clientExtensionResults,i=t?.prf?.results?.first;if(!i)return null;const o=(r=i)instanceof ArrayBuffer?new Uint8Array(r):new Uint8Array(r.buffer,r.byteOffset,r.byteLength);var r;return{credentialId:e.id,output:o,outputBase64url:n(F(o))}}function J(e){const t=e.clientExtensionResults;return t?.prf?.results?{...e,clientExtensionResults:{...e.clientExtensionResults,prf:{...t.prf,results:void 0}}}:e}function G(e,t){const i=e.method===t?e.method:null;return"Success"===e.message&&!0===e.fresh&&null!==i?z({fresh:!0,method:i,verifiedAt:e.verifiedAt??null,expiresAt:e.expiresAt??null,maxAgeSeconds:e.maxAgeSeconds??0}):E(e.message??"Step-up authentication failed.")}function D(e){return e?{method:"POST",body:JSON.stringify(R(e))}:{method:"POST"}}function W(e,t,i){const o=E(t,0,void 0,i),n=C(o.error);return console.error(e,n?.name??"Unknown error."),o}const $=e=>{const t=(e=>{const{authHost:t}=e;return async function(e,i){const o=`${t?.replace(/\/+$/,"")??""}/auth${e.startsWith("/")?e:`/${e}`}`,n=null!=i?.body,r={...i,credentials:"include",headers:{...n?{"Content-Type":"application/json"}:{},...i?.headers}};return fetch(o,r)}})({authHost:e.apiHost});return{getCurrentUser:()=>A(t("users/me",{method:"GET"}),"Failed to load the current user."),login:e=>A(t("/login",{method:"POST",body:JSON.stringify(e)}),"Failed to start sign-in."),loginWithPasskey:async e=>{const i=await A(t("/webAuthn/login/start",{...D(e?.prf)}),"Failed to start passkey login.");if(i.error)return i;let o,n;try{const e=await a({optionsJSON:q(i.data)});o=j(e),n=J(e)}catch(e){return W("Passkey login error.","Passkey login failed.",e)}const r=await A(t("/webAuthn/login/finish",{method:"POST",body:JSON.stringify({assertionResponse:n})}),"Failed to verify passkey.");return r.error?r:"Success"!==r.data?.message?E(r.data?.message??"Passkey login failed."):z(o?{prf:o}:{})},logout:(e={})=>A(t("all_sessions"===e.scope?"/logout/all":"/logout",{method:"DELETE"}),"Failed to sign out."),logoutAllSessions:()=>A(t("/logout/all",{method:"DELETE"}),"Failed to sign out of all sessions."),deleteUser:()=>A(t("/users/delete",{method:"DELETE"}),"Failed to delete the account."),register:e=>A(t("/registration/register",{method:"POST",body:JSON.stringify({email:e.email,...e.phone?{phone:e.phone}:{}})}),"Failed to register."),requestPhoneOtp:()=>A(t("/otp/generate-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyPhoneOtp:e=>A(t("/otp/verify-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestLoginPhoneOtp:()=>A(t("/otp/generate-login-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyLoginPhoneOtp:e=>A(t("/otp/verify-login-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestEmailOtp:()=>A(t("/otp/generate-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyEmailOtp:e=>A(t("/otp/verify-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestLoginEmailOtp:()=>A(t("/otp/generate-login-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyLoginEmailOtp:e=>A(t("/otp/verify-login-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestMagicLink:()=>A(t("/magic-link",{method:"POST",body:JSON.stringify({})}),"Failed to send the magic link."),checkMagicLink:()=>A(t("/magic-link/check",{method:"GET"}),"Failed to check the magic link."),verifyMagicLink:e=>A(t(`/magic-link/verify/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to verify the magic link."),listOAuthProviders:()=>A(t("/oauth/providers",{method:"GET"}),"Failed to list OAuth providers."),getPublicSystemConfig:()=>A(t("/system-config/public",{method:"GET"}),"Failed to read the public system configuration."),startOAuthLogin:e=>A(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=>A(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 i=function(e){return"metadata"in e?e:{metadata:e}}(e),o=await A(t(function(e){const t=new URLSearchParams;e.requirePrf?t.set("requirePrf","true"):e.requestPrf&&t.set("requestPrf","true");const i=t.toString();return"/webAuthn/register/start"+(i?`?${i}`:"")}(i),{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?E(e.name,0,void 0,e):W("Passkey registration error.","Passkey registration failed.",e)}const r=function(e){const t=e.clientExtensionResults;return!0===t?.prf?.enabled}(n),a=await A(t("/webAuthn/register/finish",{method:"POST",body:JSON.stringify({attestationResponse:n,metadata:{...i.metadata,prfCapable:r}})}),"Verification failed.");return a.error?a:z({credentialId:n.id,prfCapable:r})},isPasskeyPrfSupported:B,getStepUpStatus:()=>A(t("/step-up/status",{method:"GET"}),"Failed to load step-up status."),verifyStepUpWithPasskey:async()=>{const e=await A(t("/step-up/webauthn/start",{method:"POST"}),"Failed to start step-up authentication.");if(e.error)return e;let i;try{i=J(await a({optionsJSON:q(e.data)}))}catch(e){return W("Step-up authentication error.","Step-up authentication failed.",e)}const o=await A(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:i})}),"Failed to verify step-up authentication.");return o.error?o:G(o.data??{},"webauthn")},verifyStepUpWithPasskeyPrf:async e=>{const i=await A(t("/step-up/webauthn/start",{...D(e)}),"Failed to start step-up authentication.");if(i.error)return i;let o,n;try{const e=await a({optionsJSON:q(i.data)});o=j(e),n=J(e)}catch(e){return W("Step-up authentication error.","Step-up authentication failed.",e)}if(!o)return E("Passkey did not return PRF output.");const r=await A(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:n})}),"Failed to verify step-up authentication.");if(r.error)return r;const s=G(r.data??{},"webauthn");return s.error?s:z({...s.data,credentialId:o.credentialId,prf:o})},getTotpStatus:()=>A(t("/totp/status",{method:"GET"}),"Failed to load authenticator status."),startTotpEnrollment:()=>A(t("/totp/enroll/start",{method:"POST"}),"Failed to start authenticator enrollment."),verifyTotpEnrollment:e=>A(t("/totp/enroll/verify",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify the authenticator code."),disableTotp:e=>A(t("/totp/disable",{method:"POST",body:JSON.stringify({code:e})}),"Failed to disable the authenticator."),verifyStepUpWithTotp:async e=>{const i=await A(t("/totp/verify-mfa",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify step-up authentication.");return i.error?i:G(i.data??{},"totp")},updateCredential:e=>A(t("users/credentials",{method:"POST",body:JSON.stringify(e)}),"Failed to update credential."),deleteCredential:e=>A(t("users/credentials",{method:"DELETE",body:JSON.stringify({id:e})}),"Failed to delete credential."),listOrganizations:()=>A(t("/organizations",{method:"GET"}),"Failed to list organizations."),createOrganization:e=>A(t("/organizations",{method:"POST",body:JSON.stringify(e)}),"Failed to create organization."),getOrganization:e=>A(t(`/organizations/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to load organization."),updateOrganization:(e,i)=>A(t(`/organizations/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(i)}),"Failed to update organization."),switchOrganization:e=>A(t(`/organizations/${encodeURIComponent(e)}/switch`,{method:"POST"}),"Failed to switch organization."),listOrganizationMembers:e=>A(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"GET"}),"Failed to list organization members."),addOrganizationMember:(e,i)=>A(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"POST",body:JSON.stringify(i)}),"Failed to add organization member."),updateOrganizationMember:(e,i,o)=>A(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(i)}`,{method:"PATCH",body:JSON.stringify(o)}),"Failed to update organization member."),removeOrganizationMember:(e,i)=>A(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(i)}`,{method:"DELETE"}),"Failed to remove organization member.")}};function V(e,t){const i=e.trim(),o=t.trim();if(!i||!o)return!1;if(i===o)return!0;if(i.endsWith(":*")){const e=i.slice(0,-2);return o===e||o.startsWith(`${e}:`)}if(!o.includes(":"))return!1;if(!i.includes(":"))return o.startsWith(`${i}:`);const n=i.split(":"),r=o.split(":"),a=n[n.length-1],s=r[r.length-1],l=n.slice(0,-1),d=r.slice(0,-1);return"write"===a&&"read"===s&&l.length===d.length&&l.every((e,t)=>e===d[t])}function K(e,t){if(!Array.isArray(e))return!1;const i=e.filter(e=>"string"==typeof e);return(Array.isArray(t)?t:[t]).some(e=>i.some(t=>V(t,e)))}function H(){return"undefined"==typeof localStorage?function(){const e=new Map;return{get:t=>e.get(t)??null,set:(t,i)=>{e.set(t,i)}}}():{get:e=>{try{return localStorage.getItem(e)}catch{return null}},set:(e,t)=>{try{localStorage.setItem(e,t)}catch{}}}}const Y="seamlessauth_seen",Q={user:null,credentials:[],organizations:[],activeOrganization:null,stepUpStatus:null,isAuthenticated:!1};const Z=d(void 0),X=()=>{const e=m(Z);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e},ee=({children:t,apiHost:i,autoDetectPreviousSignin:o=!0})=>{const n=c(()=>function(e){const{apiHost:t,detectPreviousSignIn:i=!0}=e,o=$({apiHost:t}),n=e.storage??H(),r=new Set;let a=!1,s=0,l={...Q,loading:!0,hasSignedInBefore:i&&"true"===n.get(Y)};function d(e){const t={...l,...e};Object.keys(e).some(e=>l[e]!==t[e])&&(l=t,r.forEach(e=>e()))}function c(){n.set(Y,"true"),i&&d({hasSignedInBefore:!0})}function u(){d(Q)}async function _(){const e=++s;d({loading:!0});const t=await o.getCurrentUser();return a||e!==s?t:t.error?(u(),d({loading:!1}),t):(d({user:t.data.user,credentials:t.data.credentials??[],organizations:t.data.organizations??[],activeOrganization:t.data.activeOrganization??null,isAuthenticated:!0,loading:!1}),l.hasSignedInBefore||c(),t)}async function m(e){const t=await e();return t.error||await _(),t}return{getState:()=>l,subscribe:e=>(r.add(e),()=>{r.delete(e)}),actions:{login:(e,t)=>o.login({identifier:e,passkeyAvailable:t}),handlePasskeyLogin:()=>m(()=>o.loginWithPasskey()),refreshSession:_,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:i}=await o.updateCredential({friendlyName:e.friendlyName??null,id:e.id});if(i)return{data:null,error:i};const n=t.credential;return d({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||d({credentials:l.credentials.filter(t=>t.id!==e)}),t},switchOrganization:e=>m(()=>o.switchOrganization(e)),listOAuthProviders:()=>o.listOAuthProviders(),startOAuthLogin:e=>o.startOAuthLogin(e),finishOAuthLogin:e=>m(()=>o.finishOAuthLogin(e)),refreshStepUpStatus:async()=>{const e=await o.getStepUpStatus();return d({stepUpStatus:e.error?null:e.data}),e},verifyStepUpWithPasskey:async()=>{const e=await o.verifyStepUpWithPasskey();return e.error||d({stepUpStatus:e.data}),e},verifyStepUpWithPasskeyPrf:async e=>{const t=await o.verifyStepUpWithPasskeyPrf(e);return t.error||d({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||d({stepUpStatus:t.data}),t},hasRole:e=>l.user?.roles?.includes(e),hasScopedRole:e=>l.user?K(l.user.roles,e):void 0,markSignedIn:c},destroy:()=>{a=!0,r.clear()}}}({apiHost:i,detectPreviousSignIn:o}),[i,o]),r=u(n.subscribe,n.getState,n.getState);_(()=>{n.actions.refreshSession()},[n]);const a=c(()=>({...r,...n.actions,apiHost:i}),[r,n,i]);return e(Z.Provider,{value:a,children:t})},te=()=>{const{apiHost:e}=X();return c(()=>$({apiHost:e}),[e])},ie=["passkey","magic_link"],oe=()=>{const e=te(),[t,i]=g(null),[o,n]=g(!0);return _(()=>{let t=!0;return(async()=>{try{const{data:o,error:n}=await e.getPublicSystemConfig();t&&!n&&o?.loginMethods?.length&&i(o.loginMethods)}catch{}finally{t&&n(!1)}})(),()=>{t=!1}},[e]),{loginMethods:t,loading:o}},ne=e=>Boolean(e?.some(e=>"passkey"!==e)),re=e=>{if("string"!=typeof e)return!1;const t=e.trim();if(t.length<3||t.length>320)return!1;const i=t.split("@");if(2!==i.length)return!1;const[o,n]=i;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(".."))},ae=e=>{const t=P(e);return t?.isValid()||!1};async function se(){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 le=()=>{const[e,t]=g(!1),[i,o]=g(!0);return _(()=>{let e=!0;return(async()=>{try{const i=await se();e&&t(i)}catch{e&&t(!1)}finally{e&&o(!1)}})(),()=>{e=!1}},[]),{passkeySupported:e,loading:i}},de="/login",ce="/passkey-login",ue="/verify-phone-otp",_e="/verify-email-otp",me="/verify-magiclink",ge="/oauth/callback",pe="/register-passkey",fe="/magic-link-sent";function he(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===i&&o.firstChild?o.insertBefore(n,o.firstChild):o.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}var ye="login-module__container___YggDx",be="login-module__card___Ub-Py",ve="login-module__heading___neEqb",ke="login-module__inputGroup___P6qgS",we="login-module__label___mx5vu",xe="login-module__input___U07lW",Pe="login-module__helperText___kDQ4-",Se="login-module__error___40zxh",Ne="login-module__button___0kFBs",Oe="login-module__toggle___1JiG1",Te="login-module__fallbackCard___HdIk-",Ce="login-module__fallbackHeader___-il2v",Me="login-module__fallbackDescription___ea5EB",Ie="login-module__fallbackActions___AD3ni",Ae="login-module__fallbackActionButton___lFgWf",ze="login-module__actionTitle___ycrMp",Ee="login-module__actionSubtext___opaIV",Fe="login-module__linkButton___5lsoe";he(".login-module__container___YggDx{align-items:center;color:#fff;display:flex;justify-content:center}.login-module__card___Ub-Py{background-color:#1f2937;border-radius:.5rem;box-shadow:0 4px 6px rgba(0,0,0,.1);max-width:28rem;padding:2rem;width:100%}.login-module__heading___neEqb{color:#fff;font-size:1.5rem;font-weight:700;margin-bottom:1.5rem;text-align:center}.login-module__message___qSejT{color:#68d391;text-align:center}.login-module__inputGroup___P6qgS{margin-bottom:1rem}.login-module__label___mx5vu{color:#d1d5db;display:block}.login-module__input___U07lW{background-color:#4b5563;border:1px solid #d1d5db;border-radius:.375rem;margin-top:.25rem;padding:.5rem;width:100%}.login-module__input___U07lW:focus{box-shadow:0 0 0 2px #3b82f6;outline:none}.login-module__helperText___kDQ4-{color:#9ca3af;font-size:.75rem;margin-top:.5rem}.login-module__error___40zxh{color:#f87171;font-size:.875rem}.login-module__button___0kFBs{background-color:#2563eb;border-radius:.375rem;color:#fff;cursor:pointer;margin-top:1rem;padding:.5rem;transition:background-color .3s;width:100%}.login-module__button___0kFBs:hover{background-color:#1d4ed8}.login-module__button___0kFBs:disabled{background-color:#9ca3af;cursor:not-allowed}.login-module__toggle___1JiG1{background:none;border:none;color:#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:#4b5563;border:1px solid #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:hsla(0,0%,100%,.04);border:1px solid 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:#f3f4f6;font-size:.95rem;font-weight:600}.login-module__fallbackDescription___ea5EB{color:#9ca3af;font-size:.85rem;line-height:1.4}.login-module__fallbackActions___AD3ni{display:flex;flex-direction:column;gap:10px}.login-module__fallbackActionButton___lFgWf{background:rgba(0,0,0,.25);border:1px solid 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:hsla(0,0%,100%,.06);border-color:hsla(0,0%,100%,.15)}.login-module__actionTitle___ycrMp{color:#f9fafb;font-size:.9rem;font-weight:500}.login-module__actionSubtext___opaIV{color:#9ca3af;font-size:.75rem;margin-top:2px}.login-module__linkButton___5lsoe{background:none;border:none;color:#60a5fa;cursor:pointer;font-size:.8rem;margin-top:6px}.login-module__linkButton___5lsoe:hover{text-decoration:underline}");const Ue=({identifier:i,onMagicLink:o,onEmailOtp:n,onPhoneOtp:r,onPasskeyRetry:a,loginMethods:s})=>{const l=new Set(s??["passkey","magic_link","phone_otp"]),d=l.has("magic_link")&&re(i),c=l.has("email_otp")&&Boolean(n)&&re(i),u=l.has("phone_otp")&&ae(i),_=l.has("passkey")&&Boolean(a);return d||c||u||_?t("div",{className:Te,children:[e("div",{className:Ce,children:"Choose a sign-in method"}),e("p",{className:Me,children:"Choose another secure sign-in method."}),t("div",{className:Ie,children:[d&&t("button",{type:"button",className:Ae,onClick:o,children:[e("span",{className:ze,children:"Email Magic Link"}),e("span",{className:Ee,children:"Send a secure sign-in link to your email"})]}),c&&t("button",{type:"button",className:Ae,onClick:n,children:[e("span",{className:ze,children:"Email Code"}),e("span",{className:Ee,children:"Receive a one-time code by email"})]}),u&&t("button",{type:"button",className:Ae,onClick:r,children:[e("span",{className:ze,children:"Text Message Code"}),e("span",{className:Ee,children:"Receive a one-time code via SMS"})]})]}),_&&e("button",{type:"button",className:Fe,onClick:a,children:"Try passkey anyway"})]}):null},Le="seamless:oauth:provider",Re=()=>{const{listOAuthProviders:i,startOAuthLogin:o}=X(),n=h("/oauth/callback"),[r,a]=g([]),[s,l]=g("");if(_(()=>{let e=!0;return i().then(({data:t})=>{e&&a(t?.providers??[])}),()=>{e=!1}},[i]),0===r.length)return null;return t("div",{className:Ie,children:[r.map(i=>e("button",{type:"button",className:Ae,onClick:()=>(async e=>{l(""),sessionStorage.setItem(Le,e);const{data:t,error:i}=await o({providerId:e,redirectUri:new URL(n,window.location.origin).toString()});i?l("Could not start sign-in with this provider."):window.location.assign(t.authorizationUrl)})(i.id),children:t("span",{className:ze,children:["Continue with ",i.name]})},i.id)),s&&e("p",{className:Se,children:s})]})},Be=()=>{const o=y(),{hasSignedInBefore:n,login:r,handlePasskeyLogin:a}=X(),s=te(),{passkeySupported:l}=le(),{loginMethods:d}=oe(),[c,u]=g(""),[m,p]=g(""),[f,h]=g("register"),[b,v]=g(""),[k,w]=g(""),[x,P]=g(""),[S,N]=g(!1),[O,T]=g(null);_(()=>{n&&h("login")},[n]);return e("div",{className:ye,children:t("div",{className:be,children:[e("h2",{className:ve,children:"login"===f?"Sign In":"Create Account"}),t(i,{children:[t("form",{onSubmit:async e=>{e.preventDefault(),v(""),N(!1);try{if("login"===f){const{data:e,error:t}=await r(c,l);if(t)return void v("Failed to start sign-in. Please try again.");const i=e?.loginMethods?.length?e.loginMethods:d??ie;if(T(i),l&&i.includes("passkey")){const{error:e}=await a();return e?(N(!0),void v("Passkey sign-in could not be completed. Choose another sign-in method.")):void o("/")}return void N(!0)}"register"===f&&await(async()=>{v("");const{data:e,error:t}=await s.register({email:m});t?v("Failed to register. Please try again."):"Success"===e.message?o(_e):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:ke,children:[e("label",{htmlFor:"identifier",className:we,children:"Email Address / Phone Number"}),e("input",{id:"identifier",type:"text",value:c,onChange:e=>{const t=e.target.value;u(t)},autoComplete:"off",placeholder:"Email or Phone Number",className:xe,onBlur:()=>{if(c){const e=re(c)||ae(c);P(e?"":"Please enter a valid email or phone number")}},required:!0}),e("p",{className:Pe,children:"Phone numbers must include a country code e.g. +1"}),S&&e(Ue,{identifier:c,onMagicLink:async()=>{const{error:e}=await s.requestMagicLink();e?v("Failed to send magic link."):o(fe,{state:{identifier:c}})},onEmailOtp:async()=>{const{error:e}=await s.requestLoginEmailOtp();e?v("Failed to send email code."):o(_e,{state:{flow:"login"}})},onPhoneOtp:async()=>{const{error:e}=await s.requestLoginPhoneOtp();e?v("Failed to send OTP."):o(ue,{state:{flow:"login"}})},onPasskeyRetry:l?a:void 0,loginMethods:O}),x&&e("p",{className:Se,children:x})]}),"register"===f&&t("div",{className:ke,children:[e("label",{htmlFor:"email",className:we,children:"Email Address"}),e("input",{id:"email",type:"email",value:m,onChange:e=>{const t=e.target.value;p(t)},autoComplete:"off",className:xe,onBlur:()=>{if(m){const e=re(m);w(e?"":"Please enter a valid email")}},required:!0}),k&&e("p",{className:Se,children:k})]}),e("button",{type:"submit",className:Ne,disabled:!("login"===f&&c?re(c)||ae(c):re(m)),children:"login"===f?"Login":"Register"}),b&&e("p",{className:Se,children:b}),e("button",{type:"button",onClick:()=>h("login"===f?"register":"login"),className:Oe,children:"login"===f?"Don't have an account? Create one":"Already have an account? Sign in"})]}),e(Re,{})]})]})})};var qe={container:"passKeyLogin-module__container___IUKxF",card:"passKeyLogin-module__card___2sKM1",title:"passKeyLogin-module__title___HZxvc",button:"passKeyLogin-module__button___FvR4I"};he(".passKeyLogin-module__container___IUKxF{align-items:center;color:#fff;display:flex;justify-content:center;padding:1rem}.passKeyLogin-module__card___2sKM1{background-color:#1f2937;border-radius:1rem;box-shadow:0 4px 20px 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:#fff;font-size:1.5rem;font-weight:600;text-align:center}.passKeyLogin-module__button___FvR4I{background-color:#2563eb;border:1px solid #3b82f6;border-radius:.5rem;color:#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:#1d4ed8}@media (max-width:480px){.passKeyLogin-module__card___2sKM1{padding:1.25rem}.passKeyLogin-module__button___FvR4I{font-size:1rem}}");const je=()=>{const i=y(),{handlePasskeyLogin:o}=X(),[n,r]=g("");return e("div",{className:qe.container,children:t("div",{className:qe.card,children:[e("h2",{className:qe.title,children:"Login with Passkey"}),e("button",{onClick:async()=>{r("");const{error:e}=await o();e?r("Passkey sign-in could not be completed. Try another sign-in method."):i("/")},className:qe.button,children:"Use Passkey"}),n&&e("p",{className:qe.error,children:n})]})})};var Je="registerPasskey-module__container___jqEh8",Ge="registerPasskey-module__card___MJAyC",De="registerPasskey-module__loading___Q4i1x",We="registerPasskey-module__spinner___V1nhd",$e="registerPasskey-module__supported___ihTih",Ve="registerPasskey-module__title___vn2Qu",Ke="registerPasskey-module__description___AWmO-",He="registerPasskey-module__button___D3b4B",Ye="registerPasskey-module__message___RiOw-",Qe="registerPasskey-module__success___HP5aX",Ze="registerPasskey-module__error___hGiqE",Xe="registerPasskey-module__skip___1hDyU";he(".registerPasskey-module__container___jqEh8{align-items:center;color:#fff;display:flex;justify-content:center;padding:1rem}.registerPasskey-module__card___MJAyC{background-color:#1f2937;border-radius:1rem;box-shadow:0 4px 20px rgba(0,0,0,.4);max-width:400px;padding:1.5rem;width:100%}.registerPasskey-module__loading___Q4i1x{align-items:center;background-color:#f9fafb;border-radius:.75rem;box-shadow:0 2px 8px rgba(0,0,0,.1);color:#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-color:#3b82f6 transparent;border-radius:9999px;border-style:solid;border-width:2px;height:1.5rem;width:1.5rem}@keyframes registerPasskey-module__spin___oYcsC{to{transform:rotate(1turn)}}.registerPasskey-module__supported___ihTih{background-color:#ecfdf5;border-radius:.75rem;box-shadow:0 2px 12px rgba(0,0,0,.1);color:#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:#059669;border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-weight:500;padding:.75rem 1rem;transition:background-color .2s ease;width:100%}.registerPasskey-module__button___D3b4B:hover{background-color:#047857}.registerPasskey-module__message___RiOw-{font-size:.875rem;margin-top:1rem}.registerPasskey-module__success___HP5aX{color:#6ee7b7}.registerPasskey-module__error___hGiqE{color:#f87171}.registerPasskey-module__skip___1hDyU{background:none;border:none;color:#60a5fa;cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}.registerPasskey-module__skip___1hDyU:disabled{cursor:default;opacity:.6}");var et="deviceNameModal-module__overlay___fmdPd",tt="deviceNameModal-module__modal___uoEda",it="deviceNameModal-module__description___-HMTA",ot="deviceNameModal-module__input___4vQMI",nt="deviceNameModal-module__actions___KXw7b",rt="deviceNameModal-module__primary___9Ozlk",at="deviceNameModal-module__secondary___HILhc";he(".deviceNameModal-module__overlay___fmdPd{align-items:center;background:rgba(0,0,0,.45);display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.deviceNameModal-module__modal___uoEda{background:#1f2937;border-radius:12px;box-shadow:0 20px 40px rgba(0,0,0,.15);color:#fff;max-width:420px;padding:24px;width:100%}.deviceNameModal-module__description___-HMTA{color:#fff;font-size:14px;margin-bottom:16px}.deviceNameModal-module__input___4vQMI{border:1px solid #ddd;border-radius:8px;font-size:14px;margin-bottom:20px;padding:10px 12px;width:100%}.deviceNameModal-module__actions___KXw7b{display:flex;gap:10px;justify-content:flex-end}.deviceNameModal-module__primary___9Ozlk{background:#2563eb;border:none;border-radius:8px;color:#fff;cursor:pointer;padding:8px 14px}.deviceNameModal-module__secondary___HILhc{background:transparent;border:1px solid #ccc;border-radius:8px;cursor:pointer;padding:8px 14px}");const st=({isOpen:i,onCancel:o,onConfirm:n})=>{const[r,a]=g("");return i?e("div",{className:et,children:t("div",{className:tt,children:[e("h3",{children:"Name This Device"}),e("p",{className:it,children:"Give this passkey a friendly name so you can recognize it later."}),e("input",{type:"text",placeholder:"e.g., MacBook Pro, iPhone, YubiKey",value:r,onChange:e=>a(e.target.value),className:ot,autoFocus:!0}),t("div",{className:nt,children:[e("button",{onClick:o,className:at,children:"Cancel"}),e("button",{onClick:()=>n(r.trim()),disabled:!r.trim(),className:rt,children:"Continue"})]})]})}):null},lt=()=>{const{refreshSession:o}=X(),n=te(),{passkeySupported:r,loading:a}=le(),{loginMethods:s,loading:l}=oe(),d=y(),[c,u]=g("idle"),[_,m]=g(""),[p,f]=g(!1),[h,b]=g(null),v=ne(s),k=async()=>{await o(),d("/")};return t(i,{children:[e("div",{className:Je,children:e("div",{className:Ge,children:t("div",a||l?{className:De,children:[e("div",{className:We}),e("span",{children:"Checking for Passkey Support..."})]}:r?{className:$e,children:[e("h2",{className:Ve,children:"Secure Your Account with a Passkey"}),e("p",{className:Ke,children:"Your device supports passkeys! Register one to skip passwords forever."}),e("button",{onClick:()=>{const{platform:e,browser:t,deviceInfo:i}=function(){const e=navigator.userAgent.toLowerCase();let t="unknown",i="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?i="brave":/edg\/|edgios/.test(e)?i="edge":/opr\/|opt\/|opera/.test(e)?i="opera":/vivaldi/.test(e)?i="vivaldi":/samsungbrowser/.test(e)?i="samsung":/firefox|fxios/.test(e)?i="firefox":/chrome|crios/.test(e)?i="chrome":/safari/.test(e)&&(i="safari"),{platform:t,browser:i,deviceInfo:`${t} • ${i}`}}();b({platform:e,browser:t,deviceInfo:i}),f(!0)},disabled:"loading"===c,className:He,children:"loading"===c?"Registering...":"Register Passkey"}),_&&e("p",{className:`${Ye} ${"success"===c?Qe:Ze}`,children:_}),v&&e("button",{type:"button",onClick:k,disabled:"loading"===c,className:Xe,children:"Skip for now"})]}:{className:$e,children:[e("h2",{className:Ve,children:"Passkeys are not available here"}),e("p",{className:Ke,children:v?"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."}),v&&e("button",{type:"button",onClick:k,className:He,children:"Continue"})]})})}),e(st,{isOpen:p,onCancel:()=>{f(!1),b(null)},onConfirm:async e=>{if(!h)return;const t={friendlyName:e,...h};u("loading");try{const{error:e}=await n.registerPasskey(t);if(e)throw e;await o(),u("success"),m("Passkey registered successfully."),d("/")}catch{console.error("Passkey registration failed."),u("error"),m("Error registering passkey.")}finally{f(!1),b(null)}}})]})};var dt="verifyOTP-module__container___wgoDE",ct="verifyOTP-module__card___3cs2p",ut="verifyOTP-module__title___fZ-1d",_t="verifyOTP-module__subtitle___dGSu3",mt="verifyOTP-module__error___GEtlG",gt="verifyOTP-module__success___46TjG",pt="verifyOTP-module__form___jiGG-",ft="verifyOTP-module__label___Zq5Mi",ht="verifyOTP-module__timer___smq-a",yt="verifyOTP-module__resend___PlmkG",bt="verifyOTP-module__button___8pIuO",vt="verifyOTP-module__toggle___wbzVa";he(".verifyOTP-module__container___wgoDE{align-items:center;color:#fff;display:flex;justify-content:center;padding:1rem}.verifyOTP-module__card___3cs2p{background-color:#1f2937;border-radius:.5rem;box-shadow:0 0 10px rgba(0,0,0,.3);max-width:28rem;padding:1.5rem;width:100%}.verifyOTP-module__title___fZ-1d{color:#fff;font-size:1.5rem;font-weight:700;margin-bottom:1rem;text-align:center}.verifyOTP-module__subtitle___dGSu3{color:#9ca3af;font-size:.875rem;margin-bottom:1.5rem;text-align:center}.verifyOTP-module__error___GEtlG{color:#f87171;margin-bottom:1rem;text-align:center}.verifyOTP-module__success___46TjG{color:#34d399;margin-bottom:.75rem;text-align:center}.verifyOTP-module__form___jiGG-{display:flex;flex-direction:column;gap:1rem}.verifyOTP-module__label___Zq5Mi{color:#d1d5db;display:block;font-size:.875rem;margin-bottom:.25rem}.verifyOTP-module__timer___smq-a{color:#facc15;font-size:.875rem}.verifyOTP-module__input___yqIXM{background-color:#374151;border:1px solid #4b5563;border-radius:.375rem;color:#fff;outline:none;padding:.5rem;width:100%}.verifyOTP-module__input___yqIXM:focus{box-shadow:0 0 0 2px #3b82f6}.verifyOTP-module__resend___PlmkG{background:none;border:none;color:#60a5fa;cursor:pointer;font-size:.75rem;margin-top:.25rem;text-decoration:underline}.verifyOTP-module__resend___PlmkG:hover{color:#3b82f6}.verifyOTP-module__button___8pIuO{background-color:#2563eb;border:none;border-radius:.375rem;color:#fff;cursor:pointer;padding:.5rem;transition:background-color .2s;width:100%}.verifyOTP-module__button___8pIuO:hover{background-color:#1d4ed8}.verifyOTP-module__toggle___wbzVa{background:none;border:none;color:#60a5fa;cursor:pointer;font-size:.875rem;margin-top:1.5rem;text-align:center;width:100%}");var kt="otpInput-module__otpContainer___MUjby",wt="otpInput-module__otpInput___3YMVm";he(".otpInput-module__otpContainer___MUjby{display:flex;gap:8px;justify-content:center;margin-top:8px}.otpInput-module__otpInput___3YMVm{background:#374151;border:1px solid #4b5563;border-radius:8px;color:#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:#60a5fa;box-shadow:0 0 0 2px rgba(96,165,250,.25);outline:none}");const xt=({length:t=6,value:i,inputMode:o="numeric",onChange:n,name:r="otp"})=>{const a=p([]),s=i.split("").concat(Array(t).fill("")).slice(0,t),l=(e,t)=>{var i;if(t.length>1)d(e,t);else if(!t||(i=t,"numeric"===o?/^\d$/.test(i):/^[a-zA-Z]$/.test(i))){const i=[...s];i[e]=t;const o=i.join("");n(o),t&&a.current[e+1]&&a.current[e+1]?.focus()}},d=(e,i)=>{let r=i;r="numeric"===o?i.replace(/\D/g,""):i.replace(/[^a-zA-Z]/g,"");const l=r.slice(0,t).split(""),d=[...s];l.forEach((i,o)=>{e+o<t&&(d[e+o]=i)}),n(d.join("")),a.current[Math.min(e+l.length,t-1)]?.focus()};return e("div",{className:kt,role:"group","aria-label":"One-time password input",onPaste:e=>{e.preventDefault(),d(0,e.clipboardData.getData("text"))},children:s.map((i,d)=>e("input",{ref:e=>a.current[d]=e,type:"text",inputMode:"numeric"===o?"numeric":"text",autoComplete:"one-time-code",name:`${r}-${d}`,maxLength:1,value:i,className:wt,onChange:e=>l(d,e.target.value),onKeyDown:e=>((e,i)=>{if("Backspace"===i.key){i.preventDefault();const t=[...s];s[e]?(t[e]="",n(t.join(""))):e>0&&(t[e-1]="",n(t.join("")),a.current[e-1]?.focus())}"ArrowLeft"===i.key&&e>0&&a.current[e-1]?.focus(),"ArrowRight"===i.key&&e<t-1&&a.current[e+1]?.focus()})(d,e),"aria-label":`Digit ${d+1}`},d))})},Pt=()=>{const i=y(),o=b(),{refreshSession:n}=X(),r="login"===o.state?.flow,[a,s]=g(""),[l,d]=g(null),[c,u]=g(""),[m,p]=g(!1),[f,h]=g(""),[v,k]=g(300),w=te(),x=async()=>{if(p(!0),!l){const{error:e}=r?await w.verifyLoginPhoneOtp(a):await w.verifyPhoneOtp(a);if(e)u("Verification failed.");else{if(r)return await n(),void i("/");d(!0)}}p(!1)},P=async()=>{h(""),await(async()=>{u("");const{error:e}=r?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 _(()=>{const e=setInterval(()=>{k(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),_(()=>{l&&!r&&(async()=>{const{error:e}=await w.requestEmailOtp();e?u("Failed to send Email code. If this persists, refresh the page and try registering again."):i(_e)})()},[l,r,i,w]),e("div",{className:dt,children:t("div",{className:ct,children:[e("h2",{className:ut,children:"Verify Your Phone Number"}),e("p",{className:_t,children:"Enter the code sent to your phone number."}),c&&e("p",{className:mt,children:c}),f&&e("p",{className:gt,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:pt,children:[t("div",{children:[t("label",{htmlFor:"phoneCode",className:ft,children:["Phone Verification Code ",(N=l,!0===N?e("span",{className:"text-green-400 ml-2",children:"✅"}):!1===N?e("span",{className:"text-red-400 ml-2",children:"❌"}):null)," -"," ",t("span",{className:ht,children:["Code expires in: ",(S=v,`${Math.floor(S/60).toString().padStart(2,"0")}:${(S%60).toString().padStart(2,"0")}`)]})]}),e(xt,{length:6,value:a,onChange:s}),e("button",{type:"button",onClick:()=>P(),className:yt,children:"Resend code to phone"})]}),e("button",{type:"submit",className:bt,children:m?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>i("/login"),className:vt,children:"Back to login"})]})]})});var S,N},St=()=>{const i=y(),o=b(),{refreshSession:n}=X(),r=te(),{passkeySupported:a}=le(),s="login"===o.state?.flow,[l,d]=g(!1),[c,u]=g(""),[m,p]=g(300),[f,h]=g(""),[v,k]=g("");return _(()=>{const e=setInterval(()=>{p(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),e("div",{className:dt,children:t("div",{className:ct,children:[e("h2",{className:ut,children:"Verify Your Email"}),e("p",{className:_t,children:"We sent you a verification email. Enter the code below."}),f&&e("p",{className:mt,children:f}),v&&e("p",{className:gt,children:v}),t("form",{onSubmit:async e=>{if(e.preventDefault(),h(""),6===c.length){d(!0);try{const{error:e}=s?await r.verifyLoginEmailOtp(c):await r.verifyEmailOtp(c);if(e)return void h("Verification failed.");if(s)return await n(),void i("/");a?i(pe):(await n(),i("/"))}catch{console.error("Email OTP verification failed."),h("Verification failed.")}finally{d(!1)}}else h("Please enter a valid code.")},className:pt,children:[t("div",{children:[t("label",{htmlFor:"emailCode",className:ft,children:["Email Verification Code",t("span",{className:ht,children:[" ","— Code expires in ",(w=m,`${Math.floor(w/60).toString().padStart(2,"0")}:${(w%60).toString().padStart(2,"0")}`)]})]}),e(xt,{length:6,value:c,onChange:u,inputMode:"text"}),e("button",{type:"button",onClick:async()=>{h(""),k("");const{error:e}=s?await r.requestLoginEmailOtp():await r.requestEmailOtp();e?h("Failed to send Email code. If this persists, refresh the page and try again."):k("Verification email has been resent.")},className:yt,children:"Resend code to email"})]}),e("button",{type:"submit",className:bt,disabled:l,children:l?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>i("/login"),className:vt,children:"Back to login"})]})]})});var w};var Nt={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"};he(".verifyMagiclink-module__container___qrSXf{align-items:center;color:#fff;display:flex;justify-content:center;padding:1rem}.verifyMagiclink-module__card___niKgr{background-color:#1f2937;border-radius:.5rem;box-shadow:0 0 10px rgba(0,0,0,.3);max-width:28rem;padding:1.5rem;width:100%}.verifyMagiclink-module__title___SumxD{color:#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 hsla(0,0%,100%,.15);border-radius:50%;border-top-color:#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:#34d399;height:22px;width:22px}.verifyMagiclink-module__successText___lO5Qq{color:#34d399;font-size:.9rem}@keyframes verifyMagiclink-module__checkPop___-3qJu{0%{opacity:0;transform:scale(.6)}80%{transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@keyframes verifyMagiclink-module__spin___2lGzj{to{transform:rotate(1turn)}}");const Ot=()=>{const[i]=v(),o=y(),n=i.get("token"),[r,a]=g(""),[s,l]=g(""),d=te(),{refreshSession:c}=X();return _(()=>{let e=!0,t=null,i=null;return(async()=>{if(!n)return e&&a("Missing token for verification."),void console.error("No magic-link token found.");const{error:r}=await d.verifyMagicLink(n);if(r)return console.error("Failed to verify token"),void(e&&a("Failed to verify token"));await c(),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"),i=setTimeout(()=>{e&&o("/")},900))})(),()=>{e=!1,t?.close(),i&&clearTimeout(i)}},[n,d,o,c]),e("div",{className:Nt.container,children:t("div",{className:Nt.card,children:[e("h1",{className:Nt.title,children:"Verifying your login"}),t("div",{className:Nt.verificationContent,children:[!s&&!r&&e("div",{className:Nt.spinner}),s&&e("div",{className:Nt.successIcon,children:e("svg",{viewBox:"0 0 24 24",className:Nt.checkIcon,fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M5 13l4 4L19 7"})})}),!s&&!r&&e("p",{className:Nt.helperText,children:"Please wait while we securely verify your sign-in link."}),s&&e("p",{className:Nt.successText,children:"Login verified. Redirecting…"}),r&&e("p",{className:Nt.error,children:r})]})]})})},Tt={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."},Ct=()=>{const{finishOAuthLogin:o}=X(),n=y(),[r]=v(),[a,s]=g(""),l=p(!1);return _(()=>{if(l.current)return;l.current=!0;const e=r.get("code"),t=r.get("state"),i=sessionStorage.getItem(Le);e&&t&&i?o({providerId:i,code:e,state:t}).then(({error:e})=>{if(e){const t=T(e);return void s(t?Tt[t]:"We could not complete sign-in. Please try again.")}sessionStorage.removeItem(Le),n("/")}):s("This sign-in link is missing required information.")},[o,n,r]),t("div",{className:Nt.container,children:[e("h2",{className:Nt.title,children:a?"Sign-in failed":"Completing sign-in..."}),a&&t(i,{children:[e("p",{children:a}),e("button",{type:"button",onClick:()=>n("/login"),children:"Back to login"})]})]})};var Mt="magiclink-module__container___45zcA",It="magiclink-module__card___Au9oN",At="magiclink-module__iconWrapper___k5ndr",zt="magiclink-module__mailIcon___Pwb7q",Et="magiclink-module__iconRing___bdLvf",Ft="magiclink-module__heading___b9cre",Ut="magiclink-module__message___kiVFj",Lt="magiclink-module__identifier___JtcFM",Rt="magiclink-module__helperText___7Mlfh",Bt="magiclink-module__actions___64I-3",qt="magiclink-module__secondaryButton___BntAI",jt="magiclink-module__cooldown___Ib4rm",Jt="magiclink-module__linkButton___maJiv";he(".magiclink-module__container___45zcA{align-items:center;color:#fff;display:flex;justify-content:center}.magiclink-module__card___Au9oN{background-color:#1f2937;border-radius:.75rem;box-shadow:0 10px 25px 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:#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:#d1d5db;font-size:.95rem;line-height:1.4;margin-bottom:1rem}.magiclink-module__identifier___JtcFM{background: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:#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:#111827;border:1px solid #374151;border-radius:8px;color:#fff;cursor:pointer;font-weight:500;padding:.65rem}.magiclink-module__secondaryButton___BntAI:hover:not(:disabled){background:#1f2937}.magiclink-module__secondaryButton___BntAI:disabled{cursor:not-allowed;opacity:.5}.magiclink-module__cooldown___Ib4rm{color:#9ca3af;font-size:.8rem}.magiclink-module__linkButton___maJiv{background:none;border:none;color:#a5b4fc;cursor:pointer;font-size:.85rem;margin-top:.4rem}.magiclink-module__linkButton___maJiv:hover{text-decoration:underline}");const Gt=()=>{const{refreshSession:i}=X(),o=y(),n=b(),r=te(),a=n.state?.identifier,[s,l]=g(30);_(()=>{const e=setInterval(()=>{l(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]);const d=f(async()=>{const{data:e,error:t}=await r.checkMagicLink();return!t&&"Success"===e?.message},[r]);return _(()=>{const e=new BroadcastChannel("seamless-auth");return e.onmessage=async e=>{"MAGIC_LINK_AUTH_SUCCESS"===e.data?.type&&await d()&&(await i(),o("/"))},()=>{e.close()}},[d,o,i]),_(()=>{const e=setInterval(async()=>{try{await d()&&(await i(),o("/"))}catch{}},5e3);return()=>clearInterval(e)},[d,i,o]),e("div",{className:Mt,children:t("div",{className:It,children:[t("div",{className:At,children:[e("div",{className:Et}),t("svg",{className:zt,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:Ft,children:"Check your email"}),e("p",{className:Ut,children:"If an account exists for this address, we sent a secure sign-in link."}),a&&e("div",{className:Lt,children:a}),e("p",{className:Rt,children:"Open the email and click the link to finish signing in."}),e("p",{className:Rt,children:"Didn’t receive anything? Check your spam folder or try creating a new account."}),t("div",{className:Bt,children:[e("button",{className:qt,disabled:s>0,onClick:async()=>{s>0||(await r.requestMagicLink(),l(30))},children:"Resend link"}),s>0&&t("div",{className:jt,children:["Available in ",s,"s"]}),e("button",{className:Jt,onClick:()=>o("/login"),children:"Change email or phone"})]})]})})},Dt=()=>t(k,{children:[e(w,{path:de,element:e(Be,{})}),e(w,{path:ce,element:e(je,{})}),e(w,{path:ue,element:e(Pt,{})}),e(w,{path:_e,element:e(St,{})}),e(w,{path:me,element:e(Ot,{})}),e(w,{path:ge,element:e(Ct,{})}),e(w,{path:pe,element:e(lt,{})}),e(w,{path:fe,element:e(Gt,{})}),e(w,{path:"*",element:e(x,{to:de,replace:!0})})]});export{ee as AuthProvider,Dt as AuthRoutes,S as SeamlessAuthError,$ as createSeamlessAuthClient,U as encodePrfSalt,j as extractPasskeyPrfResult,T as getOAuthErrorCode,C as getWebAuthnErrorDetail,ne as hasNonPasskeyLoginMethod,K as hasScopedRole,B as isPasskeyPrfSupported,V as roleGrantsAccess,X as useAuth,te as useAuthClient,oe as useLoginMethods,le as usePasskeySupport};
|
|
1
|
+
import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{browserSupportsWebAuthn as a,bufferToBase64URLString as o,base64URLStringToBuffer as n,startAuthentication as i,startRegistration as s,WebAuthnError as l}from"@simplewebauthn/browser";import{createContext as d,useMemo as c,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 v,useSearchParams as b,Routes as k,Route as x,Navigate as w}from"react-router-dom";import P from"libphonenumber-js";class S extends Error{constructor(e,t,r,a){super(e),this.name="SeamlessAuthError",this.status=t,this.body=r,this.cause=a}}const N={oauth_missing_email:!0,oauth_email_not_verified:!0,oauth_missing_subject:!0};function O(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=O(e.body)??O(e.body.details);return"string"==typeof t&&Object.prototype.hasOwnProperty.call(N,t)?t:void 0}function C(e){if(!(e instanceof S)||("object"!=typeof(t=e.cause)||null===t||"string"!=typeof t.name))return;var t;const{name:r,code:a,message:o}=e.cause;return{name:r,code:"string"==typeof a?a:void 0,message:"string"==typeof o?o:""}}async function M(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 I(e){try{return await e.json()}catch{return}}async function A(e,t){let r;try{r=await e}catch{return{data:null,error:new S(t,0)}}return r.ok?{data:await I(r),error:null}:{data:null,error:await M(r,t)}}function z(e){return{data:e,error:null}}function E(e,t=0,r,a){return{data:null,error:new S(e,t,r,a)}}function F(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 U(e){return"string"==typeof e?e:o(F(e))}function L(e){return"string"==typeof e?n(e):e}function R(e){return{...e.credentialId?{credentialId:e.credentialId}:{},prf:{salt:U(e.salt),...e.secondSalt?{secondSalt:U(e.secondSalt)}:{}}}}async function B(){return!!a()&&("undefined"==typeof window||!1!==window.isSecureContext)&&void 0!==globalThis.PublicKeyCredential&&"undefined"!=typeof navigator&&"function"==typeof navigator.credentials?.get}function q(e){const t=e,r=t.extensions?.prf?.eval;return r?{...t,extensions:{...t.extensions,prf:{...t.extensions?.prf,eval:{...r,...r.first?{first:L(r.first)}:{},...r.second?{second:L(r.second)}:{}}}}}:e}function j(e){const t=e.clientExtensionResults,r=t?.prf?.results?.first;if(!r)return null;const a=(n=r)instanceof ArrayBuffer?new Uint8Array(n):new Uint8Array(n.buffer,n.byteOffset,n.byteLength);var n;return{credentialId:e.id,output:a,outputBase64url:o(F(a))}}function J(e){const t=e.clientExtensionResults;return t?.prf?.results?{...e,clientExtensionResults:{...e.clientExtensionResults,prf:{...t.prf,results:void 0}}}:e}function G(e,t){const r=e.method===t?e.method:null;return"Success"===e.message&&!0===e.fresh&&null!==r?z({fresh:!0,method:r,verifiedAt:e.verifiedAt??null,expiresAt:e.expiresAt??null,maxAgeSeconds:e.maxAgeSeconds??0}):E(e.message??"Step-up authentication failed.")}function D(e){return e?{method:"POST",body:JSON.stringify(R(e))}:{method:"POST"}}function W(e,t,r){const a=E(t,0,void 0,r),o=C(a.error);return console.error(e,o?.name??"Unknown error."),a}const $=e=>{const t=(e=>{const{authHost:t}=e;return async function(e,r){const a=`${t?.replace(/\/+$/,"")??""}/auth${e.startsWith("/")?e:`/${e}`}`,o=null!=r?.body,n={...r,credentials:"include",headers:{...o?{"Content-Type":"application/json"}:{},...r?.headers}};return fetch(a,n)}})({authHost:e.apiHost});return{getCurrentUser:()=>A(t("users/me",{method:"GET"}),"Failed to load the current user."),login:e=>A(t("/login",{method:"POST",body:JSON.stringify(e)}),"Failed to start sign-in."),loginWithPasskey:async e=>{const r=await A(t("/webAuthn/login/start",{...D(e?.prf)}),"Failed to start passkey login.");if(r.error)return r;let a,o;try{const e=await i({optionsJSON:q(r.data)});a=j(e),o=J(e)}catch(e){return W("Passkey login error.","Passkey login failed.",e)}const n=await A(t("/webAuthn/login/finish",{method:"POST",body:JSON.stringify({assertionResponse:o})}),"Failed to verify passkey.");return n.error?n:"Success"!==n.data?.message?E(n.data?.message??"Passkey login failed."):z(a?{prf:a}:{})},logout:(e={})=>A(t("all_sessions"===e.scope?"/logout/all":"/logout",{method:"DELETE"}),"Failed to sign out."),logoutAllSessions:()=>A(t("/logout/all",{method:"DELETE"}),"Failed to sign out of all sessions."),deleteUser:()=>A(t("/users/delete",{method:"DELETE"}),"Failed to delete the account."),register:e=>A(t("/registration/register",{method:"POST",body:JSON.stringify({email:e.email,...e.phone?{phone:e.phone}:{}})}),"Failed to register."),requestPhoneOtp:()=>A(t("/otp/generate-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyPhoneOtp:e=>A(t("/otp/verify-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestLoginPhoneOtp:()=>A(t("/otp/generate-login-phone-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the SMS code."),verifyLoginPhoneOtp:e=>A(t("/otp/verify-login-phone-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the SMS code."),requestEmailOtp:()=>A(t("/otp/generate-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyEmailOtp:e=>A(t("/otp/verify-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestLoginEmailOtp:()=>A(t("/otp/generate-login-email-otp",{method:"POST",body:JSON.stringify({})}),"Failed to send the email code."),verifyLoginEmailOtp:e=>A(t("/otp/verify-login-email-otp",{method:"POST",body:JSON.stringify({verificationToken:e})}),"Failed to verify the email code."),requestMagicLink:()=>A(t("/magic-link",{method:"POST",body:JSON.stringify({})}),"Failed to send the magic link."),checkMagicLink:()=>A(t("/magic-link/check",{method:"GET"}),"Failed to check the magic link."),verifyMagicLink:e=>A(t(`/magic-link/verify/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to verify the magic link."),listOAuthProviders:()=>A(t("/oauth/providers",{method:"GET"}),"Failed to list OAuth providers."),getPublicSystemConfig:()=>A(t("/system-config/public",{method:"GET"}),"Failed to read the public system configuration."),startOAuthLogin:e=>A(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=>A(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),a=await A(t(function(e){const t=new URLSearchParams;e.requirePrf?t.set("requirePrf","true"):e.requestPrf&&t.set("requestPrf","true");const r=t.toString();return"/webAuthn/register/start"+(r?`?${r}`:"")}(r),{method:"GET"}),"Failed to fetch passkey registration challenge.");if(a.error)return a;let o;try{o=await s({optionsJSON:a.data})}catch(e){return e instanceof l?E(e.name,0,void 0,e):W("Passkey registration error.","Passkey registration failed.",e)}const n=function(e){const t=e.clientExtensionResults;return!0===t?.prf?.enabled}(o),i=await A(t("/webAuthn/register/finish",{method:"POST",body:JSON.stringify({attestationResponse:o,metadata:{...r.metadata,prfCapable:n}})}),"Verification failed.");return i.error?i:z({credentialId:o.id,prfCapable:n})},isPasskeyPrfSupported:B,getStepUpStatus:()=>A(t("/step-up/status",{method:"GET"}),"Failed to load step-up status."),verifyStepUpWithPasskey:async()=>{const e=await A(t("/step-up/webauthn/start",{method:"POST"}),"Failed to start step-up authentication.");if(e.error)return e;let r;try{r=J(await i({optionsJSON:q(e.data)}))}catch(e){return W("Step-up authentication error.","Step-up authentication failed.",e)}const a=await A(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:r})}),"Failed to verify step-up authentication.");return a.error?a:G(a.data??{},"webauthn")},verifyStepUpWithPasskeyPrf:async e=>{const r=await A(t("/step-up/webauthn/start",{...D(e)}),"Failed to start step-up authentication.");if(r.error)return r;let a,o;try{const e=await i({optionsJSON:q(r.data)});a=j(e),o=J(e)}catch(e){return W("Step-up authentication error.","Step-up authentication failed.",e)}if(!a)return E("Passkey did not return PRF output.");const n=await A(t("/step-up/webauthn/finish",{method:"POST",body:JSON.stringify({assertionResponse:o})}),"Failed to verify step-up authentication.");if(n.error)return n;const s=G(n.data??{},"webauthn");return s.error?s:z({...s.data,credentialId:a.credentialId,prf:a})},getTotpStatus:()=>A(t("/totp/status",{method:"GET"}),"Failed to load authenticator status."),startTotpEnrollment:()=>A(t("/totp/enroll/start",{method:"POST"}),"Failed to start authenticator enrollment."),verifyTotpEnrollment:e=>A(t("/totp/enroll/verify",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify the authenticator code."),disableTotp:e=>A(t("/totp/disable",{method:"POST",body:JSON.stringify({code:e})}),"Failed to disable the authenticator."),verifyStepUpWithTotp:async e=>{const r=await A(t("/totp/verify-mfa",{method:"POST",body:JSON.stringify({code:e})}),"Failed to verify step-up authentication.");return r.error?r:G(r.data??{},"totp")},updateCredential:e=>A(t("users/credentials",{method:"POST",body:JSON.stringify(e)}),"Failed to update credential."),deleteCredential:e=>A(t("users/credentials",{method:"DELETE",body:JSON.stringify({id:e})}),"Failed to delete credential."),listOrganizations:()=>A(t("/organizations",{method:"GET"}),"Failed to list organizations."),createOrganization:e=>A(t("/organizations",{method:"POST",body:JSON.stringify(e)}),"Failed to create organization."),getOrganization:e=>A(t(`/organizations/${encodeURIComponent(e)}`,{method:"GET"}),"Failed to load organization."),updateOrganization:(e,r)=>A(t(`/organizations/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(r)}),"Failed to update organization."),switchOrganization:e=>A(t(`/organizations/${encodeURIComponent(e)}/switch`,{method:"POST"}),"Failed to switch organization."),listOrganizationMembers:e=>A(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"GET"}),"Failed to list organization members."),addOrganizationMember:(e,r)=>A(t(`/organizations/${encodeURIComponent(e)}/members`,{method:"POST",body:JSON.stringify(r)}),"Failed to add organization member."),updateOrganizationMember:(e,r,a)=>A(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(r)}`,{method:"PATCH",body:JSON.stringify(a)}),"Failed to update organization member."),removeOrganizationMember:(e,r)=>A(t(`/organizations/${encodeURIComponent(e)}/members/${encodeURIComponent(r)}`,{method:"DELETE"}),"Failed to remove organization member.")}};function V(e,t){const r=e.trim(),a=t.trim();if(!r||!a)return!1;if(r===a)return!0;if(r.endsWith(":*")){const e=r.slice(0,-2);return a===e||a.startsWith(`${e}:`)}if(!a.includes(":"))return!1;if(!r.includes(":"))return a.startsWith(`${r}:`);const o=r.split(":"),n=a.split(":"),i=o[o.length-1],s=n[n.length-1],l=o.slice(0,-1),d=n.slice(0,-1);return"write"===i&&"read"===s&&l.length===d.length&&l.every((e,t)=>e===d[t])}function K(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=>V(t,e)))}function H(){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 Y="seamlessauth_seen",Q={user:null,credentials:[],organizations:[],activeOrganization:null,stepUpStatus:null,isAuthenticated:!1};const Z=d(void 0),X=()=>{const e=_(Z);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e},ee=({children:t,apiHost:r,autoDetectPreviousSignin:a=!0})=>{const o=c(()=>function(e){const{apiHost:t,detectPreviousSignIn:r=!0}=e,a=$({apiHost:t}),o=e.storage??H(),n=new Set;let i=!1,s=0,l={...Q,loading:!0,hasSignedInBefore:r&&"true"===o.get(Y)};function d(e){const t={...l,...e};Object.keys(e).some(e=>l[e]!==t[e])&&(l=t,n.forEach(e=>e()))}function c(){o.set(Y,"true"),r&&d({hasSignedInBefore:!0})}function u(){d(Q)}async function m(){const e=++s;d({loading:!0});const t=await a.getCurrentUser();return i||e!==s?t:t.error?(u(),d({loading:!1}),t):(d({user:t.data.user,credentials:t.data.credentials??[],organizations:t.data.organizations??[],activeOrganization:t.data.activeOrganization??null,isAuthenticated:!0,loading:!1}),l.hasSignedInBefore||c(),t)}async function _(e){const t=await e();return t.error||await m(),t}return{getState:()=>l,subscribe:e=>(n.add(e),()=>{n.delete(e)}),actions:{login:(e,t)=>a.login({identifier:e,passkeyAvailable:t}),handlePasskeyLogin:()=>_(()=>a.loginWithPasskey()),refreshSession:m,logout:async function(){try{return await a.logout()}finally{u()}},logoutAllSessions:async function(){try{return await a.logoutAllSessions()}finally{u()}},deleteUser:async()=>{const e=await a.deleteUser();return e.error||u(),e},updateCredential:async e=>{const{data:t,error:r}=await a.updateCredential({friendlyName:e.friendlyName??null,id:e.id});if(r)return{data:null,error:r};const o=t.credential;return d({credentials:l.credentials.map(e=>e.id===o.id?{...e,...o}:e)}),{data:o,error:null}},deleteCredential:async e=>{const t=await a.deleteCredential(e);return t.error||d({credentials:l.credentials.filter(t=>t.id!==e)}),t},switchOrganization:e=>_(()=>a.switchOrganization(e)),listOAuthProviders:()=>a.listOAuthProviders(),startOAuthLogin:e=>a.startOAuthLogin(e),finishOAuthLogin:e=>_(()=>a.finishOAuthLogin(e)),refreshStepUpStatus:async()=>{const e=await a.getStepUpStatus();return d({stepUpStatus:e.error?null:e.data}),e},verifyStepUpWithPasskey:async()=>{const e=await a.verifyStepUpWithPasskey();return e.error||d({stepUpStatus:e.data}),e},verifyStepUpWithPasskeyPrf:async e=>{const t=await a.verifyStepUpWithPasskeyPrf(e);return t.error||d({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 a.verifyStepUpWithTotp(e);return t.error||d({stepUpStatus:t.data}),t},hasRole:e=>l.user?.roles?.includes(e),hasScopedRole:e=>l.user?K(l.user.roles,e):void 0,markSignedIn:c},destroy:()=>{i=!0,n.clear()}}}({apiHost:r,detectPreviousSignIn:a}),[r,a]),n=u(o.subscribe,o.getState,o.getState);m(()=>{o.actions.refreshSession()},[o]);const i=c(()=>({...n,...o.actions,apiHost:r}),[n,o,r]);return e(Z.Provider,{value:i,children:t})},te=()=>{const{apiHost:e}=X();return c(()=>$({apiHost:e}),[e])},re=["passkey","magic_link"],ae=()=>{const e=te(),[t,r]=g(null),[a,o]=g(!0);return m(()=>{let t=!0;return(async()=>{try{const{data:a,error:o}=await e.getPublicSystemConfig();t&&!o&&a?.loginMethods?.length&&r(a.loginMethods)}catch{}finally{t&&o(!1)}})(),()=>{t=!1}},[e]),{loginMethods:t,loading:a}},oe=e=>Boolean(e?.some(e=>"passkey"!==e)),ne=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[a,o]=r;return!(!/^[A-Za-z0-9._%+-]+$/.test(a)||a.startsWith(".")||a.endsWith(".")||a.includes(".."))&&!(!/^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/.test(o)||o.startsWith("-")||o.endsWith("-")||o.startsWith(".")||o.endsWith(".")||o.includes(".."))},ie=e=>{const t=P(e);return t?.isValid()||!1};async function se(){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 le=()=>{const[e,t]=g(!1),[r,a]=g(!0);return m(()=>{let e=!0;return(async()=>{try{const r=await se();e&&t(r)}catch{e&&t(!1)}finally{e&&a(!1)}})(),()=>{e=!1}},[]),{passkeySupported:e,loading:r}},de="/login",ce="/passkey-login",ue="/verify-phone-otp",me="/verify-email-otp",_e="/verify-magiclink",ge="/oauth/callback",pe="/register-passkey",fe="/magic-link-sent";function he(e,t){void 0===t&&(t={});var r=t.insertAt;if(e&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===r&&a.firstChild?a.insertBefore(o,a.firstChild):a.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var ye="login-module__container___YggDx",ve="login-module__card___Ub-Py",be="login-module__heading___neEqb",ke="login-module__inputGroup___P6qgS",xe="login-module__label___mx5vu",we="login-module__input___U07lW",Pe="login-module__helperText___kDQ4-",Se="login-module__error___40zxh",Ne="login-module__button___0kFBs",Oe="login-module__toggle___1JiG1",Te="login-module__fallbackCard___HdIk-",Ce="login-module__fallbackHeader___-il2v",Me="login-module__fallbackDescription___ea5EB",Ie="login-module__fallbackActions___AD3ni",Ae="login-module__fallbackActionButton___lFgWf",ze="login-module__actionTitle___ycrMp",Ee="login-module__actionSubtext___opaIV",Fe="login-module__linkButton___5lsoe";he(".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 Ue=({identifier:r,onMagicLink:a,onEmailOtp:o,onPhoneOtp:n,onPasskeyRetry:i,loginMethods:s})=>{const l=new Set(s??["passkey","magic_link","phone_otp"]),d=l.has("magic_link")&&ne(r),c=l.has("email_otp")&&Boolean(o)&&ne(r),u=l.has("phone_otp")&&ie(r),m=l.has("passkey")&&Boolean(i);return d||c||u||m?t("div",{className:Te,children:[e("div",{className:Ce,children:"Choose a sign-in method"}),e("p",{className:Me,children:"Choose another secure sign-in method."}),t("div",{className:Ie,children:[d&&t("button",{type:"button",className:Ae,onClick:a,children:[e("span",{className:ze,children:"Email Magic Link"}),e("span",{className:Ee,children:"Send a secure sign-in link to your email"})]}),c&&t("button",{type:"button",className:Ae,onClick:o,children:[e("span",{className:ze,children:"Email Code"}),e("span",{className:Ee,children:"Receive a one-time code by email"})]}),u&&t("button",{type:"button",className:Ae,onClick:n,children:[e("span",{className:ze,children:"Text Message Code"}),e("span",{className:Ee,children:"Receive a one-time code via SMS"})]})]}),m&&e("button",{type:"button",className:Fe,onClick:i,children:"Try passkey anyway"})]}):null},Le="seamless:oauth:provider",Re=()=>{const{listOAuthProviders:r,startOAuthLogin:a}=X(),o=h("/oauth/callback"),[n,i]=g([]),[s,l]=g("");if(m(()=>{let e=!0;return r().then(({data:t})=>{e&&i(t?.providers??[])}),()=>{e=!1}},[r]),0===n.length)return null;return t("div",{className:Ie,children:[n.map(r=>e("button",{type:"button",className:Ae,onClick:()=>(async e=>{l(""),sessionStorage.setItem(Le,e);const{data:t,error:r}=await a({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:ze,children:["Continue with ",r.name]})},r.id)),s&&e("p",{className:Se,children:s})]})},Be=()=>{const a=y(),{hasSignedInBefore:o,login:n,handlePasskeyLogin:i}=X(),s=te(),{passkeySupported:l}=le(),{loginMethods:d}=ae(),[c,u]=g(""),[_,p]=g(""),[f,h]=g("register"),[v,b]=g(""),[k,x]=g(""),[w,P]=g(""),[S,N]=g(!1),[O,T]=g(null);m(()=>{o&&h("login")},[o]);return e("div",{className:ye,children:t("div",{className:ve,children:[e("h2",{className:be,children:"login"===f?"Sign In":"Create Account"}),t(r,{children:[t("form",{onSubmit:async e=>{e.preventDefault(),b(""),N(!1);try{if("login"===f){const{data:e,error:t}=await n(c,l);if(t)return void b("Failed to start sign-in. Please try again.");const r=e?.loginMethods?.length?e.loginMethods:d??re;if(T(r),l&&r.includes("passkey")){const{error:e}=await i();return e?(N(!0),void b("Passkey sign-in could not be completed. Choose another sign-in method.")):void a("/")}return void N(!0)}"register"===f&&await(async()=>{b("");const{data:e,error:t}=await s.register({email:_});t?b("Failed to register. Please try again."):"Success"===e.message?a(me):b("An unexpected error occurred. Try again. If the problem persists, contact support.")})()}catch{console.error("Failed to continue sign-in."),b("Failed to continue sign-in. Please try again.")}},children:["login"===f&&t("div",{className:ke,children:[e("label",{htmlFor:"identifier",className:xe,children:"Email Address / Phone Number"}),e("input",{id:"identifier",type:"text",value:c,onChange:e=>{const t=e.target.value;u(t)},autoComplete:"off",placeholder:"Email or Phone Number",className:we,onBlur:()=>{if(c){const e=ne(c)||ie(c);P(e?"":"Please enter a valid email or phone number")}},required:!0}),e("p",{className:Pe,children:"Phone numbers must include a country code e.g. +1"}),S&&e(Ue,{identifier:c,onMagicLink:async()=>{const{error:e}=await s.requestMagicLink();e?b("Failed to send magic link."):a(fe,{state:{identifier:c}})},onEmailOtp:async()=>{const{error:e}=await s.requestLoginEmailOtp();e?b("Failed to send email code."):a(me,{state:{flow:"login"}})},onPhoneOtp:async()=>{const{error:e}=await s.requestLoginPhoneOtp();e?b("Failed to send OTP."):a(ue,{state:{flow:"login"}})},onPasskeyRetry:l?i:void 0,loginMethods:O}),w&&e("p",{className:Se,children:w})]}),"register"===f&&t("div",{className:ke,children:[e("label",{htmlFor:"email",className:xe,children:"Email Address"}),e("input",{id:"email",type:"email",value:_,onChange:e=>{const t=e.target.value;p(t)},autoComplete:"off",className:we,onBlur:()=>{if(_){const e=ne(_);x(e?"":"Please enter a valid email")}},required:!0}),k&&e("p",{className:Se,children:k})]}),e("button",{type:"submit",className:Ne,disabled:!("login"===f&&c?ne(c)||ie(c):ne(_)),children:"login"===f?"Login":"Register"}),v&&e("p",{className:Se,children:v}),e("button",{type:"button",onClick:()=>h("login"===f?"register":"login"),className:Oe,children:"login"===f?"Don't have an account? Create one":"Already have an account? Sign in"})]}),e(Re,{})]})]})})};var qe={container:"passKeyLogin-module__container___IUKxF",card:"passKeyLogin-module__card___2sKM1",title:"passKeyLogin-module__title___HZxvc",button:"passKeyLogin-module__button___FvR4I"};he(".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 je=()=>{const r=y(),{handlePasskeyLogin:a}=X(),[o,n]=g("");return e("div",{className:qe.container,children:t("div",{className:qe.card,children:[e("h2",{className:qe.title,children:"Login with Passkey"}),e("button",{onClick:async()=>{n("");const{error:e}=await a();e?n("Passkey sign-in could not be completed. Try another sign-in method."):r("/")},className:qe.button,children:"Use Passkey"}),o&&e("p",{className:qe.error,children:o})]})})};var Je="registerPasskey-module__container___jqEh8",Ge="registerPasskey-module__card___MJAyC",De="registerPasskey-module__loading___Q4i1x",We="registerPasskey-module__spinner___V1nhd",$e="registerPasskey-module__supported___ihTih",Ve="registerPasskey-module__title___vn2Qu",Ke="registerPasskey-module__description___AWmO-",He="registerPasskey-module__button___D3b4B",Ye="registerPasskey-module__message___RiOw-",Qe="registerPasskey-module__success___HP5aX",Ze="registerPasskey-module__error___hGiqE",Xe="registerPasskey-module__skip___1hDyU";he(".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}");var et="deviceNameModal-module__overlay___fmdPd",tt="deviceNameModal-module__modal___uoEda",rt="deviceNameModal-module__description___-HMTA",at="deviceNameModal-module__input___4vQMI",ot="deviceNameModal-module__actions___KXw7b",nt="deviceNameModal-module__primary___9Ozlk",it="deviceNameModal-module__secondary___HILhc";he(".deviceNameModal-module__overlay___fmdPd{align-items:center;background:var(--seamless-overlay,rgba(0,0,0,.45));display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.deviceNameModal-module__modal___uoEda{background:var(--seamless-surface,#1f2937);border-radius:12px;box-shadow:0 20px 40px var(--seamless-shadow,rgba(0,0,0,.15));color:var(--seamless-text,#fff);max-width:420px;padding:24px;width:100%}.deviceNameModal-module__description___-HMTA{color:var(--seamless-text,#fff);font-size:14px;margin-bottom:16px}.deviceNameModal-module__input___4vQMI{border:1px solid var(--seamless-border,#ddd);border-radius:8px;font-size:14px;margin-bottom:20px;padding:10px 12px;width:100%}.deviceNameModal-module__actions___KXw7b{display:flex;gap:10px;justify-content:flex-end}.deviceNameModal-module__primary___9Ozlk{background:var(--seamless-accent,#2563eb);border:none;border-radius:8px;color:var(--seamless-accent-contrast,#fff);cursor:pointer;padding:8px 14px}.deviceNameModal-module__secondary___HILhc{background:transparent;border:1px solid var(--seamless-border,#ccc);border-radius:8px;cursor:pointer;padding:8px 14px}");const st=({isOpen:r,onCancel:a,onConfirm:o})=>{const[n,i]=g("");return r?e("div",{className:et,children:t("div",{className:tt,children:[e("h3",{children:"Name This Device"}),e("p",{className:rt,children:"Give this passkey a friendly name so you can recognize it later."}),e("input",{type:"text",placeholder:"e.g., MacBook Pro, iPhone, YubiKey",value:n,onChange:e=>i(e.target.value),className:at,autoFocus:!0}),t("div",{className:ot,children:[e("button",{onClick:a,className:it,children:"Cancel"}),e("button",{onClick:()=>o(n.trim()),disabled:!n.trim(),className:nt,children:"Continue"})]})]})}):null},lt=()=>{const{refreshSession:a}=X(),o=te(),{passkeySupported:n,loading:i}=le(),{loginMethods:s,loading:l}=ae(),d=y(),[c,u]=g("idle"),[m,_]=g(""),[p,f]=g(!1),[h,v]=g(null),b=oe(s),k=async()=>{await a(),d("/")};return t(r,{children:[e("div",{className:Je,children:e("div",{className:Ge,children:t("div",i||l?{className:De,children:[e("div",{className:We}),e("span",{children:"Checking for Passkey Support..."})]}:n?{className:$e,children:[e("h2",{className:Ve,children:"Secure Your Account with a Passkey"}),e("p",{className:Ke,children:"Your device supports passkeys! Register one to skip passwords forever."}),e("button",{onClick:()=>{const{platform:e,browser:t,deviceInfo:r}=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}`}}();v({platform:e,browser:t,deviceInfo:r}),f(!0)},disabled:"loading"===c,className:He,children:"loading"===c?"Registering...":"Register Passkey"}),m&&e("p",{className:`${Ye} ${"success"===c?Qe:Ze}`,children:m}),b&&e("button",{type:"button",onClick:k,disabled:"loading"===c,className:Xe,children:"Skip for now"})]}:{className:$e,children:[e("h2",{className:Ve,children:"Passkeys are not available here"}),e("p",{className:Ke,children:b?"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."}),b&&e("button",{type:"button",onClick:k,className:He,children:"Continue"})]})})}),e(st,{isOpen:p,onCancel:()=>{f(!1),v(null)},onConfirm:async e=>{if(!h)return;const t={friendlyName:e,...h};u("loading");try{const{error:e}=await o.registerPasskey(t);if(e)throw e;await a(),u("success"),_("Passkey registered successfully."),d("/")}catch{console.error("Passkey registration failed."),u("error"),_("Error registering passkey.")}finally{f(!1),v(null)}}})]})};var dt="verifyOTP-module__container___wgoDE",ct="verifyOTP-module__card___3cs2p",ut="verifyOTP-module__title___fZ-1d",mt="verifyOTP-module__subtitle___dGSu3",_t="verifyOTP-module__error___GEtlG",gt="verifyOTP-module__success___46TjG",pt="verifyOTP-module__form___jiGG-",ft="verifyOTP-module__label___Zq5Mi",ht="verifyOTP-module__timer___smq-a",yt="verifyOTP-module__resend___PlmkG",vt="verifyOTP-module__button___8pIuO",bt="verifyOTP-module__toggle___wbzVa";he(".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 kt="otpInput-module__otpContainer___MUjby",xt="otpInput-module__otpInput___3YMVm";he(".otpInput-module__otpContainer___MUjby{display:flex;gap:8px;justify-content:center;margin-top:8px}.otpInput-module__otpInput___3YMVm{background:var(--seamless-surface-raised,#374151);border:1px solid var(--seamless-border,#4b5563);border-radius:8px;color:var(--seamless-text,#fff);font-size:1.2rem;height:48px;text-align:center;transition:border-color .15s ease,box-shadow .15s ease;width:42px}.otpInput-module__otpInput___3YMVm:focus{border-color:var(--seamless-accent,#60a5fa);box-shadow:0 0 0 2px var(--seamless-accent,rgba(96,165,250,.25));outline:none}");const wt=({length:t=6,value:r,inputMode:a="numeric",onChange:o,name:n="otp"})=>{const i=p([]),s=r.split("").concat(Array(t).fill("")).slice(0,t),l=(e,t)=>{var r;if(t.length>1)d(e,t);else if(!t||(r=t,"numeric"===a?/^\d$/.test(r):/^[a-zA-Z]$/.test(r))){const r=[...s];r[e]=t;const a=r.join("");o(a),t&&i.current[e+1]&&i.current[e+1]?.focus()}},d=(e,r)=>{let n=r;n="numeric"===a?r.replace(/\D/g,""):r.replace(/[^a-zA-Z]/g,"");const l=n.slice(0,t).split(""),d=[...s];l.forEach((r,a)=>{e+a<t&&(d[e+a]=r)}),o(d.join("")),i.current[Math.min(e+l.length,t-1)]?.focus()};return e("div",{className:kt,role:"group","aria-label":"One-time password input",onPaste:e=>{e.preventDefault(),d(0,e.clipboardData.getData("text"))},children:s.map((r,d)=>e("input",{ref:e=>i.current[d]=e,type:"text",inputMode:"numeric"===a?"numeric":"text",autoComplete:"one-time-code",name:`${n}-${d}`,maxLength:1,value:r,className:xt,onChange:e=>l(d,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("")),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()})(d,e),"aria-label":`Digit ${d+1}`},d))})},Pt=()=>{const r=y(),a=v(),{refreshSession:o}=X(),n="login"===a.state?.flow,[i,s]=g(""),[l,d]=g(null),[c,u]=g(""),[_,p]=g(!1),[f,h]=g(""),[b,k]=g(300),x=te(),w=async()=>{if(p(!0),!l){const{error:e}=n?await x.verifyLoginPhoneOtp(i):await x.verifyPhoneOtp(i);if(e)u("Verification failed.");else{if(n)return await o(),void r("/");d(!0)}}p(!1)},P=async()=>{h(""),await(async()=>{u("");const{error:e}=n?await x.requestLoginPhoneOtp():await x.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&&!n&&(async()=>{const{error:e}=await x.requestEmailOtp();e?u("Failed to send Email code. If this persists, refresh the page and try registering again."):r(me)})()},[l,n,r,x]),e("div",{className:dt,children:t("div",{className:ct,children:[e("h2",{className:ut,children:"Verify Your Phone Number"}),e("p",{className:mt,children:"Enter the code sent to your phone number."}),c&&e("p",{className:_t,children:c}),f&&e("p",{className:gt,children:f}),t("form",{onSubmit:async e=>{if(e.preventDefault(),u(""),6===i.length){p(!0);try{await w()}catch{u("Unexpected error occurred.")}finally{p(!1)}}else u("Please enter a valid code.")},className:pt,children:[t("div",{children:[t("label",{htmlFor:"phoneCode",className:ft,children:["Phone Verification Code ",(N=l,!0===N?e("span",{className:"text-green-400 ml-2",children:"✅"}):!1===N?e("span",{className:"text-red-400 ml-2",children:"❌"}):null)," -"," ",t("span",{className:ht,children:["Code expires in: ",(S=b,`${Math.floor(S/60).toString().padStart(2,"0")}:${(S%60).toString().padStart(2,"0")}`)]})]}),e(wt,{length:6,value:i,onChange:s}),e("button",{type:"button",onClick:()=>P(),className:yt,children:"Resend code to phone"})]}),e("button",{type:"submit",className:vt,children:_?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>r("/login"),className:bt,children:"Back to login"})]})]})});var S,N},St=()=>{const r=y(),a=v(),{refreshSession:o}=X(),n=te(),{passkeySupported:i}=le(),s="login"===a.state?.flow,[l,d]=g(!1),[c,u]=g(""),[_,p]=g(300),[f,h]=g(""),[b,k]=g("");return m(()=>{const e=setInterval(()=>{p(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]),e("div",{className:dt,children:t("div",{className:ct,children:[e("h2",{className:ut,children:"Verify Your Email"}),e("p",{className:mt,children:"We sent you a verification email. Enter the code below."}),f&&e("p",{className:_t,children:f}),b&&e("p",{className:gt,children:b}),t("form",{onSubmit:async e=>{if(e.preventDefault(),h(""),6===c.length){d(!0);try{const{error:e}=s?await n.verifyLoginEmailOtp(c):await n.verifyEmailOtp(c);if(e)return void h("Verification failed.");if(s)return await o(),void r("/");i?r(pe):(await o(),r("/"))}catch{console.error("Email OTP verification failed."),h("Verification failed.")}finally{d(!1)}}else h("Please enter a valid code.")},className:pt,children:[t("div",{children:[t("label",{htmlFor:"emailCode",className:ft,children:["Email Verification Code",t("span",{className:ht,children:[" ","— Code expires in ",(x=_,`${Math.floor(x/60).toString().padStart(2,"0")}:${(x%60).toString().padStart(2,"0")}`)]})]}),e(wt,{length:6,value:c,onChange:u,inputMode:"text"}),e("button",{type:"button",onClick:async()=>{h(""),k("");const{error:e}=s?await n.requestLoginEmailOtp():await n.requestEmailOtp();e?h("Failed to send Email code. If this persists, refresh the page and try again."):k("Verification email has been resent.")},className:yt,children:"Resend code to email"})]}),e("button",{type:"submit",className:vt,disabled:l,children:l?"Verifying...":"Verify & Continue"}),e("button",{type:"button",onClick:()=>r("/login"),className:bt,children:"Back to login"})]})]})});var x};var Nt={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"};he(".verifyMagiclink-module__container___qrSXf{align-items:center;color:var(--seamless-text,#fff);display:flex;justify-content:center;padding:1rem}.verifyMagiclink-module__card___niKgr{background-color:var(--seamless-surface,#1f2937);border-radius:.5rem;box-shadow:0 0 10px var(--seamless-shadow,rgba(0,0,0,.3));max-width:28rem;padding:1.5rem;width:100%}.verifyMagiclink-module__title___SumxD{color:var(--seamless-text,#fff);font-size:1.5rem;font-weight:700;margin-bottom:1rem;text-align:center}.verifyMagiclink-module__verificationContent___NdsS0{align-items:center;display:flex;flex-direction:column;gap:14px;margin:20px 0}.verifyMagiclink-module__spinner___lnW1k{animation:verifyMagiclink-module__spin___2lGzj .9s linear infinite;border:3px solid var(--seamless-border,hsla(0,0%,100%,.15));border-radius:50%;border-top-color:var(--seamless-accent,#60a5fa);height:28px;width:28px}.verifyMagiclink-module__successIcon___XjFEM{align-items:center;background:rgba(16,185,129,.15);border-radius:50%;display:flex;height:36px;justify-content:center;width:36px}.verifyMagiclink-module__checkIcon___I0JOP{animation:verifyMagiclink-module__checkPop___-3qJu .25s ease-out;color:var(--seamless-success,#34d399);height:22px;width:22px}.verifyMagiclink-module__successText___lO5Qq{color:var(--seamless-success,#34d399);font-size:.9rem}@keyframes verifyMagiclink-module__checkPop___-3qJu{0%{opacity:0;transform:scale(.6)}80%{transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@keyframes verifyMagiclink-module__spin___2lGzj{to{transform:rotate(1turn)}}");const Ot=()=>{const[r]=b(),a=y(),o=r.get("token"),[n,i]=g(""),[s,l]=g(""),d=te(),{refreshSession:c}=X();return m(()=>{let e=!0,t=null,r=null;return(async()=>{if(!o)return e&&i("Missing token for verification."),void console.error("No magic-link token found.");const{error:n}=await d.verifyMagicLink(o);if(n)return console.error("Failed to verify token"),void(e&&i("Failed to verify token"));await c(),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&&a("/")},900))})(),()=>{e=!1,t?.close(),r&&clearTimeout(r)}},[o,d,a,c]),e("div",{className:Nt.container,children:t("div",{className:Nt.card,children:[e("h1",{className:Nt.title,children:"Verifying your login"}),t("div",{className:Nt.verificationContent,children:[!s&&!n&&e("div",{className:Nt.spinner}),s&&e("div",{className:Nt.successIcon,children:e("svg",{viewBox:"0 0 24 24",className:Nt.checkIcon,fill:"none",stroke:"currentColor",strokeWidth:"2",children:e("path",{d:"M5 13l4 4L19 7"})})}),!s&&!n&&e("p",{className:Nt.helperText,children:"Please wait while we securely verify your sign-in link."}),s&&e("p",{className:Nt.successText,children:"Login verified. Redirecting…"}),n&&e("p",{className:Nt.error,children:n})]})]})})},Tt={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."},Ct=()=>{const{finishOAuthLogin:a}=X(),o=y(),[n]=b(),[i,s]=g(""),l=p(!1);return m(()=>{if(l.current)return;l.current=!0;const e=n.get("code"),t=n.get("state"),r=sessionStorage.getItem(Le);e&&t&&r?a({providerId:r,code:e,state:t}).then(({error:e})=>{if(e){const t=T(e);return void s(t?Tt[t]:"We could not complete sign-in. Please try again.")}sessionStorage.removeItem(Le),o("/")}):s("This sign-in link is missing required information.")},[a,o,n]),t("div",{className:Nt.container,children:[e("h2",{className:Nt.title,children:i?"Sign-in failed":"Completing sign-in..."}),i&&t(r,{children:[e("p",{children:i}),e("button",{type:"button",onClick:()=>o("/login"),children:"Back to login"})]})]})};var Mt="magiclink-module__container___45zcA",It="magiclink-module__card___Au9oN",At="magiclink-module__iconWrapper___k5ndr",zt="magiclink-module__mailIcon___Pwb7q",Et="magiclink-module__iconRing___bdLvf",Ft="magiclink-module__heading___b9cre",Ut="magiclink-module__message___kiVFj",Lt="magiclink-module__identifier___JtcFM",Rt="magiclink-module__helperText___7Mlfh",Bt="magiclink-module__actions___64I-3",qt="magiclink-module__secondaryButton___BntAI",jt="magiclink-module__cooldown___Ib4rm",Jt="magiclink-module__linkButton___maJiv";he(".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 Gt=()=>{const{refreshSession:r}=X(),a=y(),o=v(),n=te(),i=o.state?.identifier,[s,l]=g(30);m(()=>{const e=setInterval(()=>{l(e=>e>0?e-1:0)},1e3);return()=>clearInterval(e)},[]);const d=f(async()=>{const{data:e,error:t}=await n.checkMagicLink();return!t&&"Success"===e?.message},[n]);return m(()=>{const e=new BroadcastChannel("seamless-auth");return e.onmessage=async e=>{"MAGIC_LINK_AUTH_SUCCESS"===e.data?.type&&await d()&&(await r(),a("/"))},()=>{e.close()}},[d,a,r]),m(()=>{const e=setInterval(async()=>{try{await d()&&(await r(),a("/"))}catch{}},5e3);return()=>clearInterval(e)},[d,r,a]),e("div",{className:Mt,children:t("div",{className:It,children:[t("div",{className:At,children:[e("div",{className:Et}),t("svg",{className:zt,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:Ft,children:"Check your email"}),e("p",{className:Ut,children:"If an account exists for this address, we sent a secure sign-in link."}),i&&e("div",{className:Lt,children:i}),e("p",{className:Rt,children:"Open the email and click the link to finish signing in."}),e("p",{className:Rt,children:"Didn’t receive anything? Check your spam folder or try creating a new account."}),t("div",{className:Bt,children:[e("button",{className:qt,disabled:s>0,onClick:async()=>{s>0||(await n.requestMagicLink(),l(30))},children:"Resend link"}),s>0&&t("div",{className:jt,children:["Available in ",s,"s"]}),e("button",{className:Jt,onClick:()=>a("/login"),children:"Change email or phone"})]})]})})},Dt=()=>t(k,{children:[e(x,{path:de,element:e(Be,{})}),e(x,{path:ce,element:e(je,{})}),e(x,{path:ue,element:e(Pt,{})}),e(x,{path:me,element:e(St,{})}),e(x,{path:_e,element:e(Ot,{})}),e(x,{path:ge,element:e(Ct,{})}),e(x,{path:pe,element:e(lt,{})}),e(x,{path:fe,element:e(Gt,{})}),e(x,{path:"*",element:e(w,{to:de,replace:!0})})]});export{ee as AuthProvider,Dt as AuthRoutes,S as SeamlessAuthError,$ as createSeamlessAuthClient,U as encodePrfSalt,j as extractPasskeyPrfResult,T as getOAuthErrorCode,C as getWebAuthnErrorDetail,oe as hasNonPasskeyLoginMethod,K as hasScopedRole,B as isPasskeyPrfSupported,V as roleGrantsAccess,X as useAuth,te as useAuthClient,ae as useLoginMethods,le 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/components/DeviceNameModal.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,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","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","checkMagicLink","verifyMagicLink","token","encodeURIComponent","listOAuthProviders","getPublicSystemConfig","startOAuthLogin","providerId","redirectUri","returnTo","finishOAuthLogin","state","registerPasskey","registerInput","metadata","normalizeRegisterPasskeyInput","challenge","query","URLSearchParams","requirePrf","requestPrf","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","DeviceNameModal","isOpen","onCancel","onConfirm","setValue","autoFocus","PasskeyRegistration","passkeySupportLoading","loginMethodsLoading","setStatus","setMessage","showDeviceModal","setShowDeviceModal","pendingMetadata","setPendingMetadata","canSkip","finishWithoutPasskey","platform","browser","deviceInfo","ua","userAgent","toLowerCase","brave","parseUserAgent","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/components/DeviceNameModal.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,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","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","checkMagicLink","verifyMagicLink","token","encodeURIComponent","listOAuthProviders","getPublicSystemConfig","startOAuthLogin","providerId","redirectUri","returnTo","finishOAuthLogin","state","registerPasskey","registerInput","metadata","normalizeRegisterPasskeyInput","challenge","query","URLSearchParams","requirePrf","requestPrf","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","DeviceNameModal","isOpen","onCancel","onConfirm","setValue","autoFocus","PasskeyRegistration","passkeySupportLoading","loginMethodsLoading","setStatus","setMessage","showDeviceModal","setShowDeviceModal","pendingMetadata","setPendingMetadata","canSkip","finishWithoutPasskey","platform","browser","deviceInfo","ua","userAgent","toLowerCase","brave","parseUserAgent","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]}
|