@dloizides/auth-web 1.21.0 → 1.22.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/dist/index.js CHANGED
@@ -354,6 +354,31 @@ var DEFAULT_REGISTER_LABELS = {
354
354
  }
355
355
  };
356
356
 
357
+ // src/components/labels/verifyEmailLabels.ts
358
+ var DEFAULT_VERIFY_EMAIL_LABELS = {
359
+ loadingTitle: "Verifying your email...",
360
+ loadingHint: "Please wait while we verify your address.",
361
+ successTitle: "Your email is verified",
362
+ successBody: "Thanks for confirming your email address.",
363
+ successContinue: "Continue",
364
+ successContinueHint: "Go to the app",
365
+ errorTitle: "We couldn't verify your email",
366
+ errorInvalid: "This verification link is invalid. Request a new one.",
367
+ errorExpired: "This verification link has expired. Request a new one.",
368
+ errorUsed: "This link has already been used.",
369
+ errorGeneric: "Verification failed. Please try again later.",
370
+ missingToken: "This verification link is missing a token.",
371
+ resendCta: "Send a new verification email",
372
+ resendCtaHint: "Show the resend verification email form",
373
+ resendEmailLabel: "Email",
374
+ resendEmailHint: "The address to send a new verification link to",
375
+ resendEmailPlaceholder: "you@example.com",
376
+ resendMissingEmail: "Enter your email address.",
377
+ resendSubmit: "Send link",
378
+ resendSubmitHint: "Sends a new verification email",
379
+ resendConfirmation: "If that address has an account, a new verification link is on its way."
380
+ };
381
+
357
382
  // src/components/testIds.ts
