@dloizides/auth-web 1.22.1 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.23.0
4
+
5
+ **Opt-in shared registration (REGISTER-2 "One shared registration path").** `createSharedRegistrationClient` talks to
6
+ `POST /bff/register` and `POST /bff/verify-and-login`; `isRegisterAccepted` reads the result. `onSubmit` may receive a
7
+ second `RegisterSubmitMeta` argument (`idempotencyKey`, `formElapsedMs`), only when shared registration is on.
8
+ `<VerifyEmailScreen>` gains a set-new-password step and a verified-but-not-signed-in step
9
+ (`DEFAULT_VERIFY_NEW_PASSWORD_LABELS`, `DEFAULT_VERIFY_SIGN_IN_LABELS`). New `VerifyEmailPhase.NewPasswordRequired`,
10
+ four `VerifyEmailErrorCode` values (`NewPasswordRequired`, `WeakPassword`, `RateLimited`, `SignInFailed`) and
11
+ `ResetPasswordError.RateLimited`; an exhaustive `Record` over these enums must add the new keys. Plain `<RegisterForm>`
12
+ is unchanged.
13
+
14
+ Build only: devDependencies move to React 19 and React Native 0.81.5, the versions the other `@dloizides/ui-*` packages
15
+ use, so `npm ci` resolves without `legacy-peer-deps`. The published peer ranges are unchanged.
16
+
3
17
  ## 1.22.0
4
18
 
5
19
  **`<VerifyEmailScreen>` (AGORA-VERIFY-1 "agora-web has no verify-email route").** Extracted from the erevna-web /
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { ReactNode, ReactElement } from 'react';
2
- import { BffAuthClient, BffUser, DemoCredentials, HttpClient, DemoAccount, BffLoginRequest, BffForgotPasswordRequest, BffResetPasswordRequest, BffOtpRequestResult } from '@dloizides/auth-client';
2
+ import { BffAuthClient, BffUser, DemoCredentials, HttpClient, DemoAccount, BffLoginRequest, BffForgotPasswordRequest, BffResetPasswordRequest, BffOtpRequestResult, BffRegisterRequest } from '@dloizides/auth-client';
3
3
  export { BffAuthClient, BffAuthClientOptions, BffForgotPasswordRequest, BffLoginRequest, BffOtpRequestRequest, BffOtpRequestResult, BffOtpVerifyRequest, BffPinLoginRequest, BffRegisterRequest, BffResetPasswordRequest, BffUser, DemoAccount, DemoCredentials, HttpClient, HttpRequest, HttpResponse, createFetchHttpClient } from '@dloizides/auth-client';
4
4
  import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
5
5
 
@@ -460,6 +460,8 @@ interface ResetPasswordFormLabels {
460
460
  errorTokenInvalid: string;
461
461
  /** Error: a network / 5xx failure. */
462
462
  errorNetwork: string;
463
+ /** Error: the BFF rate-limited the attempt. Falls back to `errorNetwork`. */
464
+ errorRateLimited?: string;
463
465
  }
464
466
  declare const DEFAULT_RESET_PASSWORD_LABELS: ResetPasswordFormLabels;
465
467
 
@@ -571,6 +573,11 @@ type RegisterInputField = Exclude<RegisterField, 'website'>;
571
573
  * honeypot is kept (empty for real users) so the BFF can enforce it as well.
572
574
  */
573
575
  type RegisterSubmitValues = Omit<RegisterFormValues, 'confirmPassword'>;
576
+ /** Extra request data for shared registration; only passed to `onSubmit` when it is on. */
577
+ interface RegisterSubmitMeta {
578
+ idempotencyKey: string;
579
+ formElapsedMs: number;
580
+ }
574
581
  /** `true` when the password is acceptable. */
575
582
  type RegisterPasswordPolicy = (password: string) => boolean;
576
583
  type RegisterSubmitOutcome<TResult> = {
@@ -603,9 +610,20 @@ interface RegisterFormLabels {
603
610
  fields: Record<RegisterInputField, RegisterFieldLabels>;
604
611
  /** Copy for the single "Your name" input of the compact form. Defaults to English. */
605
612
  fullName?: RegisterFieldLabels;
613
+ /** Heading shown after a 202 with shared registration on. Defaults to English. */
614
+ checkEmailTitle?: string;
615
+ /** Body shown after a 202 with shared registration on. Defaults to English. */
616
+ checkEmailBody?: string;
606
617
  }
607
618
  declare const DEFAULT_REGISTER_LABELS: RegisterFormLabels;
608
619
 
620
+ /** Copy for the verified account whose automatic sign-in failed. */
621
+ interface VerifySignInLabels {
622
+ title: string;
623
+ body: string;
624
+ action: string;
625
+ actionHint: string;
626
+ }
609
627
  /** Strings rendered by `<VerifyEmailScreen>`. */
610
628
  interface VerifyEmailLabels {
611
629
  loadingTitle: string;
@@ -629,7 +647,15 @@ interface VerifyEmailLabels {
629
647
  resendSubmit: string;
630
648
  resendSubmitHint: string;
631
649
  resendConfirmation: string;
632
- }
650
+ /** Shown when the BFF rate-limits the link. Falls back to `errorGeneric`. */
651
+ errorRateLimited?: string;
652
+ /** Copy for the set-new-password step of shared registration. */
653
+ newPassword?: Partial<ResetPasswordFormLabels>;
654
+ /** Copy for the verified-but-not-signed-in step of shared registration. */
655
+ signIn?: Partial<VerifySignInLabels>;
656
+ }
657
+ declare const DEFAULT_VERIFY_NEW_PASSWORD_LABELS: ResetPasswordFormLabels;
658
+ declare const DEFAULT_VERIFY_SIGN_IN_LABELS: VerifySignInLabels;
633
659
  declare const DEFAULT_VERIFY_EMAIL_LABELS: VerifyEmailLabels;
634
660
 
635
661
  /**
@@ -1897,6 +1923,8 @@ declare const AuthTestIds: {
1897
1923
  readonly verifyEmailSuccess: "auth-verify-email-success";
1898
1924
  readonly verifyEmailContinue: "auth-verify-email-continue";
1899
1925
  readonly verifyEmailError: "auth-verify-email-error";
1926
+ readonly verifyEmailSignIn: "auth-verify-email-sign-in";
1927
+ readonly verifyEmailSignInContinue: "auth-verify-email-sign-in-continue";
1900
1928
  readonly verifyEmailResendCta: "auth-verify-email-resend-cta";
1901
1929
  readonly verifyEmailResendForm: "auth-verify-email-resend-form";
1902
1930
  readonly verifyEmailResendEmail: "auth-verify-email-resend-email";
@@ -2004,7 +2032,9 @@ declare const enum ResetPasswordError {
2004
2032
  /** The reset token is missing, expired, or already consumed. */
2005
2033
  TokenInvalid = "tokenInvalid",
2006
2034
  /** A network or 5xx failure prevented the reset from completing. */
2007
- Network = "network"
2035
+ Network = "network",
2036
+ /** The BFF rate-limited the attempt (HTTP 429). */
2037
+ RateLimited = "rateLimited"
2008
2038
  }
2009
2039
 
2010
2040
  interface UseResetPasswordFormArgs {
@@ -2508,7 +2538,7 @@ declare function resolveDemoAccounts(credentials?: DemoCredentials | null): Demo
2508
2538
 
2509
2539
  interface RegisterFormProps<TResult> {
2510
2540
  /** Send the registration (build the request, call the BFF). Throw on failure. */
2511
- onSubmit: (values: RegisterSubmitValues) => Promise<TResult>;
2541
+ onSubmit: (values: RegisterSubmitValues, meta?: RegisterSubmitMeta) => Promise<TResult>;
2512
2542
  /** Called with whatever `onSubmit` resolved to. */
2513
2543
  onSuccess: (result: TResult) => void;
2514
2544
  /** Called with the failure code; map it to localised copy. */
@@ -2533,7 +2563,7 @@ interface RegisterFormProps<TResult> {
2533
2563
  compact?: boolean;
2534
2564
  }
2535
2565
  /** Themeable registration form built on `useRegisterForm`. */
2536
- declare function RegisterForm<TResult>({ onSubmit, onSuccess, onError, onSubmitAttempt, passwordPolicy, labels: labelsProp, theme: themeProp, footer, testIdPrefix, compact, }: Readonly<RegisterFormProps<TResult>>): ReactElement;
2566
+ declare function RegisterForm<TResult>(props: Readonly<RegisterFormProps<TResult>>): ReactElement;
2537
2567
 
2538
2568
  /**
2539
2569
  * `testID` values for `<RegisterForm>`.
@@ -2558,11 +2588,12 @@ declare const RegisterTestIds: {
2558
2588
  readonly tenantNameInput: "register-tenant-name-input";
2559
2589
  readonly submitButton: "register-submit-button";
2560
2590
  readonly websiteInput: "register-website";
2591
+ readonly checkEmail: "register-check-email";
2561
2592
  };
2562
2593
 
2563
2594
  interface UseRegisterFormArgs<TResult> {
2564
2595
  /** Send the registration. Throw on failure; the message is decoded to a code. */
2565
- onSubmit: (values: RegisterSubmitValues) => Promise<TResult>;
2596
+ onSubmit: (values: RegisterSubmitValues, meta?: RegisterSubmitMeta) => Promise<TResult>;
2566
2597
  /** Password rule. Defaults to {@link isRegisterPasswordStrong}. */
2567
2598
  passwordPolicy?: RegisterPasswordPolicy;
2568
2599
  /**
@@ -2575,6 +2606,8 @@ interface UseRegisterFormArgs<TResult> {
2575
2606
  * (from the email) and the password confirmation are derived before validation.
2576
2607
  */
2577
2608
  compact?: boolean;
2609
+ /** Opt-in shared registration: `onSubmit` also gets the key and form time; an accepted result clears the passwords. */
2610
+ sharedRegistration?: boolean;
2578
2611
  }
2579
2612
  interface UseRegisterFormResult<TResult> {
2580
2613
  state: RegisterFormValues;
@@ -2585,7 +2618,7 @@ interface UseRegisterFormResult<TResult> {
2585
2618
  error: RegisterErrorCode | null;
2586
2619
  }
2587
2620
  /** Headless registration form logic. */
2588
- declare function useRegisterForm<TResult>({ onSubmit, passwordPolicy, onSubmitAttempt, compact, }: UseRegisterFormArgs<TResult>): UseRegisterFormResult<TResult>;
2621
+ declare function useRegisterForm<TResult>({ onSubmit, passwordPolicy, onSubmitAttempt, compact, sharedRegistration, }: UseRegisterFormArgs<TResult>): UseRegisterFormResult<TResult>;
2589
2622
 
2590
2623
  /**
2591
2624
  * Pure registration helpers: trimming, client-side validation and decoding of a
@@ -2919,6 +2952,10 @@ declare const enum VerifyEmailErrorCode {
2919
2952
  TokenUsed = "TOKEN_USED",
2920
2953
  KeycloakUpdateFailed = "KEYCLOAK_UPDATE_FAILED",
2921
2954
  MissingToken = "MISSING_TOKEN",
2955
+ NewPasswordRequired = "NEW_PASSWORD_REQUIRED",
2956
+ WeakPassword = "WEAK_PASSWORD",
2957
+ RateLimited = "RATE_LIMITED",
2958
+ SignInFailed = "SIGN_IN_FAILED",
2922
2959
  Generic = "GENERIC"
2923
2960
  }
2924
2961
 
@@ -2932,6 +2969,7 @@ type VerifyEmailResult = {
2932
2969
  interface VerifyEmailCapableClient {
2933
2970
  verifyEmail(token: string): Promise<VerifyEmailResult>;
2934
2971
  resendVerification(email: string, verifyUrlTemplate?: string): Promise<boolean>;
2972
+ setNewPassword?(token: string, newPassword: string): Promise<VerifyEmailResult>;
2935
2973
  }
2936
2974
 
2937
2975
  interface VerifyEmailScreenProps {
@@ -2948,11 +2986,12 @@ interface VerifyEmailScreenProps {
2948
2986
  /** Verifies the emailed token on mount, then offers Continue or a resend-link form. */
2949
2987
  declare function VerifyEmailScreen({ client, token, onContinue, theme: themeProp, labels: labelsProp, verifyUrlTemplate, onVerified, onFailed, testIdPrefix, }: Readonly<VerifyEmailScreenProps>): ReactElement;
2950
2988
 
2951
- /** The three states the verify-email screen moves through. */
2989
+ /** The states the verify-email screen moves through. */
2952
2990
  declare const enum VerifyEmailPhase {
2953
2991
  Loading = "loading",
2954
2992
  Success = "success",
2955
- Failure = "failure"
2993
+ Failure = "failure",
2994
+ NewPasswordRequired = "newPasswordRequired"
2956
2995
  }
2957
2996
 
2958
2997
  interface UseVerifyEmailArgs {
@@ -3006,4 +3045,28 @@ declare function readVerifyToken(raw: string | readonly string[] | undefined): s
3006
3045
  /** The failure body copy for a verification error code. */
3007
3046
  declare function verifyEmailErrorText(code: VerifyEmailErrorCode, labels: VerifyEmailLabels): string;
3008
3047
 
3009
- export { type AccountSettingsChangePasswordConfig, type AccountSettingsDevicePinConfig, type AccountSettingsLabels, type AccountSettingsPasskeysConfig, type AccountSettingsPreferredMethodConfig, AccountSettingsScreen, type AccountSettingsScreenProps, AuthScreen, type AuthScreenProps, AuthTestIds, type AuthTheme, type AuthThemeColors, AuthThemeProvider, type AuthThemeProviderProps, type AuthThemeRadii, type AuthThemeSpacing, type AuthThemeTypography, BffAuthStatus, type BffDeviceState, type BffLoginConfig, type BffLogoutClient, type BuildVerifyUrlTemplateOptions, CHANGE_PASSWORD_ENDPOINT, type ChangePasswordCapableClient, ChangePasswordCard, type ChangePasswordCardProps, ChangePasswordErrorKey, type ChangePasswordRequest, type ChangePasswordResult, type CreateBffAuthClientOptions, type CreateBffChangePasswordClientOptions, type CreateBffVerifyEmailClientOptions, DEFAULT_ACCOUNT_SETTINGS_LABELS, DEFAULT_AUTH_CARD_MAX_WIDTH, DEFAULT_DEMO_CREDENTIALS_HINT_LABELS, DEFAULT_DEVICE_PIN_ENROLL_LABELS, DEFAULT_DEVICE_PIN_SETTINGS_LABELS, DEFAULT_DEVICE_PIN_UNLOCK_LABELS, DEFAULT_FORGOT_PASSWORD_FIELDS_LABELS, DEFAULT_FORGOT_PASSWORD_LABELS, DEFAULT_LOGIN_LABELS, DEFAULT_OTP_LABELS, DEFAULT_PASSKEY_LOGIN_LABELS, DEFAULT_PASSKEY_SETTINGS_LABELS, DEFAULT_PIN_LABELS, DEFAULT_PREFERRED_METHOD_HINT_LABELS, DEFAULT_PREFERRED_METHOD_SETTINGS_LABELS, DEFAULT_REGISTER_LABELS, DEFAULT_RESET_PASSWORD_LABELS, DEFAULT_VERIFY_EMAIL_LABELS, DEVICE_PIN_ALLOWED_DIGITS, DEVICE_PIN_DEFAULT_DIGITS, DemoCredentialsHint, type DemoCredentialsHintLabels, type DemoCredentialsHintProps, DemoCredentialsHintVariant, type DemoCredentialsHintWiring, type DemoCredentialsLoginFormProps, type DevicePinCapableClient, type DevicePinDisableCapableClient, type DevicePinEnrollCapableClient, DevicePinEnrollErrorKey, DevicePinEnrollForm, type DevicePinEnrollFormProps, type DevicePinEnrollLabels, type DevicePinEnrollResult, DevicePinErrorKey, DevicePinInput, type DevicePinInputProps, DevicePinLengthPicker, type DevicePinLengthPickerProps, DevicePinOffer, type DevicePinOfferProps, DevicePinSettingsCard, type DevicePinSettingsCardProps, type DevicePinSettingsLabels, type DevicePinUnlockCapableClient, type DevicePinUnlockLabels, type DevicePinUnlockResult, DevicePinUnlockScreen, type DevicePinUnlockScreenProps, type DevicePinUnlockedUser, ForgotPasswordFields, type ForgotPasswordFieldsLabels, type ForgotPasswordFieldsProps, ForgotPasswordForm, type ForgotPasswordFormLabels, type ForgotPasswordFormProps, type LoginConfigCapableClient, LoginForm, type LoginFormLabels, type LoginFormProps, OtpForm, type OtpFormLabels, type OtpFormProps, OtpLoginStep, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PasskeyCeremonyMode, PasskeyCeremonyStatus, type PasskeyErrorCode, PasskeyLoginButton, type PasskeyLoginButtonProps, type PasskeyLoginLabels, PasskeySettingsCard, type PasskeySettingsCardProps, type PasskeySettingsLabels, PasswordPolicyError, type PerformBffLogoutOptions, PinForm, type PinFormLabels, type PinFormProps, type PreferencesClientOptions, type PreferredMethodClient, PreferredMethodHint, type PreferredMethodHintLabels, type PreferredMethodHintProps, PreferredMethodSettingsCard, type PreferredMethodSettingsCardProps, type PreferredMethodSettingsLabels, PrefillIntent, RESEND_VERIFICATION_ENDPOINT, RegisterErrorCode, type RegisterField, type RegisterFieldLabels, RegisterForm, type RegisterFormLabels, type RegisterFormProps, type RegisterFormValues, type RegisterInputField, type RegisterPasswordPolicy, type RegisterSubmitOutcome, type RegisterSubmitValues, RegisterTestIds, ResetPasswordError, ResetPasswordForm, type ResetPasswordFormLabels, type ResetPasswordFormProps, type RoleRoute, type RoleRouteTable, type SplitName, type UseBffAuthOptions, type UseBffAuthResult, type UseBffForgotPasswordOptions, type UseBffLoginConfigResult, type UseBffResetPasswordOptions, type UseChangePasswordArgs, type UseChangePasswordResult, type UseDemoCredentialsOptions, type UseDemoCredentialsResult, type UseDevicePinDisableArgs, type UseDevicePinDisableResult, type UseDevicePinEnrollArgs, type UseDevicePinEnrollResult, type UseDevicePinUnlockArgs, type UseDevicePinUnlockResult, type UseForgotPasswordSubmitArgs, type UseForgotPasswordSubmitResult, type UseOtpLoginOptions, type UseOtpLoginResult, type UsePasskeyCeremonyOptions, type UsePasskeyCeremonyResult, type UsePinLoginOptions, type UsePinLoginResult, type UsePreferredMethodSettingArgs, type UsePreferredMethodSettingResult, type UseRegisterFormArgs, type UseRegisterFormResult, type UseResendVerificationArgs, type UseResendVerificationResult, type UseResetPasswordFormArgs, type UseResetPasswordFormResult, type UseVerifyEmailArgs, type UseVerifyEmailResult, VERIFY_EMAIL_ENDPOINT, VERIFY_TOKEN_PLACEHOLDER, type VerifyEmailCapableClient, VerifyEmailErrorCode, type VerifyEmailLabels, VerifyEmailPhase, type VerifyEmailResult, VerifyEmailScreen, type VerifyEmailScreenProps, buildVerifyUrlTemplate, cachePreferredMethod, clearCachedPreferredMethod, collectUserRoles, createBffAuthClient, createBffChangePasswordClient, createBffVerifyEmailClient, createPreferencesClient, defaultAuthTheme, deriveUsernameFromEmail, isAllowedPinDigits, isPasswordValid, isRegisterPasswordStrong, isValidForgotPasswordEmail, performBffLogout, readCachedPreferredMethod, readPasskeyError, readPasskeyRegistered, readVerifyToken, resolveAccessibleRoutes, resolveAccountList, resolveDemoAccounts, resolveDemoCredentials, resolvePostLoginRoute, splitFullName, startPasskeyLogin, startPasskeyRegistration, syncPreferredMethodFromServer, useAuthTheme, useBffAuth, useBffForgotPassword, useBffLoginConfig, useBffResetPassword, useChangePassword, useDemoCredentials, useDevicePinDisable, useDevicePinEnroll, useDevicePinUnlock, useForgotPasswordSubmit, useOtpLogin, usePasskeyCeremony, usePinLogin, usePreferredMethodSetting, useRegisterForm, useResendVerification, useResetPasswordForm, useVerifyEmail, validatePasswordPolicy, verifyEmailErrorText, withTestIdPrefix };
3048
+ /** What the shared `/bff/register` resolves to; `accepted` means a 202 with no session. */
3049
+ interface SharedRegisterResult {
3050
+ accepted: boolean;
3051
+ body: unknown;
3052
+ }
3053
+ /** `true` when `result` reports an accepted registration waiting on the emailed link. */
3054
+ declare function isRegisterAccepted(result: unknown): boolean;
3055
+
3056
+ declare const REGISTER_ENDPOINT = "/bff/register";
3057
+ declare const VERIFY_AND_LOGIN_ENDPOINT = "/bff/verify-and-login";
3058
+ interface SharedRegistrationClient extends VerifyEmailCapableClient {
3059
+ register(request: BffRegisterRequest, meta?: RegisterSubmitMeta): Promise<SharedRegisterResult>;
3060
+ setNewPassword(token: string, newPassword: string): Promise<VerifyEmailResult>;
3061
+ }
3062
+ /** Same-origin client for the shared registration path; never calls `/bff/verify-email`. */
3063
+ declare function createSharedRegistrationClient(options?: CreateBffVerifyEmailClientOptions): SharedRegistrationClient;
3064
+
3065
+ interface SharedRegisterFormProps<TResult> extends RegisterFormProps<TResult> {
3066
+ /** Called once when the BFF accepts the signup (202). `onSuccess` is not called then: no session exists. */
3067
+ onAccepted?: (result: TResult) => void;
3068
+ }
3069
+ /** `<RegisterForm>` for the shared path: `onSubmit` also gets `meta`, and a 202 shows "check your email". */
3070
+ declare function SharedRegisterForm<TResult>({ onSuccess, onAccepted, ...formProps }: Readonly<SharedRegisterFormProps<TResult>>): ReactElement;
3071
+
3072
+ export { type AccountSettingsChangePasswordConfig, type AccountSettingsDevicePinConfig, type AccountSettingsLabels, type AccountSettingsPasskeysConfig, type AccountSettingsPreferredMethodConfig, AccountSettingsScreen, type AccountSettingsScreenProps, AuthScreen, type AuthScreenProps, AuthTestIds, type AuthTheme, type AuthThemeColors, AuthThemeProvider, type AuthThemeProviderProps, type AuthThemeRadii, type AuthThemeSpacing, type AuthThemeTypography, BffAuthStatus, type BffDeviceState, type BffLoginConfig, type BffLogoutClient, type BuildVerifyUrlTemplateOptions, CHANGE_PASSWORD_ENDPOINT, type ChangePasswordCapableClient, ChangePasswordCard, type ChangePasswordCardProps, ChangePasswordErrorKey, type ChangePasswordRequest, type ChangePasswordResult, type CreateBffAuthClientOptions, type CreateBffChangePasswordClientOptions, type CreateBffVerifyEmailClientOptions, DEFAULT_ACCOUNT_SETTINGS_LABELS, DEFAULT_AUTH_CARD_MAX_WIDTH, DEFAULT_DEMO_CREDENTIALS_HINT_LABELS, DEFAULT_DEVICE_PIN_ENROLL_LABELS, DEFAULT_DEVICE_PIN_SETTINGS_LABELS, DEFAULT_DEVICE_PIN_UNLOCK_LABELS, DEFAULT_FORGOT_PASSWORD_FIELDS_LABELS, DEFAULT_FORGOT_PASSWORD_LABELS, DEFAULT_LOGIN_LABELS, DEFAULT_OTP_LABELS, DEFAULT_PASSKEY_LOGIN_LABELS, DEFAULT_PASSKEY_SETTINGS_LABELS, DEFAULT_PIN_LABELS, DEFAULT_PREFERRED_METHOD_HINT_LABELS, DEFAULT_PREFERRED_METHOD_SETTINGS_LABELS, DEFAULT_REGISTER_LABELS, DEFAULT_RESET_PASSWORD_LABELS, DEFAULT_VERIFY_EMAIL_LABELS, DEFAULT_VERIFY_NEW_PASSWORD_LABELS, DEFAULT_VERIFY_SIGN_IN_LABELS, DEVICE_PIN_ALLOWED_DIGITS, DEVICE_PIN_DEFAULT_DIGITS, DemoCredentialsHint, type DemoCredentialsHintLabels, type DemoCredentialsHintProps, DemoCredentialsHintVariant, type DemoCredentialsHintWiring, type DemoCredentialsLoginFormProps, type DevicePinCapableClient, type DevicePinDisableCapableClient, type DevicePinEnrollCapableClient, DevicePinEnrollErrorKey, DevicePinEnrollForm, type DevicePinEnrollFormProps, type DevicePinEnrollLabels, type DevicePinEnrollResult, DevicePinErrorKey, DevicePinInput, type DevicePinInputProps, DevicePinLengthPicker, type DevicePinLengthPickerProps, DevicePinOffer, type DevicePinOfferProps, DevicePinSettingsCard, type DevicePinSettingsCardProps, type DevicePinSettingsLabels, type DevicePinUnlockCapableClient, type DevicePinUnlockLabels, type DevicePinUnlockResult, DevicePinUnlockScreen, type DevicePinUnlockScreenProps, type DevicePinUnlockedUser, ForgotPasswordFields, type ForgotPasswordFieldsLabels, type ForgotPasswordFieldsProps, ForgotPasswordForm, type ForgotPasswordFormLabels, type ForgotPasswordFormProps, type LoginConfigCapableClient, LoginForm, type LoginFormLabels, type LoginFormProps, OtpForm, type OtpFormLabels, type OtpFormProps, OtpLoginStep, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PasskeyCeremonyMode, PasskeyCeremonyStatus, type PasskeyErrorCode, PasskeyLoginButton, type PasskeyLoginButtonProps, type PasskeyLoginLabels, PasskeySettingsCard, type PasskeySettingsCardProps, type PasskeySettingsLabels, PasswordPolicyError, type PerformBffLogoutOptions, PinForm, type PinFormLabels, type PinFormProps, type PreferencesClientOptions, type PreferredMethodClient, PreferredMethodHint, type PreferredMethodHintLabels, type PreferredMethodHintProps, PreferredMethodSettingsCard, type PreferredMethodSettingsCardProps, type PreferredMethodSettingsLabels, PrefillIntent, REGISTER_ENDPOINT, RESEND_VERIFICATION_ENDPOINT, RegisterErrorCode, type RegisterField, type RegisterFieldLabels, RegisterForm, type RegisterFormLabels, type RegisterFormProps, type RegisterFormValues, type RegisterInputField, type RegisterPasswordPolicy, type RegisterSubmitMeta, type RegisterSubmitOutcome, type RegisterSubmitValues, RegisterTestIds, ResetPasswordError, ResetPasswordForm, type ResetPasswordFormLabels, type ResetPasswordFormProps, type RoleRoute, type RoleRouteTable, SharedRegisterForm, type SharedRegisterFormProps, type SharedRegisterResult, type SharedRegistrationClient, type SplitName, type UseBffAuthOptions, type UseBffAuthResult, type UseBffForgotPasswordOptions, type UseBffLoginConfigResult, type UseBffResetPasswordOptions, type UseChangePasswordArgs, type UseChangePasswordResult, type UseDemoCredentialsOptions, type UseDemoCredentialsResult, type UseDevicePinDisableArgs, type UseDevicePinDisableResult, type UseDevicePinEnrollArgs, type UseDevicePinEnrollResult, type UseDevicePinUnlockArgs, type UseDevicePinUnlockResult, type UseForgotPasswordSubmitArgs, type UseForgotPasswordSubmitResult, type UseOtpLoginOptions, type UseOtpLoginResult, type UsePasskeyCeremonyOptions, type UsePasskeyCeremonyResult, type UsePinLoginOptions, type UsePinLoginResult, type UsePreferredMethodSettingArgs, type UsePreferredMethodSettingResult, type UseRegisterFormArgs, type UseRegisterFormResult, type UseResendVerificationArgs, type UseResendVerificationResult, type UseResetPasswordFormArgs, type UseResetPasswordFormResult, type UseVerifyEmailArgs, type UseVerifyEmailResult, VERIFY_AND_LOGIN_ENDPOINT, VERIFY_EMAIL_ENDPOINT, VERIFY_TOKEN_PLACEHOLDER, type VerifyEmailCapableClient, VerifyEmailErrorCode, type VerifyEmailLabels, VerifyEmailPhase, type VerifyEmailResult, VerifyEmailScreen, type VerifyEmailScreenProps, type VerifySignInLabels, buildVerifyUrlTemplate, cachePreferredMethod, clearCachedPreferredMethod, collectUserRoles, createBffAuthClient, createBffChangePasswordClient, createBffVerifyEmailClient, createPreferencesClient, createSharedRegistrationClient, defaultAuthTheme, deriveUsernameFromEmail, isAllowedPinDigits, isPasswordValid, isRegisterAccepted, isRegisterPasswordStrong, isValidForgotPasswordEmail, performBffLogout, readCachedPreferredMethod, readPasskeyError, readPasskeyRegistered, readVerifyToken, resolveAccessibleRoutes, resolveAccountList, resolveDemoAccounts, resolveDemoCredentials, resolvePostLoginRoute, splitFullName, startPasskeyLogin, startPasskeyRegistration, syncPreferredMethodFromServer, useAuthTheme, useBffAuth, useBffForgotPassword, useBffLoginConfig, useBffResetPassword, useChangePassword, useDemoCredentials, useDevicePinDisable, useDevicePinEnroll, useDevicePinUnlock, useForgotPasswordSubmit, useOtpLogin, usePasskeyCeremony, usePinLogin, usePreferredMethodSetting, useRegisterForm, useResendVerification, useResetPasswordForm, useVerifyEmail, validatePasswordPolicy, verifyEmailErrorText, withTestIdPrefix };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { ReactNode, ReactElement } from 'react';
2
- import { BffAuthClient, BffUser, DemoCredentials, HttpClient, DemoAccount, BffLoginRequest, BffForgotPasswordRequest, BffResetPasswordRequest, BffOtpRequestResult } from '@dloizides/auth-client';
2
+ import { BffAuthClient, BffUser, DemoCredentials, HttpClient, DemoAccount, BffLoginRequest, BffForgotPasswordRequest, BffResetPasswordRequest, BffOtpRequestResult, BffRegisterRequest } from '@dloizides/auth-client';
3
3
  export { BffAuthClient, BffAuthClientOptions, BffForgotPasswordRequest, BffLoginRequest, BffOtpRequestRequest, BffOtpRequestResult, BffOtpVerifyRequest, BffPinLoginRequest, BffRegisterRequest, BffResetPasswordRequest, BffUser, DemoAccount, DemoCredentials, HttpClient, HttpRequest, HttpResponse, createFetchHttpClient } from '@dloizides/auth-client';
4
4
  import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
5
5
 
@@ -460,6 +460,8 @@ interface ResetPasswordFormLabels {
460
460
  errorTokenInvalid: string;
461
461
  /** Error: a network / 5xx failure. */
462
462
  errorNetwork: string;
463
+ /** Error: the BFF rate-limited the attempt. Falls back to `errorNetwork`. */
464
+ errorRateLimited?: string;
463
465
  }
464
466
  declare const DEFAULT_RESET_PASSWORD_LABELS: ResetPasswordFormLabels;
465
467
 
@@ -571,6 +573,11 @@ type RegisterInputField = Exclude<RegisterField, 'website'>;
571
573
  * honeypot is kept (empty for real users) so the BFF can enforce it as well.
572
574
  */
573
575
  type RegisterSubmitValues = Omit<RegisterFormValues, 'confirmPassword'>;
576
+ /** Extra request data for shared registration; only passed to `onSubmit` when it is on. */
577
+ interface RegisterSubmitMeta {
578
+ idempotencyKey: string;
579
+ formElapsedMs: number;
580
+ }
574
581
  /** `true` when the password is acceptable. */
575
582
  type RegisterPasswordPolicy = (password: string) => boolean;
576
583
  type RegisterSubmitOutcome<TResult> = {
@@ -603,9 +610,20 @@ interface RegisterFormLabels {
603
610
  fields: Record<RegisterInputField, RegisterFieldLabels>;
604
611
  /** Copy for the single "Your name" input of the compact form. Defaults to English. */
605
612
  fullName?: RegisterFieldLabels;
613
+ /** Heading shown after a 202 with shared registration on. Defaults to English. */
614
+ checkEmailTitle?: string;
615
+ /** Body shown after a 202 with shared registration on. Defaults to English. */
616
+ checkEmailBody?: string;
606
617
  }
607
618
  declare const DEFAULT_REGISTER_LABELS: RegisterFormLabels;
608
619
 
620
+ /** Copy for the verified account whose automatic sign-in failed. */
621
+ interface VerifySignInLabels {
622
+ title: string;
623
+ body: string;
624
+ action: string;
625
+ actionHint: string;
626
+ }
609
627
  /** Strings rendered by `<VerifyEmailScreen>`. */
610
628
  interface VerifyEmailLabels {
611
629
  loadingTitle: string;
@@ -629,7 +647,15 @@ interface VerifyEmailLabels {
629
647
  resendSubmit: string;
630
648
  resendSubmitHint: string;
631
649
  resendConfirmation: string;
632
- }
650
+ /** Shown when the BFF rate-limits the link. Falls back to `errorGeneric`. */
651
+ errorRateLimited?: string;
652
+ /** Copy for the set-new-password step of shared registration. */
653
+ newPassword?: Partial<ResetPasswordFormLabels>;
654
+ /** Copy for the verified-but-not-signed-in step of shared registration. */
655
+ signIn?: Partial<VerifySignInLabels>;
656
+ }
657
+ declare const DEFAULT_VERIFY_NEW_PASSWORD_LABELS: ResetPasswordFormLabels;
658
+ declare const DEFAULT_VERIFY_SIGN_IN_LABELS: VerifySignInLabels;
633
659
  declare const DEFAULT_VERIFY_EMAIL_LABELS: VerifyEmailLabels;
634
660
 
635
661
  /**
@@ -1897,6 +1923,8 @@ declare const AuthTestIds: {
1897
1923
  readonly verifyEmailSuccess: "auth-verify-email-success";
1898
1924
  readonly verifyEmailContinue: "auth-verify-email-continue";
1899
1925
  readonly verifyEmailError: "auth-verify-email-error";
1926
+ readonly verifyEmailSignIn: "auth-verify-email-sign-in";
1927
+ readonly verifyEmailSignInContinue: "auth-verify-email-sign-in-continue";
1900
1928
  readonly verifyEmailResendCta: "auth-verify-email-resend-cta";
1901
1929
  readonly verifyEmailResendForm: "auth-verify-email-resend-form";
1902
1930
  readonly verifyEmailResendEmail: "auth-verify-email-resend-email";
@@ -2004,7 +2032,9 @@ declare const enum ResetPasswordError {
2004
2032
  /** The reset token is missing, expired, or already consumed. */
2005
2033
  TokenInvalid = "tokenInvalid",
2006
2034
  /** A network or 5xx failure prevented the reset from completing. */
2007
- Network = "network"
2035
+ Network = "network",
2036
+ /** The BFF rate-limited the attempt (HTTP 429). */
2037
+ RateLimited = "rateLimited"
2008
2038
  }
2009
2039
 
2010
2040
  interface UseResetPasswordFormArgs {
@@ -2508,7 +2538,7 @@ declare function resolveDemoAccounts(credentials?: DemoCredentials | null): Demo
2508
2538
 
2509
2539
  interface RegisterFormProps<TResult> {
2510
2540
  /** Send the registration (build the request, call the BFF). Throw on failure. */
2511
- onSubmit: (values: RegisterSubmitValues) => Promise<TResult>;
2541
+ onSubmit: (values: RegisterSubmitValues, meta?: RegisterSubmitMeta) => Promise<TResult>;
2512
2542
  /** Called with whatever `onSubmit` resolved to. */
2513
2543
  onSuccess: (result: TResult) => void;
2514
2544
  /** Called with the failure code; map it to localised copy. */
@@ -2533,7 +2563,7 @@ interface RegisterFormProps<TResult> {
2533
2563
  compact?: boolean;
2534
2564
  }
2535
2565
  /** Themeable registration form built on `useRegisterForm`. */
2536
- declare function RegisterForm<TResult>({ onSubmit, onSuccess, onError, onSubmitAttempt, passwordPolicy, labels: labelsProp, theme: themeProp, footer, testIdPrefix, compact, }: Readonly<RegisterFormProps<TResult>>): ReactElement;
2566
+ declare function RegisterForm<TResult>(props: Readonly<RegisterFormProps<TResult>>): ReactElement;
2537
2567
 
2538
2568
  /**
2539
2569
  * `testID` values for `<RegisterForm>`.
@@ -2558,11 +2588,12 @@ declare const RegisterTestIds: {
2558
2588
  readonly tenantNameInput: "register-tenant-name-input";
2559
2589
  readonly submitButton: "register-submit-button";
2560
2590
  readonly websiteInput: "register-website";
2591
+ readonly checkEmail: "register-check-email";
2561
2592
  };
2562
2593
 
2563
2594
  interface UseRegisterFormArgs<TResult> {
2564
2595
  /** Send the registration. Throw on failure; the message is decoded to a code. */
2565
- onSubmit: (values: RegisterSubmitValues) => Promise<TResult>;
2596
+ onSubmit: (values: RegisterSubmitValues, meta?: RegisterSubmitMeta) => Promise<TResult>;
2566
2597
  /** Password rule. Defaults to {@link isRegisterPasswordStrong}. */
2567
2598
  passwordPolicy?: RegisterPasswordPolicy;
2568
2599
  /**
@@ -2575,6 +2606,8 @@ interface UseRegisterFormArgs<TResult> {
2575
2606
  * (from the email) and the password confirmation are derived before validation.
2576
2607
  */
2577
2608
  compact?: boolean;
2609
+ /** Opt-in shared registration: `onSubmit` also gets the key and form time; an accepted result clears the passwords. */
2610
+ sharedRegistration?: boolean;
2578
2611
  }
2579
2612
  interface UseRegisterFormResult<TResult> {
2580
2613
  state: RegisterFormValues;
@@ -2585,7 +2618,7 @@ interface UseRegisterFormResult<TResult> {
2585
2618
  error: RegisterErrorCode | null;
2586
2619
  }
2587
2620
  /** Headless registration form logic. */
2588
- declare function useRegisterForm<TResult>({ onSubmit, passwordPolicy, onSubmitAttempt, compact, }: UseRegisterFormArgs<TResult>): UseRegisterFormResult<TResult>;
2621
+ declare function useRegisterForm<TResult>({ onSubmit, passwordPolicy, onSubmitAttempt, compact, sharedRegistration, }: UseRegisterFormArgs<TResult>): UseRegisterFormResult<TResult>;
2589
2622
 
2590
2623
  /**
2591
2624
  * Pure registration helpers: trimming, client-side validation and decoding of a
@@ -2919,6 +2952,10 @@ declare const enum VerifyEmailErrorCode {
2919
2952
  TokenUsed = "TOKEN_USED",
2920
2953
  KeycloakUpdateFailed = "KEYCLOAK_UPDATE_FAILED",
2921
2954
  MissingToken = "MISSING_TOKEN",
2955
+ NewPasswordRequired = "NEW_PASSWORD_REQUIRED",
2956
+ WeakPassword = "WEAK_PASSWORD",
2957
+ RateLimited = "RATE_LIMITED",
2958
+ SignInFailed = "SIGN_IN_FAILED",
2922
2959
  Generic = "GENERIC"
2923
2960
  }
2924
2961
 
@@ -2932,6 +2969,7 @@ type VerifyEmailResult = {
2932
2969
  interface VerifyEmailCapableClient {
2933
2970
  verifyEmail(token: string): Promise<VerifyEmailResult>;
2934
2971
  resendVerification(email: string, verifyUrlTemplate?: string): Promise<boolean>;
2972
+ setNewPassword?(token: string, newPassword: string): Promise<VerifyEmailResult>;
2935
2973
  }
2936
2974
 
2937
2975
  interface VerifyEmailScreenProps {
@@ -2948,11 +2986,12 @@ interface VerifyEmailScreenProps {
2948
2986
  /** Verifies the emailed token on mount, then offers Continue or a resend-link form. */
2949
2987
  declare function VerifyEmailScreen({ client, token, onContinue, theme: themeProp, labels: labelsProp, verifyUrlTemplate, onVerified, onFailed, testIdPrefix, }: Readonly<VerifyEmailScreenProps>): ReactElement;
2950
2988
 
2951
- /** The three states the verify-email screen moves through. */
2989
+ /** The states the verify-email screen moves through. */
2952
2990
  declare const enum VerifyEmailPhase {
2953
2991
  Loading = "loading",
2954
2992
  Success = "success",
2955
- Failure = "failure"
2993
+ Failure = "failure",
2994
+ NewPasswordRequired = "newPasswordRequired"
2956
2995
  }
2957
2996
 
2958
2997
  interface UseVerifyEmailArgs {
@@ -3006,4 +3045,28 @@ declare function readVerifyToken(raw: string | readonly string[] | undefined): s
3006
3045
  /** The failure body copy for a verification error code. */
3007
3046
  declare function verifyEmailErrorText(code: VerifyEmailErrorCode, labels: VerifyEmailLabels): string;
3008
3047
 
3009
- export { type AccountSettingsChangePasswordConfig, type AccountSettingsDevicePinConfig, type AccountSettingsLabels, type AccountSettingsPasskeysConfig, type AccountSettingsPreferredMethodConfig, AccountSettingsScreen, type AccountSettingsScreenProps, AuthScreen, type AuthScreenProps, AuthTestIds, type AuthTheme, type AuthThemeColors, AuthThemeProvider, type AuthThemeProviderProps, type AuthThemeRadii, type AuthThemeSpacing, type AuthThemeTypography, BffAuthStatus, type BffDeviceState, type BffLoginConfig, type BffLogoutClient, type BuildVerifyUrlTemplateOptions, CHANGE_PASSWORD_ENDPOINT, type ChangePasswordCapableClient, ChangePasswordCard, type ChangePasswordCardProps, ChangePasswordErrorKey, type ChangePasswordRequest, type ChangePasswordResult, type CreateBffAuthClientOptions, type CreateBffChangePasswordClientOptions, type CreateBffVerifyEmailClientOptions, DEFAULT_ACCOUNT_SETTINGS_LABELS, DEFAULT_AUTH_CARD_MAX_WIDTH, DEFAULT_DEMO_CREDENTIALS_HINT_LABELS, DEFAULT_DEVICE_PIN_ENROLL_LABELS, DEFAULT_DEVICE_PIN_SETTINGS_LABELS, DEFAULT_DEVICE_PIN_UNLOCK_LABELS, DEFAULT_FORGOT_PASSWORD_FIELDS_LABELS, DEFAULT_FORGOT_PASSWORD_LABELS, DEFAULT_LOGIN_LABELS, DEFAULT_OTP_LABELS, DEFAULT_PASSKEY_LOGIN_LABELS, DEFAULT_PASSKEY_SETTINGS_LABELS, DEFAULT_PIN_LABELS, DEFAULT_PREFERRED_METHOD_HINT_LABELS, DEFAULT_PREFERRED_METHOD_SETTINGS_LABELS, DEFAULT_REGISTER_LABELS, DEFAULT_RESET_PASSWORD_LABELS, DEFAULT_VERIFY_EMAIL_LABELS, DEVICE_PIN_ALLOWED_DIGITS, DEVICE_PIN_DEFAULT_DIGITS, DemoCredentialsHint, type DemoCredentialsHintLabels, type DemoCredentialsHintProps, DemoCredentialsHintVariant, type DemoCredentialsHintWiring, type DemoCredentialsLoginFormProps, type DevicePinCapableClient, type DevicePinDisableCapableClient, type DevicePinEnrollCapableClient, DevicePinEnrollErrorKey, DevicePinEnrollForm, type DevicePinEnrollFormProps, type DevicePinEnrollLabels, type DevicePinEnrollResult, DevicePinErrorKey, DevicePinInput, type DevicePinInputProps, DevicePinLengthPicker, type DevicePinLengthPickerProps, DevicePinOffer, type DevicePinOfferProps, DevicePinSettingsCard, type DevicePinSettingsCardProps, type DevicePinSettingsLabels, type DevicePinUnlockCapableClient, type DevicePinUnlockLabels, type DevicePinUnlockResult, DevicePinUnlockScreen, type DevicePinUnlockScreenProps, type DevicePinUnlockedUser, ForgotPasswordFields, type ForgotPasswordFieldsLabels, type ForgotPasswordFieldsProps, ForgotPasswordForm, type ForgotPasswordFormLabels, type ForgotPasswordFormProps, type LoginConfigCapableClient, LoginForm, type LoginFormLabels, type LoginFormProps, OtpForm, type OtpFormLabels, type OtpFormProps, OtpLoginStep, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PasskeyCeremonyMode, PasskeyCeremonyStatus, type PasskeyErrorCode, PasskeyLoginButton, type PasskeyLoginButtonProps, type PasskeyLoginLabels, PasskeySettingsCard, type PasskeySettingsCardProps, type PasskeySettingsLabels, PasswordPolicyError, type PerformBffLogoutOptions, PinForm, type PinFormLabels, type PinFormProps, type PreferencesClientOptions, type PreferredMethodClient, PreferredMethodHint, type PreferredMethodHintLabels, type PreferredMethodHintProps, PreferredMethodSettingsCard, type PreferredMethodSettingsCardProps, type PreferredMethodSettingsLabels, PrefillIntent, RESEND_VERIFICATION_ENDPOINT, RegisterErrorCode, type RegisterField, type RegisterFieldLabels, RegisterForm, type RegisterFormLabels, type RegisterFormProps, type RegisterFormValues, type RegisterInputField, type RegisterPasswordPolicy, type RegisterSubmitOutcome, type RegisterSubmitValues, RegisterTestIds, ResetPasswordError, ResetPasswordForm, type ResetPasswordFormLabels, type ResetPasswordFormProps, type RoleRoute, type RoleRouteTable, type SplitName, type UseBffAuthOptions, type UseBffAuthResult, type UseBffForgotPasswordOptions, type UseBffLoginConfigResult, type UseBffResetPasswordOptions, type UseChangePasswordArgs, type UseChangePasswordResult, type UseDemoCredentialsOptions, type UseDemoCredentialsResult, type UseDevicePinDisableArgs, type UseDevicePinDisableResult, type UseDevicePinEnrollArgs, type UseDevicePinEnrollResult, type UseDevicePinUnlockArgs, type UseDevicePinUnlockResult, type UseForgotPasswordSubmitArgs, type UseForgotPasswordSubmitResult, type UseOtpLoginOptions, type UseOtpLoginResult, type UsePasskeyCeremonyOptions, type UsePasskeyCeremonyResult, type UsePinLoginOptions, type UsePinLoginResult, type UsePreferredMethodSettingArgs, type UsePreferredMethodSettingResult, type UseRegisterFormArgs, type UseRegisterFormResult, type UseResendVerificationArgs, type UseResendVerificationResult, type UseResetPasswordFormArgs, type UseResetPasswordFormResult, type UseVerifyEmailArgs, type UseVerifyEmailResult, VERIFY_EMAIL_ENDPOINT, VERIFY_TOKEN_PLACEHOLDER, type VerifyEmailCapableClient, VerifyEmailErrorCode, type VerifyEmailLabels, VerifyEmailPhase, type VerifyEmailResult, VerifyEmailScreen, type VerifyEmailScreenProps, buildVerifyUrlTemplate, cachePreferredMethod, clearCachedPreferredMethod, collectUserRoles, createBffAuthClient, createBffChangePasswordClient, createBffVerifyEmailClient, createPreferencesClient, defaultAuthTheme, deriveUsernameFromEmail, isAllowedPinDigits, isPasswordValid, isRegisterPasswordStrong, isValidForgotPasswordEmail, performBffLogout, readCachedPreferredMethod, readPasskeyError, readPasskeyRegistered, readVerifyToken, resolveAccessibleRoutes, resolveAccountList, resolveDemoAccounts, resolveDemoCredentials, resolvePostLoginRoute, splitFullName, startPasskeyLogin, startPasskeyRegistration, syncPreferredMethodFromServer, useAuthTheme, useBffAuth, useBffForgotPassword, useBffLoginConfig, useBffResetPassword, useChangePassword, useDemoCredentials, useDevicePinDisable, useDevicePinEnroll, useDevicePinUnlock, useForgotPasswordSubmit, useOtpLogin, usePasskeyCeremony, usePinLogin, usePreferredMethodSetting, useRegisterForm, useResendVerification, useResetPasswordForm, useVerifyEmail, validatePasswordPolicy, verifyEmailErrorText, withTestIdPrefix };
3048
+ /** What the shared `/bff/register` resolves to; `accepted` means a 202 with no session. */
3049
+ interface SharedRegisterResult {
3050
+ accepted: boolean;
3051
+ body: unknown;
3052
+ }
3053
+ /** `true` when `result` reports an accepted registration waiting on the emailed link. */
3054
+ declare function isRegisterAccepted(result: unknown): boolean;
3055
+
3056
+ declare const REGISTER_ENDPOINT = "/bff/register";
3057
+ declare const VERIFY_AND_LOGIN_ENDPOINT = "/bff/verify-and-login";
3058
+ interface SharedRegistrationClient extends VerifyEmailCapableClient {
3059
+ register(request: BffRegisterRequest, meta?: RegisterSubmitMeta): Promise<SharedRegisterResult>;
3060
+ setNewPassword(token: string, newPassword: string): Promise<VerifyEmailResult>;
3061
+ }
3062
+ /** Same-origin client for the shared registration path; never calls `/bff/verify-email`. */
3063
+ declare function createSharedRegistrationClient(options?: CreateBffVerifyEmailClientOptions): SharedRegistrationClient;
3064
+
3065
+ interface SharedRegisterFormProps<TResult> extends RegisterFormProps<TResult> {
3066
+ /** Called once when the BFF accepts the signup (202). `onSuccess` is not called then: no session exists. */
3067
+ onAccepted?: (result: TResult) => void;
3068
+ }
3069
+ /** `<RegisterForm>` for the shared path: `onSubmit` also gets `meta`, and a 202 shows "check your email". */
3070
+ declare function SharedRegisterForm<TResult>({ onSuccess, onAccepted, ...formProps }: Readonly<SharedRegisterFormProps<TResult>>): ReactElement;
3071
+
3072
+ export { type AccountSettingsChangePasswordConfig, type AccountSettingsDevicePinConfig, type AccountSettingsLabels, type AccountSettingsPasskeysConfig, type AccountSettingsPreferredMethodConfig, AccountSettingsScreen, type AccountSettingsScreenProps, AuthScreen, type AuthScreenProps, AuthTestIds, type AuthTheme, type AuthThemeColors, AuthThemeProvider, type AuthThemeProviderProps, type AuthThemeRadii, type AuthThemeSpacing, type AuthThemeTypography, BffAuthStatus, type BffDeviceState, type BffLoginConfig, type BffLogoutClient, type BuildVerifyUrlTemplateOptions, CHANGE_PASSWORD_ENDPOINT, type ChangePasswordCapableClient, ChangePasswordCard, type ChangePasswordCardProps, ChangePasswordErrorKey, type ChangePasswordRequest, type ChangePasswordResult, type CreateBffAuthClientOptions, type CreateBffChangePasswordClientOptions, type CreateBffVerifyEmailClientOptions, DEFAULT_ACCOUNT_SETTINGS_LABELS, DEFAULT_AUTH_CARD_MAX_WIDTH, DEFAULT_DEMO_CREDENTIALS_HINT_LABELS, DEFAULT_DEVICE_PIN_ENROLL_LABELS, DEFAULT_DEVICE_PIN_SETTINGS_LABELS, DEFAULT_DEVICE_PIN_UNLOCK_LABELS, DEFAULT_FORGOT_PASSWORD_FIELDS_LABELS, DEFAULT_FORGOT_PASSWORD_LABELS, DEFAULT_LOGIN_LABELS, DEFAULT_OTP_LABELS, DEFAULT_PASSKEY_LOGIN_LABELS, DEFAULT_PASSKEY_SETTINGS_LABELS, DEFAULT_PIN_LABELS, DEFAULT_PREFERRED_METHOD_HINT_LABELS, DEFAULT_PREFERRED_METHOD_SETTINGS_LABELS, DEFAULT_REGISTER_LABELS, DEFAULT_RESET_PASSWORD_LABELS, DEFAULT_VERIFY_EMAIL_LABELS, DEFAULT_VERIFY_NEW_PASSWORD_LABELS, DEFAULT_VERIFY_SIGN_IN_LABELS, DEVICE_PIN_ALLOWED_DIGITS, DEVICE_PIN_DEFAULT_DIGITS, DemoCredentialsHint, type DemoCredentialsHintLabels, type DemoCredentialsHintProps, DemoCredentialsHintVariant, type DemoCredentialsHintWiring, type DemoCredentialsLoginFormProps, type DevicePinCapableClient, type DevicePinDisableCapableClient, type DevicePinEnrollCapableClient, DevicePinEnrollErrorKey, DevicePinEnrollForm, type DevicePinEnrollFormProps, type DevicePinEnrollLabels, type DevicePinEnrollResult, DevicePinErrorKey, DevicePinInput, type DevicePinInputProps, DevicePinLengthPicker, type DevicePinLengthPickerProps, DevicePinOffer, type DevicePinOfferProps, DevicePinSettingsCard, type DevicePinSettingsCardProps, type DevicePinSettingsLabels, type DevicePinUnlockCapableClient, type DevicePinUnlockLabels, type DevicePinUnlockResult, DevicePinUnlockScreen, type DevicePinUnlockScreenProps, type DevicePinUnlockedUser, ForgotPasswordFields, type ForgotPasswordFieldsLabels, type ForgotPasswordFieldsProps, ForgotPasswordForm, type ForgotPasswordFormLabels, type ForgotPasswordFormProps, type LoginConfigCapableClient, LoginForm, type LoginFormLabels, type LoginFormProps, OtpForm, type OtpFormLabels, type OtpFormProps, OtpLoginStep, PASSWORD_MAX_LENGTH, PASSWORD_MIN_LENGTH, PasskeyCeremonyMode, PasskeyCeremonyStatus, type PasskeyErrorCode, PasskeyLoginButton, type PasskeyLoginButtonProps, type PasskeyLoginLabels, PasskeySettingsCard, type PasskeySettingsCardProps, type PasskeySettingsLabels, PasswordPolicyError, type PerformBffLogoutOptions, PinForm, type PinFormLabels, type PinFormProps, type PreferencesClientOptions, type PreferredMethodClient, PreferredMethodHint, type PreferredMethodHintLabels, type PreferredMethodHintProps, PreferredMethodSettingsCard, type PreferredMethodSettingsCardProps, type PreferredMethodSettingsLabels, PrefillIntent, REGISTER_ENDPOINT, RESEND_VERIFICATION_ENDPOINT, RegisterErrorCode, type RegisterField, type RegisterFieldLabels, RegisterForm, type RegisterFormLabels, type RegisterFormProps, type RegisterFormValues, type RegisterInputField, type RegisterPasswordPolicy, type RegisterSubmitMeta, type RegisterSubmitOutcome, type RegisterSubmitValues, RegisterTestIds, ResetPasswordError, ResetPasswordForm, type ResetPasswordFormLabels, type ResetPasswordFormProps, type RoleRoute, type RoleRouteTable, SharedRegisterForm, type SharedRegisterFormProps, type SharedRegisterResult, type SharedRegistrationClient, type SplitName, type UseBffAuthOptions, type UseBffAuthResult, type UseBffForgotPasswordOptions, type UseBffLoginConfigResult, type UseBffResetPasswordOptions, type UseChangePasswordArgs, type UseChangePasswordResult, type UseDemoCredentialsOptions, type UseDemoCredentialsResult, type UseDevicePinDisableArgs, type UseDevicePinDisableResult, type UseDevicePinEnrollArgs, type UseDevicePinEnrollResult, type UseDevicePinUnlockArgs, type UseDevicePinUnlockResult, type UseForgotPasswordSubmitArgs, type UseForgotPasswordSubmitResult, type UseOtpLoginOptions, type UseOtpLoginResult, type UsePasskeyCeremonyOptions, type UsePasskeyCeremonyResult, type UsePinLoginOptions, type UsePinLoginResult, type UsePreferredMethodSettingArgs, type UsePreferredMethodSettingResult, type UseRegisterFormArgs, type UseRegisterFormResult, type UseResendVerificationArgs, type UseResendVerificationResult, type UseResetPasswordFormArgs, type UseResetPasswordFormResult, type UseVerifyEmailArgs, type UseVerifyEmailResult, VERIFY_AND_LOGIN_ENDPOINT, VERIFY_EMAIL_ENDPOINT, VERIFY_TOKEN_PLACEHOLDER, type VerifyEmailCapableClient, VerifyEmailErrorCode, type VerifyEmailLabels, VerifyEmailPhase, type VerifyEmailResult, VerifyEmailScreen, type VerifyEmailScreenProps, type VerifySignInLabels, buildVerifyUrlTemplate, cachePreferredMethod, clearCachedPreferredMethod, collectUserRoles, createBffAuthClient, createBffChangePasswordClient, createBffVerifyEmailClient, createPreferencesClient, createSharedRegistrationClient, defaultAuthTheme, deriveUsernameFromEmail, isAllowedPinDigits, isPasswordValid, isRegisterAccepted, isRegisterPasswordStrong, isValidForgotPasswordEmail, performBffLogout, readCachedPreferredMethod, readPasskeyError, readPasskeyRegistered, readVerifyToken, resolveAccessibleRoutes, resolveAccountList, resolveDemoAccounts, resolveDemoCredentials, resolvePostLoginRoute, splitFullName, startPasskeyLogin, startPasskeyRegistration, syncPreferredMethodFromServer, useAuthTheme, useBffAuth, useBffForgotPassword, useBffLoginConfig, useBffResetPassword, useChangePassword, useDemoCredentials, useDevicePinDisable, useDevicePinEnroll, useDevicePinUnlock, useForgotPasswordSubmit, useOtpLogin, usePasskeyCeremony, usePinLogin, usePreferredMethodSetting, useRegisterForm, useResendVerification, useResetPasswordForm, useVerifyEmail, validatePasswordPolicy, verifyEmailErrorText, withTestIdPrefix };