358
383
  var AuthTestIds = {
359
384
  loginForm: "auth-login-form",
@@ -444,7 +469,17 @@ var AuthTestIds = {
444
469
  demoCredentialsPassword: "auth-demo-credentials-password",
445
470
  demoCredentialsUseButton: "auth-demo-credentials-use",
446
471
  // The collapsed disclosure trigger (`disclosure` variant only).
447
- demoCredentialsToggle: "auth-demo-credentials-toggle"
472
+ demoCredentialsToggle: "auth-demo-credentials-toggle",
473
+ verifyEmailScreen: "auth-verify-email",
474
+ verifyEmailLoading: "auth-verify-email-loading",
475
+ verifyEmailSuccess: "auth-verify-email-success",
476
+ verifyEmailContinue: "auth-verify-email-continue",
477
+ verifyEmailError: "auth-verify-email-error",
478
+ verifyEmailResendCta: "auth-verify-email-resend-cta",
479
+ verifyEmailResendForm: "auth-verify-email-resend-form",
480
+ verifyEmailResendEmail: "auth-verify-email-resend-email",
481
+ verifyEmailResendSubmit: "auth-verify-email-resend-submit",
482
+ verifyEmailResendConfirmation: "auth-verify-email-resend-confirmation"
448
483
  };
449
484
  function withTestIdPrefix(baseId, prefix) {
450
485
  return prefix === void 0 || prefix === "" ? baseId : `${prefix}-${baseId}`;
@@ -1316,19 +1351,19 @@ function useResetMutation(client, callbacks) {
1316
1351
  }
1317
1352
  function runSubmit(args) {
1318
1353
  args.setErrorKey(null);
1319
- const failure = preflight({
1354
+ const failure2 = preflight({
1320
1355
  newPassword: args.newPassword,
1321
1356
  confirm: args.confirmPassword,
1322
1357
  token: args.token
1323
1358
  });
1324
- if (failure === null) {
1359
+ if (failure2 === null) {
1325
1360
  args.mutate({ token: args.token, newPassword: args.newPassword });
1326
1361
  return;
1327
1362
  }
1328
- if (failure === "tokenInvalid" /* TokenInvalid */) {
1363
+ if (failure2 === "tokenInvalid" /* TokenInvalid */) {
1329
1364
  args.setHasInvalidToken(true);
1330
1365
  }
1331
- args.setErrorKey(failure);
1366
+ args.setErrorKey(failure2);
1332
1367
  }
1333
1368
  function useFormState() {
1334
1369
  const [newPassword, setNewPassword] = react.useState("");
@@ -4325,15 +4360,15 @@ function typedFailureOf(error) {
4325
4360
  }
4326
4361
  return { status: hasStatus ? status : null, errorCode: hasCode ? errorCode : null };
4327
4362
  }
4328
- function mapTypedFailure(failure) {
4329
- const byCode = failure.errorCode === null ? void 0 : BODY_ERROR_CODES[failure.errorCode];
4363
+ function mapTypedFailure(failure2) {
4364
+ const byCode = failure2.errorCode === null ? void 0 : BODY_ERROR_CODES[failure2.errorCode];
4330
4365
  if (byCode !== void 0) {
4331
4366
  return byCode;
4332
4367
  }
4333
- if (failure.status === HTTP_TOO_MANY_REQUESTS) {
4368
+ if (failure2.status === HTTP_TOO_MANY_REQUESTS) {
4334
4369
  return "rateLimited" /* RateLimited */;
4335
4370
  }
4336
- const isServerError = failure.status !== null && failure.status >= HTTP_SERVER_ERROR_MIN;
4371
+ const isServerError = failure2.status !== null && failure2.status >= HTTP_SERVER_ERROR_MIN;
4337
4372
  return isServerError ? "failed" /* Failed */ : null;
4338
4373
  }
4339
4374
  function messageOf(error) {
@@ -4343,8 +4378,8 @@ function messageOf(error) {
4343
4378
  return typeof error === "string" ? error : "";
4344
4379
  }
4345
4380
  function mapRegisterErrorCode(error) {
4346
- const failure = typedFailureOf(error);
4347
- const typed = failure === null ? null : mapTypedFailure(failure);
4381
+ const failure2 = typedFailureOf(error);
4382
+ const typed = failure2 === null ? null : mapTypedFailure(failure2);
4348
4383
  if (typed !== null) {
4349
4384
  return typed;
4350
4385
  }
@@ -4638,6 +4673,322 @@ function createBffChangePasswordClient(options = {}) {
4638
4673
  }
4639
4674
  };
4640
4675
  }
4676
+ function useResendVerification({ client, verifyUrlTemplate }) {
4677
+ const [email, setEmail] = react.useState("");
4678
+ const [missingEmail, setMissingEmail] = react.useState(false);
4679
+ const [submitting, setSubmitting] = react.useState(false);
4680
+ const [confirmed, setConfirmed] = react.useState(false);
4681
+ const submit = react.useCallback(async () => {
4682
+ const trimmed = email.trim();
4683
+ if (trimmed === "") {
4684
+ setMissingEmail(true);
4685
+ return;
4686
+ }
4687
+ setMissingEmail(false);
4688
+ setSubmitting(true);
4689
+ await client.resendVerification(trimmed, verifyUrlTemplate);
4690
+ setSubmitting(false);
4691
+ setConfirmed(true);
4692
+ }, [client, email, verifyUrlTemplate]);
4693
+ return { email, setEmail, missingEmail, submitting, confirmed, submit };
4694
+ }
4695
+ function VerifyEmailResendForm({
4696
+ client,
4697
+ labels,
4698
+ styles: styles3,
4699
+ theme,
4700
+ verifyUrlTemplate,
4701
+ testIdPrefix
4702
+ }) {
4703
+ const resend = useResendVerification({ client, verifyUrlTemplate });
4704
+ const id = (base) => withTestIdPrefix(base, testIdPrefix);
4705
+ if (resend.confirmed) {
4706
+ return /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles3.successText, testID: id(AuthTestIds.verifyEmailResendConfirmation), children: labels.resendConfirmation });
4707
+ }
4708
+ const submit = () => {
4709
+ void resend.submit();
4710
+ };
4711
+ const buttonStyle = resend.submitting ? [styles3.primaryButton, styles3.primaryButtonDisabled] : styles3.primaryButton;
4712
+ return /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { testID: id(AuthTestIds.verifyEmailResendForm), children: [
4713
+ /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles3.fieldGroup, children: [
4714
+ /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles3.label, children: labels.resendEmailLabel }),
4715
+ /* @__PURE__ */ jsxRuntime.jsx(
4716
+ reactNative.TextInput,
4717
+ {
4718
+ accessibilityHint: labels.resendEmailHint,
4719
+ accessibilityLabel: labels.resendEmailLabel,
4720
+ autoCapitalize: "none",
4721
+ autoComplete: "email",
4722
+ autoCorrect: false,
4723
+ autoFocus: true,
4724
+ editable: !resend.submitting,
4725
+ keyboardType: "email-address",
4726
+ placeholder: labels.resendEmailPlaceholder,
4727
+ placeholderTextColor: theme.colors.textSecondary,
4728
+ style: styles3.input,
4729
+ testID: id(AuthTestIds.verifyEmailResendEmail),
4730
+ value: resend.email,
4731
+ onChangeText: resend.setEmail
4732
+ }
4733
+ )
4734
+ ] }),
4735
+ resend.missingEmail ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles3.errorText, children: labels.resendMissingEmail }) : null,
4736
+ /* @__PURE__ */ jsxRuntime.jsx(
4737
+ reactNative.TouchableOpacity,
4738
+ {
4739
+ accessibilityHint: labels.resendSubmitHint,
4740
+ accessibilityLabel: labels.resendSubmit,
4741
+ accessibilityRole: "button",
4742
+ disabled: resend.submitting,
4743
+ style: buttonStyle,
4744
+ testID: id(AuthTestIds.verifyEmailResendSubmit),
4745
+ onPress: submit,
4746
+ children: resend.submitting ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.ActivityIndicator, { color: theme.colors.onPrimary, size: "small" }) : /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles3.primaryButtonText, children: labels.resendSubmit })
4747
+ }
4748
+ )
4749
+ ] });
4750
+ }
4751
+
4752
+ // src/verify/VerifyEmailErrorCode.ts
4753
+ var VerifyEmailErrorCode = /* @__PURE__ */ ((VerifyEmailErrorCode2) => {
4754
+ VerifyEmailErrorCode2["TokenInvalid"] = "TOKEN_INVALID";
4755
+ VerifyEmailErrorCode2["TokenExpired"] = "TOKEN_EXPIRED";
4756
+ VerifyEmailErrorCode2["TokenUsed"] = "TOKEN_USED";
4757
+ VerifyEmailErrorCode2["KeycloakUpdateFailed"] = "KEYCLOAK_UPDATE_FAILED";
4758
+ VerifyEmailErrorCode2["MissingToken"] = "MISSING_TOKEN";
4759
+ VerifyEmailErrorCode2["Generic"] = "GENERIC";
4760
+ return VerifyEmailErrorCode2;
4761
+ })(VerifyEmailErrorCode || {});
4762
+
4763
+ // src/verify/VerifyEmailPhase.ts
4764
+ var VerifyEmailPhase = /* @__PURE__ */ ((VerifyEmailPhase2) => {
4765
+ VerifyEmailPhase2["Loading"] = "loading";
4766
+ VerifyEmailPhase2["Success"] = "success";
4767
+ VerifyEmailPhase2["Failure"] = "failure";
4768
+ return VerifyEmailPhase2;
4769
+ })(VerifyEmailPhase || {});
4770
+
4771
+ // src/verify/useVerifyEmail.ts
4772
+ var LOADING = {
4773
+ phase: "loading" /* Loading */,
4774
+ errorCode: "GENERIC" /* Generic */
4775
+ };
4776
+ var SUCCESS = {
4777
+ phase: "success" /* Success */,
4778
+ errorCode: "GENERIC" /* Generic */
4779
+ };
4780
+ var REJECTED = { success: false, errorCode: "GENERIC" /* Generic */ };
4781
+ function failure(errorCode) {
4782
+ return { phase: "failure" /* Failure */, errorCode };
4783
+ }
4784
+ function useVerifyEmail({ client, token, onVerified, onFailed }) {
4785
+ const [state, setState] = react.useState(LOADING);
4786
+ const latest = react.useRef({ client, onVerified, onFailed });
4787
+ latest.current = { client, onVerified, onFailed };
4788
+ react.useEffect(() => {
4789
+ if (token === "") {
4790
+ setState(failure("MISSING_TOKEN" /* MissingToken */));
4791
+ latest.current.onFailed?.("MISSING_TOKEN" /* MissingToken */);
4792
+ return void 0;
4793
+ }
4794
+ let active = true;
4795
+ setState(LOADING);
4796
+ const settle = (result) => {
4797
+ if (!active) {
4798
+ return;
4799
+ }
4800
+ if (result.success) {
4801
+ setState(SUCCESS);
4802
+ latest.current.onVerified?.();
4803
+ return;
4804
+ }
4805
+ setState(failure(result.errorCode));
4806
+ latest.current.onFailed?.(result.errorCode);
4807
+ };
4808
+ void latest.current.client.verifyEmail(token).catch(() => REJECTED).then(settle);
4809
+ return () => {
4810
+ active = false;
4811
+ };
4812
+ }, [token]);
4813
+ return state;
4814
+ }
4815
+
4816
+ // src/verify/verifyEmailErrorText.ts
4817
+ function verifyEmailErrorText(code, labels) {
4818
+ if (code === "TOKEN_INVALID" /* TokenInvalid */) {
4819
+ return labels.errorInvalid;
4820
+ }
4821
+ if (code === "TOKEN_EXPIRED" /* TokenExpired */) {
4822
+ return labels.errorExpired;
4823
+ }
4824
+ if (code === "TOKEN_USED" /* TokenUsed */) {
4825
+ return labels.errorUsed;
4826
+ }
4827
+ if (code === "MISSING_TOKEN" /* MissingToken */) {
4828
+ return labels.missingToken;
4829
+ }
4830
+ return labels.errorGeneric;
4831
+ }
4832
+ function VerifyEmailScreen({
4833
+ client,
4834
+ token,
4835
+ onContinue,
4836
+ theme: themeProp,
4837
+ labels: labelsProp,
4838
+ verifyUrlTemplate,
4839
+ onVerified,
4840
+ onFailed,
4841
+ testIdPrefix
4842
+ }) {
4843
+ const theme = useAuthTheme(themeProp);
4844
+ const styles3 = useAuthStyles(theme);
4845
+ const labels = react.useMemo(
4846
+ () => ({ ...DEFAULT_VERIFY_EMAIL_LABELS, ...labelsProp }),
4847
+ [labelsProp]
4848
+ );
4849
+ const { phase, errorCode } = useVerifyEmail({ client, token, onVerified, onFailed });
4850
+ const [resendOpen, setResendOpen] = react.useState(false);
4851
+ const openResend = react.useCallback(() => setResendOpen(true), []);
4852
+ const id = (base) => withTestIdPrefix(base, testIdPrefix);
4853
+ return /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: styles3.screen, testID: id(AuthTestIds.verifyEmailScreen), children: /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: styles3.card, children: [
4854
+ phase === "loading" /* Loading */ ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { testID: id(AuthTestIds.verifyEmailLoading), children: [
4855
+ /* @__PURE__ */ jsxRuntime.jsx(reactNative.ActivityIndicator, { color: theme.colors.primary, size: "large" }),
4856
+ /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { accessibilityRole: "header", style: styles3.title, children: labels.loadingTitle }),
4857
+ /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles3.subtitle, children: labels.loadingHint })
4858
+ ] }) : null,
4859
+ phase === "success" /* Success */ ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { testID: id(AuthTestIds.verifyEmailSuccess), children: [
4860
+ /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { accessibilityRole: "header", style: styles3.title, children: labels.successTitle }),
4861
+ /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles3.subtitle, children: labels.successBody }),
4862
+ /* @__PURE__ */ jsxRuntime.jsx(
4863
+ reactNative.TouchableOpacity,
4864
+ {
4865
+ accessibilityHint: labels.successContinueHint,
4866
+ accessibilityLabel: labels.successContinue,
4867
+ accessibilityRole: "button",
4868
+ style: styles3.primaryButton,
4869
+ testID: id(AuthTestIds.verifyEmailContinue),
4870
+ onPress: onContinue,
4871
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles3.primaryButtonText, children: labels.successContinue })
4872
+ }
4873
+ )
4874
+ ] }) : null,
4875
+ phase === "failure" /* Failure */ ? /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { testID: id(AuthTestIds.verifyEmailError), children: [
4876
+ /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { accessibilityRole: "header", style: styles3.title, children: labels.errorTitle }),
4877
+ /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles3.errorText, children: verifyEmailErrorText(errorCode, labels) }),
4878
+ resendOpen ? /* @__PURE__ */ jsxRuntime.jsx(
4879
+ VerifyEmailResendForm,
4880
+ {
4881
+ client,
4882
+ labels,
4883
+ styles: styles3,
4884
+ testIdPrefix,
4885
+ theme,
4886
+ verifyUrlTemplate
4887
+ }
4888
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
4889
+ reactNative.TouchableOpacity,
4890
+ {
4891
+ accessibilityHint: labels.resendCtaHint,
4892
+ accessibilityLabel: labels.resendCta,
4893
+ accessibilityRole: "button",
4894
+ style: styles3.primaryButton,
4895
+ testID: id(AuthTestIds.verifyEmailResendCta),
4896
+ onPress: openResend,
4897
+ children: /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: styles3.primaryButtonText, children: labels.resendCta })
4898
+ }
4899
+ )
4900
+ ] }) : null
4901
+ ] }) });
4902
+ }
4903
+ var VERIFY_EMAIL_ENDPOINT = "/bff/verify-email";
4904
+ var RESEND_VERIFICATION_ENDPOINT = "/bff/resend-verification";
4905
+ var CSRF_HEADER3 = "X-BFF-Csrf";
4906
+ var CSRF_HEADER_VALUE3 = "1";
4907
+ var JSON_CONTENT_TYPE3 = "application/json";
4908
+ var SERVER_ERROR_CODES2 = [
4909
+ "TOKEN_INVALID" /* TokenInvalid */,
4910
+ "TOKEN_EXPIRED" /* TokenExpired */,
4911
+ "TOKEN_USED" /* TokenUsed */,
4912
+ "KEYCLOAK_UPDATE_FAILED" /* KeycloakUpdateFailed */
4913
+ ];
4914
+ var GENERIC_FAILURE = { success: false, errorCode: "GENERIC" /* Generic */ };
4915
+ async function lazyFetchHttpClient3(request) {
4916
+ const fetchImpl = typeof fetch === "function" ? fetch.bind(globalThis) : void 0;
4917
+ if (fetchImpl === void 0) {
4918
+ throw new Error("createBffVerifyEmailClient: fetch is not available in this environment");
4919
+ }
4920
+ return authClient.createFetchHttpClient(fetchImpl)(request);
4921
+ }
4922
+ function isServerErrorCode(value) {
4923
+ return typeof value === "string" && SERVER_ERROR_CODES2.includes(value);
4924
+ }
4925
+ function isRecord3(value) {
4926
+ return typeof value === "object" && value !== null;
4927
+ }
4928
+ function decodeVerifyResponse(body) {
4929
+ if (!isRecord3(body)) {
4930
+ return GENERIC_FAILURE;
4931
+ }
4932
+ if (body.success === true) {
4933
+ return { success: true };
4934
+ }
4935
+ return isServerErrorCode(body.errorCode) ? { success: false, errorCode: body.errorCode } : GENERIC_FAILURE;
4936
+ }
4937
+ function createBffVerifyEmailClient(options = {}) {
4938
+ const http = options.http ?? lazyFetchHttpClient3;
4939
+ const baseUrl = options.baseUrl ?? "";
4940
+ const post = (path, body) => http({
4941
+ url: `${baseUrl}${path}`,
4942
+ method: "POST",
4943
+ headers: { "Content-Type": JSON_CONTENT_TYPE3, [CSRF_HEADER3]: CSRF_HEADER_VALUE3 },
4944
+ body: JSON.stringify(body),
4945
+ credentials: "include"
4946
+ });
4947
+ return {
4948
+ verifyEmail: async (token) => {
4949
+ try {
4950
+ const response = await post(VERIFY_EMAIL_ENDPOINT, { token });
4951
+ return decodeVerifyResponse(response.data);
4952
+ } catch {
4953
+ return GENERIC_FAILURE;
4954
+ }
4955
+ },
4956
+ resendVerification: async (email, verifyUrlTemplate) => {
4957
+ const body = verifyUrlTemplate === void 0 ? { email } : { email, verifyUrlTemplate };
4958
+ try {
4959
+ const response = await post(RESEND_VERIFICATION_ENDPOINT, body);
4960
+ return response.ok;
4961
+ } catch {
4962
+ return false;
4963
+ }
4964
+ }
4965
+ };
4966
+ }
4967
+
4968
+ // src/verify/verifyEmailUrl.ts
4969
+ var VERIFY_TOKEN_PLACEHOLDER = "{token}";
4970
+ var DEFAULT_VERIFY_PATH = "/verify-email";
4971
+ function readWindowOrigin() {
4972
+ if (typeof window === "undefined" || typeof window.location !== "object") {
4973
+ return null;
4974
+ }
4975
+ return typeof window.location.origin === "string" ? window.location.origin : null;
4976
+ }
4977
+ function nonEmpty(value) {
4978
+ return value !== void 0 && value !== "" ? value : null;
4979
+ }
4980
+ function buildVerifyUrlTemplate(options = {}) {
4981
+ const origin = nonEmpty(options.origin) ?? readWindowOrigin() ?? options.fallbackOrigin ?? "";
4982
+ const path = options.path ?? DEFAULT_VERIFY_PATH;
4983
+ return `${origin}${path}?token=${VERIFY_TOKEN_PLACEHOLDER}`;
4984
+ }
4985
+ function readVerifyToken(raw) {
4986
+ if (typeof raw === "string") {
4987
+ return raw;
4988
+ }
4989
+ const first = raw?.[0];
4990
+ return typeof first === "string" ? first : "";
4991
+ }
4641
4992
 
4642
4993
  Object.defineProperty(exports, "BffAuthClient", {
4643
4994
  enumerable: true,
@@ -4672,6 +5023,7 @@ exports.DEFAULT_PREFERRED_METHOD_HINT_LABELS = DEFAULT_PREFERRED_METHOD_HINT_LAB
4672
5023
  exports.DEFAULT_PREFERRED_METHOD_SETTINGS_LABELS = DEFAULT_PREFERRED_METHOD_SETTINGS_LABELS;
4673
5024
  exports.DEFAULT_REGISTER_LABELS = DEFAULT_REGISTER_LABELS;
4674
5025
  exports.DEFAULT_RESET_PASSWORD_LABELS = DEFAULT_RESET_PASSWORD_LABELS;
5026
+ exports.DEFAULT_VERIFY_EMAIL_LABELS = DEFAULT_VERIFY_EMAIL_LABELS;
4675
5027
  exports.DEVICE_PIN_ALLOWED_DIGITS = DEVICE_PIN_ALLOWED_DIGITS;
4676
5028
  exports.DEVICE_PIN_DEFAULT_DIGITS = DEVICE_PIN_DEFAULT_DIGITS;
4677
5029
  exports.DemoCredentialsHint = DemoCredentialsHint;
@@ -4700,16 +5052,24 @@ exports.PinForm = PinForm;
4700
5052
  exports.PreferredMethodHint = PreferredMethodHint;
4701
5053
  exports.PreferredMethodSettingsCard = PreferredMethodSettingsCard;
4702
5054
  exports.PrefillIntent = PrefillIntent;
5055
+ exports.RESEND_VERIFICATION_ENDPOINT = RESEND_VERIFICATION_ENDPOINT;
4703
5056
  exports.RegisterErrorCode = RegisterErrorCode;
4704
5057
  exports.RegisterForm = RegisterForm;
4705
5058
  exports.RegisterTestIds = RegisterTestIds;
4706
5059
  exports.ResetPasswordError = ResetPasswordError;
4707
5060
  exports.ResetPasswordForm = ResetPasswordForm;
5061
+ exports.VERIFY_EMAIL_ENDPOINT = VERIFY_EMAIL_ENDPOINT;
5062
+ exports.VERIFY_TOKEN_PLACEHOLDER = VERIFY_TOKEN_PLACEHOLDER;
5063
+ exports.VerifyEmailErrorCode = VerifyEmailErrorCode;
5064
+ exports.VerifyEmailPhase = VerifyEmailPhase;
5065
+ exports.VerifyEmailScreen = VerifyEmailScreen;
5066
+ exports.buildVerifyUrlTemplate = buildVerifyUrlTemplate;
4708
5067
  exports.cachePreferredMethod = cachePreferredMethod;
4709
5068
  exports.clearCachedPreferredMethod = clearCachedPreferredMethod;
4710
5069
  exports.collectUserRoles = collectUserRoles;
4711
5070
  exports.createBffAuthClient = createBffAuthClient;
4712
5071
  exports.createBffChangePasswordClient = createBffChangePasswordClient;
5072
+ exports.createBffVerifyEmailClient = createBffVerifyEmailClient;
4713
5073
  exports.createPreferencesClient = createPreferencesClient;
4714
5074
  exports.defaultAuthTheme = defaultAuthTheme;
4715
5075
  exports.deriveUsernameFromEmail = deriveUsernameFromEmail;
@@ -4721,6 +5081,7 @@ exports.performBffLogout = performBffLogout;
4721
5081
  exports.readCachedPreferredMethod = readCachedPreferredMethod;
4722
5082
  exports.readPasskeyError = readPasskeyError;
4723
5083
  exports.readPasskeyRegistered = readPasskeyRegistered;
5084
+ exports.readVerifyToken = readVerifyToken;
4724
5085
  exports.resolveAccessibleRoutes = resolveAccessibleRoutes;
4725
5086
  exports.resolveAccountList = resolveAccountList;
4726
5087
  exports.resolveDemoAccounts = resolveDemoAccounts;
@@ -4746,8 +5107,11 @@ exports.usePasskeyCeremony = usePasskeyCeremony;
4746
5107
  exports.usePinLogin = usePinLogin;
4747
5108
  exports.usePreferredMethodSetting = usePreferredMethodSetting;
4748
5109
  exports.useRegisterForm = useRegisterForm;
5110
+ exports.useResendVerification = useResendVerification;
4749
5111
  exports.useResetPasswordForm = useResetPasswordForm;
5112
+ exports.useVerifyEmail = useVerifyEmail;
4750
5113
  exports.validatePasswordPolicy = validatePasswordPolicy;
5114
+ exports.verifyEmailErrorText = verifyEmailErrorText;
4751
5115
  exports.withTestIdPrefix = withTestIdPrefix;
4752
5116
  //# sourceMappingURL=index.js.map
4753
5117
  //# sourceMappingURL=index.js.map