@ory/elements-react 0.0.0-pr.6b3fe62 → 0.0.0-pr.75b46aac

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
@@ -50,13 +50,18 @@ var defaultNodeOrder = [
50
50
  ];
51
51
  function defaultNodeSorter(a, b) {
52
52
  var _a, _b;
53
+ const aIsCaptcha = a.group === "captcha";
54
+ const bIsCaptcha = b.group === "captcha";
55
+ const aIsSubmit = clientFetch.isUiNodeInputAttributes(a.attributes) && a.attributes.type === "submit";
56
+ const bIsSubmit = clientFetch.isUiNodeInputAttributes(b.attributes) && b.attributes.type === "submit";
57
+ if (aIsCaptcha && bIsSubmit) {
58
+ return -1;
59
+ }
60
+ if (bIsCaptcha && aIsSubmit) {
61
+ return 1;
62
+ }
53
63
  const aGroupWeight = (_a = defaultNodeOrder.indexOf(a.group)) != null ? _a : 999;
54
64
  const bGroupWeight = (_b = defaultNodeOrder.indexOf(b.group)) != null ? _b : 999;
55
- if (b.group === "captcha" && clientFetch.isUiNodeInputAttributes(a.attributes) && a.attributes.type === "submit") {
56
- return aGroupWeight - (bGroupWeight - 2);
57
- } else if (a.group === "captcha" && clientFetch.isUiNodeInputAttributes(b.attributes) && b.attributes.type === "submit") {
58
- return aGroupWeight - 2 - bGroupWeight;
59
- }
60
65
  return aGroupWeight - bGroupWeight;
61
66
  }
62
67
  var defaultGroupOrder = [
@@ -94,28 +99,10 @@ function OryComponentProvider({
94
99
  }
95
100
  );
96
101
  }
97
- function isChoosingMethod(flow) {
98
- return flow.flow.ui.nodes.some(
99
- (node) => "name" in node.attributes && node.attributes.name === "screen" && "value" in node.attributes && node.attributes.value === "previous"
100
- ) || flow.flow.ui.nodes.some(
101
- (node) => node.group === clientFetch.UiNodeGroupEnum.IdentifierFirst && "name" in node.attributes && node.attributes.name === "identifier" && node.attributes.type === "hidden"
102
- ) || flow.flowType === clientFetch.FlowType.Login && flow.flow.requested_aal === "aal2";
103
- }
104
- function removeSsoNodes(nodes) {
105
- return nodes.filter(
106
- (node) => !(node.group === clientFetch.UiNodeGroupEnum.Oidc || node.group === clientFetch.UiNodeGroupEnum.Saml)
107
- );
108
- }
109
- function getFinalNodes(uniqueGroups, selectedGroup) {
110
- var _a, _b, _c, _d;
111
- const selectedNodes = selectedGroup ? (_a = uniqueGroups[selectedGroup]) != null ? _a : [] : [];
112
- return [
113
- ...(_b = uniqueGroups == null ? void 0 : uniqueGroups.identifier_first) != null ? _b : [],
114
- ...(_c = uniqueGroups == null ? void 0 : uniqueGroups.default) != null ? _c : [],
115
- ...(_d = uniqueGroups == null ? void 0 : uniqueGroups.captcha) != null ? _d : []
116
- ].flat().filter(
117
- (node) => "type" in node.attributes && node.attributes.type === "hidden"
118
- ).concat(selectedNodes);
102
+
103
+ // src/theme/default/utils/form.ts
104
+ function isGroupImmediateSubmit(group) {
105
+ return group === "code";
119
106
  }
120
107
  function triggerToWindowCall(trigger) {
121
108
  if (!trigger) {
@@ -192,21 +179,29 @@ function nodesToAuthMethodGroups(nodes, excludeAuthMethods = []) {
192
179
  function useNodesGroups(nodes, { omit } = {}) {
193
180
  const groupSorter = useGroupSorter();
194
181
  const groups = react.useMemo(() => {
195
- var _a;
182
+ var _a, _b;
196
183
  const groups2 = {};
184
+ const groupRetained = {};
197
185
  for (const node of nodes) {
186
+ const groupNodes = (_a = groups2[node.group]) != null ? _a : [];
187
+ groupNodes.push(node);
188
+ groups2[node.group] = groupNodes;
198
189
  if ((omit == null ? void 0 : omit.includes("script")) && clientFetch.isUiNodeScriptAttributes(node.attributes)) {
199
190
  continue;
200
191
  }
201
192
  if ((omit == null ? void 0 : omit.includes("input_hidden")) && clientFetch.isUiNodeInputAttributes(node.attributes) && node.attributes.type === "hidden") {
202
193
  continue;
203
194
  }
204
- const groupNodes = (_a = groups2[node.group]) != null ? _a : [];
205
- groupNodes.push(node);
206
- groups2[node.group] = groupNodes;
195
+ groupRetained[node.group] = ((_b = groupRetained[node.group]) != null ? _b : 0) + 1;
207
196
  }
208
- return groups2;
209
- }, [nodes]);
197
+ const finalGroups = {};
198
+ for (const [group, count] of Object.entries(groupRetained)) {
199
+ if (count > 0) {
200
+ finalGroups[group] = groups2[group];
201
+ }
202
+ }
203
+ return finalGroups;
204
+ }, [nodes, omit]);
210
205
  const entries = react.useMemo(
211
206
  () => Object.entries(groups).sort(([a], [b]) => groupSorter(a, b)),
212
207
  [groups, groupSorter]
@@ -219,6 +214,93 @@ function useNodesGroups(nodes, { omit } = {}) {
219
214
  var findNode = (nodes, opt) => nodes.find((n) => {
220
215
  return n.attributes.node_type === opt.node_type && (opt.group instanceof RegExp ? n.group.match(opt.group) : n.group === opt.group) && (opt.name && n.attributes.node_type === "input" ? opt.name instanceof RegExp ? n.attributes.name.match(opt.name) : n.attributes.name === opt.name : !opt.name);
221
216
  });
217
+ function useFunctionalNodes(nodes) {
218
+ return nodes.filter(
219
+ ({ group }) => [
220
+ clientFetch.UiNodeGroupEnum.Default,
221
+ clientFetch.UiNodeGroupEnum.IdentifierFirst,
222
+ clientFetch.UiNodeGroupEnum.Profile,
223
+ clientFetch.UiNodeGroupEnum.Captcha
224
+ ].includes(group)
225
+ );
226
+ }
227
+ function isUiNodeGroupEnum(method) {
228
+ return Object.values(clientFetch.UiNodeGroupEnum).includes(method);
229
+ }
230
+ function isSingleSignOnNode(node) {
231
+ return node.group === clientFetch.UiNodeGroupEnum.Oidc || node.group === clientFetch.UiNodeGroupEnum.Saml;
232
+ }
233
+ function hasSingleSignOnNodes(nodes) {
234
+ return nodes.some(isSingleSignOnNode);
235
+ }
236
+ function withoutSingleSignOnNodes(nodes) {
237
+ return nodes.filter((node) => !isSingleSignOnNode(node));
238
+ }
239
+ function isNodeVisible(node) {
240
+ if (clientFetch.isUiNodeScriptAttributes(node.attributes)) {
241
+ return false;
242
+ } else if (clientFetch.isUiNodeInputAttributes(node.attributes)) {
243
+ if (node.attributes.type === "hidden") {
244
+ return false;
245
+ }
246
+ }
247
+ return true;
248
+ }
249
+ function useNodeGroupsWithVisibleNodes(nodes) {
250
+ return react.useMemo(() => {
251
+ var _a, _b;
252
+ const groups = {};
253
+ const groupRetained = {};
254
+ for (const node of nodes) {
255
+ const groupNodes = (_a = groups[node.group]) != null ? _a : [];
256
+ const groupCount = (_b = groupRetained[node.group]) != null ? _b : 0;
257
+ groupNodes.push(node);
258
+ groups[node.group] = groupNodes;
259
+ if (!isNodeVisible(node)) {
260
+ continue;
261
+ }
262
+ groupRetained[node.group] = groupCount + 1;
263
+ }
264
+ const finalGroups = {};
265
+ for (const [group, count] of Object.entries(groupRetained)) {
266
+ if (count > 0) {
267
+ finalGroups[group] = groups[group];
268
+ }
269
+ }
270
+ return finalGroups;
271
+ }, [nodes]);
272
+ }
273
+
274
+ // src/components/card/two-step/utils.ts
275
+ function isChoosingMethod(flow) {
276
+ return flow.flow.ui.nodes.some(
277
+ (node) => "name" in node.attributes && node.attributes.name === "screen" && "value" in node.attributes && node.attributes.value === "previous"
278
+ ) || flow.flow.ui.nodes.some(
279
+ (node) => node.group === clientFetch.UiNodeGroupEnum.IdentifierFirst && "name" in node.attributes && node.attributes.name === "identifier" && node.attributes.type === "hidden"
280
+ ) || flow.flowType === clientFetch.FlowType.Login && flow.flow.requested_aal === "aal2";
281
+ }
282
+ function getFinalNodes(uniqueGroups, selectedGroup) {
283
+ var _a, _b, _c, _d;
284
+ const selectedNodes = selectedGroup ? (_a = uniqueGroups[selectedGroup]) != null ? _a : [] : [];
285
+ return [
286
+ ...(_b = uniqueGroups == null ? void 0 : uniqueGroups.identifier_first) != null ? _b : [],
287
+ ...(_c = uniqueGroups == null ? void 0 : uniqueGroups.default) != null ? _c : [],
288
+ ...(_d = uniqueGroups == null ? void 0 : uniqueGroups.captcha) != null ? _d : []
289
+ ].flat().filter(
290
+ (node) => "type" in node.attributes && node.attributes.type === "hidden"
291
+ ).concat(selectedNodes);
292
+ }
293
+ var handleAfterFormSubmit = (dispatchFormState) => (method) => {
294
+ if (typeof method !== "string" || !isUiNodeGroupEnum(method)) {
295
+ return;
296
+ }
297
+ if (isGroupImmediateSubmit(method)) {
298
+ dispatchFormState({
299
+ type: "action_select_method",
300
+ method
301
+ });
302
+ }
303
+ };
222
304
 
223
305
  // src/context/form-state.ts
224
306
  function findMethodWithMessage(nodes) {
@@ -288,6 +370,11 @@ function useFormStateReducer(flow) {
288
370
  setSelectedMethod(action2.method);
289
371
  return { current: "method_active", method: action2.method };
290
372
  }
373
+ case "action_method_selector": {
374
+ return {
375
+ current: "select_method"
376
+ };
377
+ }
291
378
  }
292
379
  return state;
293
380
  };
@@ -326,6 +413,110 @@ function OryFlowProvider({
326
413
  }
327
414
  );
328
415
  }
416
+
417
+ // src/client/config.ts
418
+ function isProduction() {
419
+ var _a, _b;
420
+ return ["production", "prod"].indexOf(
421
+ (_b = (_a = process.env.VERCEL_ENV) != null ? _a : process.env.NODE_ENV) != null ? _b : ""
422
+ ) > -1;
423
+ }
424
+ function frontendClient(sdkUrl, opts = {}) {
425
+ const config = new clientFetch.Configuration({
426
+ ...opts,
427
+ basePath: sdkUrl,
428
+ credentials: "include",
429
+ headers: {
430
+ Accept: "application/json",
431
+ ...opts.headers
432
+ }
433
+ });
434
+ return new clientFetch.FrontendApi(config);
435
+ }
436
+ var defaultProject = {
437
+ name: "Ory",
438
+ registration_enabled: true,
439
+ verification_enabled: true,
440
+ recovery_enabled: true,
441
+ recovery_ui_url: "/ui/recovery",
442
+ registration_ui_url: "/ui/registration",
443
+ verification_ui_url: "/ui/verification",
444
+ login_ui_url: "/ui/login",
445
+ settings_ui_url: "/ui/settings",
446
+ default_redirect_url: "/ui/welcome",
447
+ error_ui_url: "/ui/error",
448
+ default_locale: "en",
449
+ locale_behavior: "force_default"
450
+ };
451
+ function useOryConfiguration() {
452
+ const configCtx = react.useContext(OryConfigurationContext);
453
+ return {
454
+ sdk: {
455
+ ...configCtx.sdk,
456
+ frontend: frontendClient(configCtx.sdk.url, configCtx.sdk.options)
457
+ },
458
+ project: {
459
+ ...configCtx.project
460
+ }
461
+ };
462
+ }
463
+ var OryConfigurationContext = react.createContext({
464
+ sdk: computeSdkConfig({}),
465
+ project: defaultProject
466
+ });
467
+ function OryConfigurationProvider({
468
+ children,
469
+ sdk: initialConfig,
470
+ project
471
+ }) {
472
+ const configRef = react.useRef({
473
+ sdk: computeSdkConfig(initialConfig),
474
+ project: {
475
+ ...defaultProject,
476
+ ...project
477
+ }
478
+ });
479
+ return /* @__PURE__ */ jsxRuntime.jsx(OryConfigurationContext.Provider, { value: configRef.current, children });
480
+ }
481
+ function computeSdkConfig(config) {
482
+ if ((config == null ? void 0 : config.url) && typeof config.url === "string") {
483
+ console.debug("Using sdk url from config");
484
+ return {
485
+ url: config.url.replace(/\/$/, ""),
486
+ options: config.options || {}
487
+ };
488
+ }
489
+ return {
490
+ url: getSDKUrl(),
491
+ options: (config == null ? void 0 : config.options) || {}
492
+ };
493
+ }
494
+ function getSDKUrl() {
495
+ var _a;
496
+ if (typeof process !== "undefined" && process.versions && process.versions.node) {
497
+ if (isProduction()) {
498
+ const sdkUrl = (_a = process.env["NEXT_PUBLIC_ORY_SDK_URL"]) != null ? _a : process.env["ORY_SDK_URL"];
499
+ if (!sdkUrl) {
500
+ throw new Error(
501
+ "Unable to determine SDK URL. Please set NEXT_PUBLIC_ORY_SDK_URL and/or ORY_SDK_URL in production environments."
502
+ );
503
+ }
504
+ return sdkUrl.replace(/\/$/, "");
505
+ } else {
506
+ if (process.env["__NEXT_PRIVATE_ORIGIN"]) {
507
+ return process.env["__NEXT_PRIVATE_ORIGIN"].replace(/\/$/, "");
508
+ } else if (process.env["VERCEL_URL"]) {
509
+ return `https://${process.env["VERCEL_URL"]}`.replace(/\/$/, "");
510
+ }
511
+ }
512
+ }
513
+ if (typeof window !== "undefined") {
514
+ return window.location.origin;
515
+ }
516
+ throw new Error(
517
+ "Unable to determine SDK URL. Please set NEXT_PUBLIC_ORY_SDK_URL and/or ORY_SDK_URL or supply the sdk.url parameter in the Ory configuration."
518
+ );
519
+ }
329
520
  function mergeTranslations(customTranslations) {
330
521
  return Object.keys(customTranslations).reduce((acc, key) => {
331
522
  acc[key] = { ...OryLocales[key], ...customTranslations[key] };
@@ -355,17 +546,18 @@ var IntlProvider = ({
355
546
  function OryProvider({
356
547
  children,
357
548
  components: Components,
549
+ config,
358
550
  ...oryFlowProps
359
551
  }) {
360
552
  var _a, _b, _c;
361
- return /* @__PURE__ */ jsxRuntime.jsx(
553
+ return /* @__PURE__ */ jsxRuntime.jsx(OryConfigurationProvider, { sdk: config.sdk, project: config.project, children: /* @__PURE__ */ jsxRuntime.jsx(
362
554
  IntlProvider,
363
555
  {
364
- locale: (_b = (_a = oryFlowProps.config.intl) == null ? void 0 : _a.locale) != null ? _b : "en",
365
- customTranslations: (_c = oryFlowProps.config.intl) == null ? void 0 : _c.customTranslations,
556
+ locale: (_b = (_a = config.intl) == null ? void 0 : _a.locale) != null ? _b : "en",
557
+ customTranslations: (_c = config.intl) == null ? void 0 : _c.customTranslations,
366
558
  children: /* @__PURE__ */ jsxRuntime.jsx(OryFlowProvider, { ...oryFlowProps, children: /* @__PURE__ */ jsxRuntime.jsx(OryComponentProvider, { components: Components, children }) })
367
559
  }
368
- );
560
+ ) });
369
561
  }
370
562
  function OryCardHeader() {
371
563
  const { Card } = useComponents();
@@ -485,22 +677,6 @@ function OryCardContent({ children }) {
485
677
  return /* @__PURE__ */ jsxRuntime.jsx(Card.Content, { children });
486
678
  }
487
679
 
488
- // src/theme/default/utils/form.ts
489
- function isGroupImmediateSubmit(group) {
490
- return group === "code";
491
- }
492
- function frontendClient(sdkUrl, opts = {}) {
493
- const config = new clientFetch.Configuration({
494
- ...opts,
495
- basePath: sdkUrl,
496
- headers: {
497
- Accept: "application/json",
498
- ...opts.headers
499
- }
500
- });
501
- return new clientFetch.FrontendApi(config);
502
- }
503
-
504
680
  // src/util/internal.ts
505
681
  function replaceWindowFlowId(flow) {
506
682
  const url = new URL(window.location.href);
@@ -509,7 +685,7 @@ function replaceWindowFlowId(flow) {
509
685
  }
510
686
 
511
687
  // src/util/onSubmitLogin.ts
512
- async function onSubmitLogin({ config, flow }, {
688
+ async function onSubmitLogin({ flow }, config, {
513
689
  setFlowContainer,
514
690
  body,
515
691
  onRedirect
@@ -538,7 +714,6 @@ async function onSubmitLogin({ config, flow }, {
538
714
  },
539
715
  onValidationError: (body2) => {
540
716
  setFlowContainer({
541
- config,
542
717
  flow: body2,
543
718
  flowType: clientFetch.FlowType.Login
544
719
  });
@@ -547,18 +722,12 @@ async function onSubmitLogin({ config, flow }, {
547
722
  })
548
723
  );
549
724
  }
550
- async function onSubmitRecovery({ config, flow }, {
725
+ async function onSubmitRecovery({ flow }, config, {
551
726
  setFlowContainer,
552
727
  body,
553
728
  onRedirect
554
729
  }) {
555
- var _a;
556
- if (!config.sdk.url) {
557
- throw new Error(
558
- `Please supply your Ory Network SDK url to the Ory Elements configuration.`
559
- );
560
- }
561
- await frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {}).updateRecoveryFlowRaw({
730
+ await config.sdk.frontend.updateRecoveryFlowRaw({
562
731
  flow: flow.id,
563
732
  updateRecoveryFlowBody: body
564
733
  }).then(async (res) => {
@@ -571,8 +740,7 @@ async function onSubmitRecovery({ config, flow }, {
571
740
  }
572
741
  setFlowContainer({
573
742
  flow: flow2,
574
- flowType: clientFetch.FlowType.Recovery,
575
- config
743
+ flowType: clientFetch.FlowType.Recovery
576
744
  });
577
745
  }).catch(
578
746
  clientFetch.handleFlowError({
@@ -590,8 +758,7 @@ async function onSubmitRecovery({ config, flow }, {
590
758
  } else {
591
759
  setFlowContainer({
592
760
  flow: body2,
593
- flowType: clientFetch.FlowType.Recovery,
594
- config
761
+ flowType: clientFetch.FlowType.Recovery
595
762
  });
596
763
  }
597
764
  },
@@ -612,19 +779,12 @@ function handleContinueWithRecoveryUIError(error, config, onRedirect) {
612
779
  }
613
780
  onRedirect(clientFetch.recoveryUrl(config), true);
614
781
  }
615
- async function onSubmitRegistration({ config, flow }, {
782
+ async function onSubmitRegistration({ flow }, config, {
616
783
  setFlowContainer,
617
784
  body,
618
785
  onRedirect
619
786
  }) {
620
- var _a;
621
- if (!config.sdk.url) {
622
- throw new Error(
623
- `Please supply your Ory Network SDK url to the Ory Elements configuration.`
624
- );
625
- }
626
- const client = frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {});
627
- await client.updateRegistrationFlowRaw({
787
+ await config.sdk.frontend.updateRegistrationFlowRaw({
628
788
  flow: flow.id,
629
789
  updateRegistrationFlowBody: body
630
790
  }).then(async (res) => {
@@ -648,27 +808,19 @@ async function onSubmitRegistration({ config, flow }, {
648
808
  onValidationError: (body2) => {
649
809
  setFlowContainer({
650
810
  flow: body2,
651
- flowType: clientFetch.FlowType.Registration,
652
- config
811
+ flowType: clientFetch.FlowType.Registration
653
812
  });
654
813
  },
655
814
  onRedirect
656
815
  })
657
816
  );
658
817
  }
659
- async function onSubmitSettings({ config, flow }, {
818
+ async function onSubmitSettings({ flow }, config, {
660
819
  setFlowContainer,
661
820
  body,
662
821
  onRedirect
663
822
  }) {
664
- var _a;
665
- if (!config.sdk.url) {
666
- throw new Error(
667
- `Please supply your Ory Network SDK url to the Ory Elements configuration.`
668
- );
669
- }
670
- const client = frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {});
671
- await client.updateSettingsFlowRaw({
823
+ await config.sdk.frontend.updateSettingsFlowRaw({
672
824
  flow: flow.id,
673
825
  updateSettingsFlowBody: body
674
826
  }).then(async (res) => {
@@ -681,8 +833,7 @@ async function onSubmitSettings({ config, flow }, {
681
833
  }
682
834
  setFlowContainer({
683
835
  flow: body2,
684
- flowType: clientFetch.FlowType.Settings,
685
- config
836
+ flowType: clientFetch.FlowType.Settings
686
837
  });
687
838
  }).catch(
688
839
  clientFetch.handleFlowError({
@@ -696,8 +847,7 @@ async function onSubmitSettings({ config, flow }, {
696
847
  onValidationError: (body2) => {
697
848
  setFlowContainer({
698
849
  flow: body2,
699
- flowType: clientFetch.FlowType.Settings,
700
- config
850
+ flowType: clientFetch.FlowType.Settings
701
851
  });
702
852
  },
703
853
  onRedirect
@@ -714,25 +864,18 @@ async function onSubmitSettings({ config, flow }, {
714
864
  }
715
865
  });
716
866
  }
717
- async function onSubmitVerification({ config, flow }, {
867
+ async function onSubmitVerification({ flow }, config, {
718
868
  setFlowContainer,
719
869
  body,
720
870
  onRedirect
721
871
  }) {
722
- var _a;
723
- if (!config.sdk.url) {
724
- throw new Error(
725
- `Please supply your Ory Network SDK URL to the Ory Elements configuration.`
726
- );
727
- }
728
- await frontendClient(config.sdk.url, (_a = config.sdk.options) != null ? _a : {}).updateVerificationFlowRaw({
872
+ await config.sdk.frontend.updateVerificationFlowRaw({
729
873
  flow: flow.id,
730
874
  updateVerificationFlowBody: body
731
875
  }).then(
732
876
  async (res) => setFlowContainer({
733
877
  flow: await res.value(),
734
- flowType: clientFetch.FlowType.Verification,
735
- config
878
+ flowType: clientFetch.FlowType.Verification
736
879
  })
737
880
  ).catch(
738
881
  clientFetch.handleFlowError({
@@ -746,8 +889,7 @@ async function onSubmitVerification({ config, flow }, {
746
889
  onValidationError: (body2) => {
747
890
  setFlowContainer({
748
891
  flow: body2,
749
- flowType: clientFetch.FlowType.Verification,
750
- config
892
+ flowType: clientFetch.FlowType.Verification
751
893
  });
752
894
  },
753
895
  onRedirect
@@ -760,6 +902,7 @@ var supportsSelectAccountPrompt = ["google", "github"];
760
902
  function useOryFormSubmit(onAfterSubmit) {
761
903
  const flowContainer = useOryFlow();
762
904
  const methods = reactHookForm.useFormContext();
905
+ const config = useOryConfiguration();
763
906
  const handleSuccess = (flow) => {
764
907
  flowContainer.setFlowContainer(flow);
765
908
  methods.reset(computeDefaultValues(flow.flow.ui.nodes));
@@ -776,7 +919,7 @@ function useOryFormSubmit(onAfterSubmit) {
776
919
  if (submitData.method === "code" && data.code) {
777
920
  submitData.resend = "";
778
921
  }
779
- await onSubmitLogin(flowContainer, {
922
+ await onSubmitLogin(flowContainer, config, {
780
923
  onRedirect,
781
924
  setFlowContainer: handleSuccess,
782
925
  body: submitData
@@ -790,7 +933,7 @@ function useOryFormSubmit(onAfterSubmit) {
790
933
  if (submitData.method === "code" && submitData.code) {
791
934
  submitData.resend = "";
792
935
  }
793
- await onSubmitRegistration(flowContainer, {
936
+ await onSubmitRegistration(flowContainer, config, {
794
937
  onRedirect,
795
938
  setFlowContainer: handleSuccess,
796
939
  body: submitData
@@ -798,7 +941,7 @@ function useOryFormSubmit(onAfterSubmit) {
798
941
  break;
799
942
  }
800
943
  case clientFetch.FlowType.Verification:
801
- await onSubmitVerification(flowContainer, {
944
+ await onSubmitVerification(flowContainer, config, {
802
945
  onRedirect,
803
946
  setFlowContainer: handleSuccess,
804
947
  body: data
@@ -811,7 +954,7 @@ function useOryFormSubmit(onAfterSubmit) {
811
954
  if (data.code) {
812
955
  submitData.email = "";
813
956
  }
814
- await onSubmitRecovery(flowContainer, {
957
+ await onSubmitRecovery(flowContainer, config, {
815
958
  onRedirect,
816
959
  setFlowContainer: handleSuccess,
817
960
  body: submitData
@@ -839,7 +982,7 @@ function useOryFormSubmit(onAfterSubmit) {
839
982
  if ("passkey_remove" in submitData) {
840
983
  submitData.method = "passkey";
841
984
  }
842
- await onSubmitSettings(flowContainer, {
985
+ await onSubmitSettings(flowContainer, config, {
843
986
  onRedirect,
844
987
  setFlowContainer: handleSuccess,
845
988
  body: submitData
@@ -886,6 +1029,9 @@ function OryForm({
886
1029
  const onSubmit = useOryFormSubmit(onAfterSubmit);
887
1030
  const hasMethods = flowContainer.flow.ui.nodes.some((node) => {
888
1031
  if (clientFetch.isUiNodeInputAttributes(node.attributes)) {
1032
+ if (node.attributes.type === "hidden") {
1033
+ return false;
1034
+ }
889
1035
  return node.attributes.name !== "csrf_token";
890
1036
  } else if (clientFetch.isUiNodeAnchorAttributes(node.attributes)) {
891
1037
  return true;
@@ -905,12 +1051,9 @@ function OryForm({
905
1051
  }),
906
1052
  type: "error"
907
1053
  };
908
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": dataTestId, children: [
909
- /* @__PURE__ */ jsxRuntime.jsx(Message.Root, { children: /* @__PURE__ */ jsxRuntime.jsx(Message.Content, { message: m }, m.id) }),
910
- /* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
911
- ] });
1054
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-testid": dataTestId, children: /* @__PURE__ */ jsxRuntime.jsx(Message.Root, { children: /* @__PURE__ */ jsxRuntime.jsx(Message.Content, { message: m }, m.id) }) });
912
1055
  }
913
- if (flowContainer.flowType === clientFetch.FlowType.Login && flowContainer.formState.current === "method_active" && flowContainer.formState.method === "code") {
1056
+ if ((flowContainer.flowType === clientFetch.FlowType.Login || flowContainer.flowType === clientFetch.FlowType.Registration) && flowContainer.formState.current === "method_active" && flowContainer.formState.method === "code") {
914
1057
  methods.setValue("method", "code");
915
1058
  }
916
1059
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -964,10 +1107,7 @@ var NodeInput = ({
964
1107
  const isResendNode = ((_a = node.meta.label) == null ? void 0 : _a.id) === 1070008;
965
1108
  const isScreenSelectionNode = "name" in node.attributes && node.attributes.name === "screen";
966
1109
  const setFormValue = () => {
967
- if (isResendNode || isScreenSelectionNode || node.group === clientFetch.UiNodeGroupEnum.Oauth2Consent) {
968
- return;
969
- }
970
- if (attrs.value !== void 0) {
1110
+ if (attrs.value && !(isResendNode || isScreenSelectionNode || node.group === clientFetch.UiNodeGroupEnum.Oauth2Consent)) {
971
1111
  setValue(attrs.name, attrs.value);
972
1112
  }
973
1113
  };
@@ -1111,7 +1251,7 @@ function OryFormOidcButtons() {
1111
1251
  if (filteredNodes.length === 0) {
1112
1252
  return null;
1113
1253
  }
1114
- return /* @__PURE__ */ jsxRuntime.jsx(Form.OidcRoot, { nodes: filteredNodes, children: filteredNodes.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(
1254
+ return /* @__PURE__ */ jsxRuntime.jsx(Form.OidcRoot, { nodes: filteredNodes, children: filteredNodes.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
1115
1255
  Node2.OidcButton,
1116
1256
  {
1117
1257
  node,
@@ -1124,7 +1264,7 @@ function OryFormOidcButtons() {
1124
1264
  setValue("method", node.group);
1125
1265
  }
1126
1266
  },
1127
- k
1267
+ clientFetch.getNodeId(node)
1128
1268
  )) });
1129
1269
  }
1130
1270
  function OryFormSocialButtonsForm() {
@@ -1139,24 +1279,104 @@ function OryFormSocialButtonsForm() {
1139
1279
  }
1140
1280
  return /* @__PURE__ */ jsxRuntime.jsx(OryFormProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(OryForm, { "data-testid": `ory/form/methods/oidc-saml`, children: /* @__PURE__ */ jsxRuntime.jsx(OryFormOidcButtons, {}) }) });
1141
1281
  }
1142
- function isUINodeGroupEnum(method) {
1143
- return Object.values(clientFetch.UiNodeGroupEnum).includes(method);
1282
+ function OryTwoStepCardStateMethodActive({
1283
+ formState
1284
+ }) {
1285
+ const { Form } = useComponents();
1286
+ const { flow, flowType, dispatchFormState } = useOryFlow();
1287
+ const { ui } = flow;
1288
+ const nodeSorter = useNodeSorter();
1289
+ const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
1290
+ const groupsToShow = useNodeGroupsWithVisibleNodes(ui.nodes);
1291
+ const finalNodes = getFinalNodes(groupsToShow, formState.method);
1292
+ const selectedMethodIsSocial = formState.method === clientFetch.UiNodeGroupEnum.Oidc || formState.method === clientFetch.UiNodeGroupEnum.Saml;
1293
+ return /* @__PURE__ */ jsxRuntime.jsxs(OryCard, { children: [
1294
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardHeader, {}),
1295
+ /* @__PURE__ */ jsxRuntime.jsxs(OryCardContent, { children: [
1296
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardValidationMessages, {}),
1297
+ selectedMethodIsSocial && /* @__PURE__ */ jsxRuntime.jsx(OryFormSocialButtonsForm, {}),
1298
+ /* @__PURE__ */ jsxRuntime.jsx(
1299
+ OryForm,
1300
+ {
1301
+ "data-testid": `ory/form/methods/local`,
1302
+ onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
1303
+ children: /* @__PURE__ */ jsxRuntime.jsxs(Form.Group, { children: [
1304
+ ui.nodes.filter(
1305
+ (n) => clientFetch.isUiNodeScriptAttributes(n.attributes) || n.group === clientFetch.UiNodeGroupEnum.Default || n.group === clientFetch.UiNodeGroupEnum.Profile
1306
+ ).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k)),
1307
+ finalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1308
+ ] })
1309
+ }
1310
+ )
1311
+ ] }),
1312
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
1313
+ ] });
1144
1314
  }
1145
- function OryTwoStepCard() {
1146
- var _a, _b, _c, _d;
1315
+ function OryTwoStepCardStateProvideIdentifier() {
1147
1316
  const { Form, Card } = useComponents();
1148
- const { flow, flowType, formState, dispatchFormState } = useOryFlow();
1149
- const { ui } = flow;
1317
+ const { flowType, flow, dispatchFormState } = useOryFlow();
1150
1318
  const nodeSorter = useNodeSorter();
1151
1319
  const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
1152
- const groupsToShow = useNodesGroups(ui.nodes, {
1153
- // We only want to render groups that have visible elements.
1154
- omit: ["script", "input_hidden"]
1155
- });
1156
- const authMethodBlocks = Object.fromEntries(
1320
+ const nonSsoNodes = withoutSingleSignOnNodes(flow.ui.nodes).sort(sortNodes);
1321
+ const hasSso = flow.ui.nodes.filter(isNodeVisible).some(
1322
+ (node) => node.group === clientFetch.UiNodeGroupEnum.Oidc || node.group === clientFetch.UiNodeGroupEnum.Saml
1323
+ );
1324
+ const showSsoDivider = hasSso && nonSsoNodes.some(isNodeVisible);
1325
+ return /* @__PURE__ */ jsxRuntime.jsxs(OryCard, { children: [
1326
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardHeader, {}),
1327
+ /* @__PURE__ */ jsxRuntime.jsxs(OryCardContent, { children: [
1328
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardValidationMessages, {}),
1329
+ /* @__PURE__ */ jsxRuntime.jsx(OryFormSocialButtonsForm, {}),
1330
+ /* @__PURE__ */ jsxRuntime.jsx(
1331
+ OryForm,
1332
+ {
1333
+ "data-testid": `ory/form/methods/local`,
1334
+ onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
1335
+ children: /* @__PURE__ */ jsxRuntime.jsxs(Form.Group, { children: [
1336
+ showSsoDivider && /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
1337
+ nonSsoNodes.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1338
+ ] })
1339
+ }
1340
+ )
1341
+ ] }),
1342
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
1343
+ ] });
1344
+ }
1345
+ function AuthMethodList({
1346
+ options,
1347
+ setSelectedGroup
1348
+ }) {
1349
+ const { Card } = useComponents();
1350
+ const { setValue, getValues } = reactHookForm.useFormContext();
1351
+ if (Object.entries(options).length === 0) {
1352
+ return null;
1353
+ }
1354
+ const handleClick = (group, options2) => {
1355
+ var _a, _b, _c, _d;
1356
+ if (isGroupImmediateSubmit(group)) {
1357
+ if (group === "code" && !getValues("identifier") && ((_b = (_a = options2 == null ? void 0 : options2.title) == null ? void 0 : _a.values) == null ? void 0 : _b.address)) {
1358
+ setValue("identifier", (_d = (_c = options2 == null ? void 0 : options2.title) == null ? void 0 : _c.values) == null ? void 0 : _d.address);
1359
+ }
1360
+ setValue("method", group);
1361
+ } else {
1362
+ setSelectedGroup(group);
1363
+ }
1364
+ };
1365
+ return /* @__PURE__ */ jsxRuntime.jsx(Card.AuthMethodListContainer, { children: Object.entries(options).map(([group, options2]) => /* @__PURE__ */ jsxRuntime.jsx(
1366
+ Card.AuthMethodListItem,
1367
+ {
1368
+ group,
1369
+ title: options2.title,
1370
+ onClick: () => handleClick(group, options2)
1371
+ },
1372
+ group
1373
+ )) });
1374
+ }
1375
+ function toAuthMethodPickerOptions(visibleGroups) {
1376
+ return Object.fromEntries(
1157
1377
  Object.values(clientFetch.UiNodeGroupEnum).filter((group) => {
1158
- var _a2;
1159
- return (_a2 = groupsToShow.groups[group]) == null ? void 0 : _a2.length;
1378
+ var _a;
1379
+ return (_a = visibleGroups[group]) == null ? void 0 : _a.length;
1160
1380
  }).filter(
1161
1381
  (group) => ![
1162
1382
  clientFetch.UiNodeGroupEnum.Oidc,
@@ -1168,16 +1388,18 @@ function OryTwoStepCard() {
1168
1388
  ].includes(group)
1169
1389
  ).map((g) => [g, {}])
1170
1390
  );
1171
- const authMethodAdditionalNodes = ui.nodes.filter(
1172
- ({ group }) => [
1173
- clientFetch.UiNodeGroupEnum.Oidc,
1174
- clientFetch.UiNodeGroupEnum.Saml,
1175
- clientFetch.UiNodeGroupEnum.Default,
1176
- clientFetch.UiNodeGroupEnum.IdentifierFirst,
1177
- clientFetch.UiNodeGroupEnum.Profile,
1178
- clientFetch.UiNodeGroupEnum.Captcha
1179
- ].includes(group)
1180
- );
1391
+ }
1392
+ function OryTwoStepCardStateSelectMethod() {
1393
+ var _a, _b, _c, _d;
1394
+ const { Form, Card, Message } = useComponents();
1395
+ const { flow, flowType, dispatchFormState } = useOryFlow();
1396
+ const { ui } = flow;
1397
+ const intl = reactIntl.useIntl();
1398
+ const nodeSorter = useNodeSorter();
1399
+ const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
1400
+ const visibleGroups = useNodeGroupsWithVisibleNodes(ui.nodes);
1401
+ const authMethodBlocks = toAuthMethodPickerOptions(visibleGroups);
1402
+ const authMethodAdditionalNodes = useFunctionalNodes(ui.nodes);
1181
1403
  if (clientFetch.UiNodeGroupEnum.Code in authMethodBlocks) {
1182
1404
  let identifier = (_b = (_a = findNode(ui.nodes, {
1183
1405
  group: "identifier_first",
@@ -1198,99 +1420,58 @@ function OryTwoStepCard() {
1198
1420
  };
1199
1421
  }
1200
1422
  }
1201
- const nonSsoNodes = removeSsoNodes(ui.nodes);
1202
- const finalNodes = formState.current === "method_active" ? getFinalNodes(groupsToShow.groups, formState.method) : [];
1203
- const handleAfterFormSubmit = (method) => {
1204
- if (typeof method !== "string" || !isUINodeGroupEnum(method)) {
1205
- return;
1206
- }
1207
- if (isGroupImmediateSubmit(method)) {
1208
- dispatchFormState({
1209
- type: "action_select_method",
1210
- method
1211
- });
1212
- }
1423
+ const noMethods = {
1424
+ id: 5000002,
1425
+ text: intl.formatMessage({
1426
+ id: `identities.messages.5000002`,
1427
+ defaultMessage: "No authentication methods are available for this request. Please contact the site or app owner."
1428
+ }),
1429
+ type: "error"
1213
1430
  };
1214
- const hasSso = ui.nodes.some(
1215
- (node) => node.group === clientFetch.UiNodeGroupEnum.Oidc || node.group === clientFetch.UiNodeGroupEnum.Saml
1216
- );
1217
- const showSso = !(formState.current === "method_active" && !(formState.method === clientFetch.UiNodeGroupEnum.Oidc || formState.method === clientFetch.UiNodeGroupEnum.Saml));
1218
- const showSsoDivider = hasSso && nonSsoNodes.filter((n) => {
1219
- if (clientFetch.isUiNodeInputAttributes(n.attributes)) {
1220
- return n.attributes.type !== clientFetch.UiNodeInputAttributesTypeEnum.Hidden;
1221
- } else if (clientFetch.isUiNodeScriptAttributes(n.attributes)) {
1222
- return false;
1223
- }
1224
- return true;
1225
- }).length > 0;
1226
1431
  return /* @__PURE__ */ jsxRuntime.jsxs(OryCard, { children: [
1227
1432
  /* @__PURE__ */ jsxRuntime.jsx(OryCardHeader, {}),
1228
1433
  /* @__PURE__ */ jsxRuntime.jsxs(OryCardContent, { children: [
1229
1434
  /* @__PURE__ */ jsxRuntime.jsx(OryCardValidationMessages, {}),
1230
- showSso && /* @__PURE__ */ jsxRuntime.jsx(OryFormSocialButtonsForm, {}),
1231
- /* @__PURE__ */ jsxRuntime.jsxs(
1435
+ /* @__PURE__ */ jsxRuntime.jsx(OryFormSocialButtonsForm, {}),
1436
+ Object.entries(authMethodBlocks).length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
1232
1437
  OryForm,
1233
1438
  {
1234
1439
  "data-testid": `ory/form/methods/local`,
1235
- onAfterSubmit: handleAfterFormSubmit,
1236
- children: [
1237
- formState.current === "provide_identifier" && /* @__PURE__ */ jsxRuntime.jsxs(Form.Group, { children: [
1238
- showSsoDivider && /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
1239
- nonSsoNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1240
- ] }),
1241
- formState.current === "select_method" && /* @__PURE__ */ jsxRuntime.jsxs(Form.Group, { children: [
1242
- Object.entries(authMethodBlocks).length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
1243
- Object.entries(authMethodBlocks).length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
1244
- AuthMethodList,
1245
- {
1246
- options: authMethodBlocks,
1247
- setSelectedGroup: (group) => dispatchFormState({
1248
- type: "action_select_method",
1249
- method: group
1250
- })
1251
- }
1252
- ),
1253
- authMethodAdditionalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1254
- ] }),
1255
- formState.current === "method_active" && /* @__PURE__ */ jsxRuntime.jsxs(Form.Group, { children: [
1256
- ui.nodes.filter(
1257
- (n) => clientFetch.isUiNodeScriptAttributes(n.attributes) || n.group === clientFetch.UiNodeGroupEnum.Captcha
1258
- ).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k)),
1259
- finalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1260
- ] }),
1261
- /* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
1262
- ]
1440
+ onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
1441
+ children: /* @__PURE__ */ jsxRuntime.jsxs(Form.Group, { children: [
1442
+ /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
1443
+ /* @__PURE__ */ jsxRuntime.jsx(
1444
+ AuthMethodList,
1445
+ {
1446
+ options: authMethodBlocks,
1447
+ setSelectedGroup: (group) => dispatchFormState({
1448
+ type: "action_select_method",
1449
+ method: group
1450
+ })
1451
+ }
1452
+ ),
1453
+ authMethodAdditionalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1454
+ ] })
1263
1455
  }
1264
- )
1265
- ] })
1456
+ ) : !hasSingleSignOnNodes(ui.nodes) && /* @__PURE__ */ jsxRuntime.jsx("div", { "data-testid": `ory/form/methods/local`, children: /* @__PURE__ */ jsxRuntime.jsx(Message.Root, { children: /* @__PURE__ */ jsxRuntime.jsx(Message.Content, { message: noMethods }, noMethods.id) }) })
1457
+ ] }),
1458
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
1266
1459
  ] });
1267
1460
  }
1268
- function AuthMethodList({ options, setSelectedGroup }) {
1269
- const { Card } = useComponents();
1270
- const { setValue, getValues } = reactHookForm.useFormContext();
1271
- if (Object.entries(options).length === 0) {
1272
- return null;
1461
+ function OryTwoStepCard() {
1462
+ const { formState } = useOryFlow();
1463
+ switch (formState.current) {
1464
+ case "provide_identifier":
1465
+ return /* @__PURE__ */ jsxRuntime.jsx(OryTwoStepCardStateProvideIdentifier, {});
1466
+ case "select_method":
1467
+ return /* @__PURE__ */ jsxRuntime.jsx(OryTwoStepCardStateSelectMethod, {});
1468
+ case "method_active":
1469
+ return /* @__PURE__ */ jsxRuntime.jsx(OryTwoStepCardStateMethodActive, { formState });
1273
1470
  }
1274
- const handleClick = (group, options2) => {
1275
- var _a, _b, _c, _d;
1276
- if (isGroupImmediateSubmit(group)) {
1277
- if (group === "code" && !getValues("identifier") && ((_b = (_a = options2 == null ? void 0 : options2.title) == null ? void 0 : _a.values) == null ? void 0 : _b.address)) {
1278
- setValue("identifier", (_d = (_c = options2 == null ? void 0 : options2.title) == null ? void 0 : _c.values) == null ? void 0 : _d.address);
1279
- }
1280
- setValue("method", group);
1281
- } else {
1282
- setSelectedGroup(group);
1283
- }
1284
- };
1285
- return /* @__PURE__ */ jsxRuntime.jsx(Card.AuthMethodListContainer, { children: Object.entries(options).map(([group, options2]) => /* @__PURE__ */ jsxRuntime.jsx(
1286
- Card.AuthMethodListItem,
1287
- {
1288
- group,
1289
- title: options2.title,
1290
- onClick: () => handleClick(group, options2)
1291
- },
1292
- group
1293
- )) });
1471
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1472
+ "unknown form state: ",
1473
+ formState.current
1474
+ ] });
1294
1475
  }
1295
1476
  function OryFormGroups({ groups }) {
1296
1477
  const {
@@ -1300,8 +1481,8 @@ function OryFormGroups({ groups }) {
1300
1481
  const { flowType } = useOryFlow();
1301
1482
  const { Form } = useComponents();
1302
1483
  const nodes = ui.nodes.filter((node) => groups.indexOf(node.group) > -1).sort((a, b) => nodeSorter(a, b, { flowType }));
1303
- return /* @__PURE__ */ jsxRuntime.jsx(Form.Group, { children: nodes.map((node, k) => {
1304
- return /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k);
1484
+ return /* @__PURE__ */ jsxRuntime.jsx(Form.Group, { children: nodes.map((node) => {
1485
+ return /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node));
1305
1486
  }) });
1306
1487
  }
1307
1488
  function OryFormSection({
@@ -1337,7 +1518,7 @@ function OryConsentCard() {
1337
1518
  /* @__PURE__ */ jsxRuntime.jsx(OryCardHeader, {}),
1338
1519
  /* @__PURE__ */ jsxRuntime.jsx(OryCardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs(OryForm, { children: [
1339
1520
  /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
1340
- /* @__PURE__ */ jsxRuntime.jsx(Form.Group, { children: flow.flow.ui.nodes.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k)) }),
1521
+ /* @__PURE__ */ jsxRuntime.jsx(Form.Group, { children: flow.flow.ui.nodes.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node))) }),
1341
1522
  /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
1342
1523
  /* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
1343
1524
  ] }) })
@@ -1708,7 +1889,7 @@ function SettingsSectionContent({ group, nodes }) {
1708
1889
  "data-testid": "ory/screen/settings/group/totp",
1709
1890
  children: [
1710
1891
  /* @__PURE__ */ jsxRuntime.jsx(OrySettingsTotp, { nodes: (_a = groupedNodes.groups.totp) != null ? _a : [] }),
1711
- (_b = groupedNodes.groups.default) == null ? void 0 : _b.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1892
+ (_b = groupedNodes.groups.default) == null ? void 0 : _b.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1712
1893
  ]
1713
1894
  }
1714
1895
  );
@@ -1726,7 +1907,7 @@ function SettingsSectionContent({ group, nodes }) {
1726
1907
  nodes: (_c = groupedNodes.groups.lookup_secret) != null ? _c : []
1727
1908
  }
1728
1909
  ),
1729
- (_d = groupedNodes.groups.default) == null ? void 0 : _d.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1910
+ (_d = groupedNodes.groups.default) == null ? void 0 : _d.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1730
1911
  ]
1731
1912
  }
1732
1913
  );
@@ -1739,7 +1920,7 @@ function SettingsSectionContent({ group, nodes }) {
1739
1920
  "data-testid": "ory/screen/settings/group/oidc",
1740
1921
  children: [
1741
1922
  /* @__PURE__ */ jsxRuntime.jsx(OrySettingsOidc, { nodes: (_e = groupedNodes.groups.oidc) != null ? _e : [] }),
1742
- (_f = groupedNodes.groups.default) == null ? void 0 : _f.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1923
+ (_f = groupedNodes.groups.default) == null ? void 0 : _f.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1743
1924
  ]
1744
1925
  }
1745
1926
  );
@@ -1752,7 +1933,7 @@ function SettingsSectionContent({ group, nodes }) {
1752
1933
  "data-testid": "ory/screen/settings/group/webauthn",
1753
1934
  children: [
1754
1935
  /* @__PURE__ */ jsxRuntime.jsx(OrySettingsWebauthn, { nodes: (_g = groupedNodes.groups.webauthn) != null ? _g : [] }),
1755
- (_h = groupedNodes.groups.default) == null ? void 0 : _h.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1936
+ (_h = groupedNodes.groups.default) == null ? void 0 : _h.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1756
1937
  ]
1757
1938
  }
1758
1939
  );
@@ -1765,7 +1946,7 @@ function SettingsSectionContent({ group, nodes }) {
1765
1946
  "data-testid": "ory/screen/settings/group/passkey",
1766
1947
  children: [
1767
1948
  /* @__PURE__ */ jsxRuntime.jsx(OrySettingsPasskey, { nodes: (_i = groupedNodes.groups.passkey) != null ? _i : [] }),
1768
- (_j = groupedNodes.groups.default) == null ? void 0 : _j.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1949
+ (_j = groupedNodes.groups.default) == null ? void 0 : _j.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1769
1950
  ]
1770
1951
  }
1771
1952
  );
@@ -1786,16 +1967,16 @@ function SettingsSectionContent({ group, nodes }) {
1786
1967
  id: `settings.${group}.description`
1787
1968
  }),
1788
1969
  children: [
1789
- (_k = groupedNodes.groups.default) == null ? void 0 : _k.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k)),
1970
+ (_k = groupedNodes.groups.default) == null ? void 0 : _k.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node))),
1790
1971
  nodes.filter(
1791
1972
  (node) => "type" in node.attributes && node.attributes.type !== "submit"
1792
- ).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1973
+ ).map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1793
1974
  ]
1794
1975
  }
1795
1976
  ),
1796
1977
  /* @__PURE__ */ jsxRuntime.jsx(Card.SettingsSectionFooter, { children: nodes.filter(
1797
1978
  (node) => "type" in node.attributes && node.attributes.type === "submit"
1798
- ).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k)) })
1979
+ ).map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node))) })
1799
1980
  ]
1800
1981
  }
1801
1982
  );
@@ -1809,7 +1990,7 @@ function OrySettingsCard() {
1809
1990
  const scriptNodes = onlyScriptNodes(flow.ui.nodes);
1810
1991
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1811
1992
  /* @__PURE__ */ jsxRuntime.jsx(OryCardValidationMessages, {}),
1812
- scriptNodes.map((n) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node: n })),
1993
+ scriptNodes.map((n) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node: n }, clientFetch.getNodeId(n))),
1813
1994
  uniqueGroups.entries.map(([group, nodes]) => {
1814
1995
  if (group === clientFetch.UiNodeGroupEnum.Default) {
1815
1996
  return null;
@@ -2116,9 +2297,11 @@ var en_default = {
2116
2297
  "card.header.parts.oidc": "a social provider",
2117
2298
  "card.header.parts.password.registration": "your {identifierLabel} and a password",
2118
2299
  "card.header.parts.password.login": "your {identifierLabel} and password",
2119
- "card.header.parts.code": "a code sent to your email",
2300
+ "card.header.parts.code": "a code sent to you",
2120
2301
  "card.header.parts.passkey": "a Passkey",
2121
2302
  "card.header.parts.webauthn": "a security key",
2303
+ "card.header.parts.totp": "your authenticator app",
2304
+ "card.header.parts.lookup_secret": "a backup recovery code",
2122
2305
  "card.header.parts.identifier-first": "your {identifierLabel}",
2123
2306
  "card.header.description.login": "Sign in with {identifierLabel}",
2124
2307
  "card.header.description.registration": "Sign up with {identifierLabel}",
@@ -2351,28 +2534,30 @@ var de_default = {
2351
2534
  "login.cancel-label": "Nicht das richtige Konto?",
2352
2535
  "identities.messages.1010023": "Code an {address} senden",
2353
2536
  "identities.messages.1010016": "Sie haben versucht, sich mit \u201E{duplicateIdentifier}\u201C anzumelden, aber diese E-Mail-Adresse wird bereits von einem anderen Konto verwendet. \nMelden Sie sich mit einer der folgenden Optionen bei Ihrem Konto an, um Ihr Konto \u201E{duplicateIdentifier}\u201C bei \u201E{provider}\u201C als weitere Anmeldem\xF6glichkeit hinzuzuf\xFCgen.",
2354
- "identities.messages.1010017": "",
2355
- "identities.messages.1010018": "",
2356
- "identities.messages.1010019": "",
2537
+ "identities.messages.1010017": "Anmelden und verbinden",
2538
+ "identities.messages.1010018": "Mit {provider} best\xE4tigen",
2539
+ "identities.messages.1010019": "Code senden um fortzufahren",
2357
2540
  "identities.messages.1010020": "",
2358
- "identities.messages.1010021": "",
2359
- "identities.messages.1010022": "",
2360
- "identities.messages.1040007": "",
2361
- "identities.messages.1040008": "",
2362
- "identities.messages.1040009": "",
2541
+ "identities.messages.1010021": "Mit Paskey anmelden",
2542
+ "identities.messages.1010022": "Mit Passwort anmelden",
2543
+ "identities.messages.1040007": "Mit Passkey registrieren",
2544
+ "identities.messages.1040008": "Zur\xFCck",
2545
+ "identities.messages.1040009": "Bitte w\xE4hlen Sie eine Authentifizierungsmethode, um fortzufahren.",
2363
2546
  "identities.messages.1050019": "Passkey hinzuf\xFCgen",
2364
- "identities.messages.1050020": "",
2365
- "identities.messages.4000037": "",
2366
- "identities.messages.4010009": "",
2367
- "identities.messages.4010010": "",
2547
+ "identities.messages.1050020": 'Passkey "{display_name}" entfernen',
2548
+ "identities.messages.4000037": "F\xFCr die eingegebenen Daten existiert kein Account",
2549
+ "identities.messages.4010009": "Die Authentifizierungsmethode stimmt nicht mit der vorherigen Authentifizierungsmethode \xFCberein. Bitte versuchen Sie es erneut.",
2550
+ "identities.messages.4010010": "Die eingegebene Adresse stimmt nicht mit der Adresse \xFCberein, die Sie bei der Registrierung angegeben haben. Bitte versuchen Sie es erneut.",
2368
2551
  "input.placeholder": "{placeholder} eingeben",
2369
- "card.header.parts.code": "einem Code per E-Mail",
2552
+ "card.header.parts.code": "ein an Sie gesendeter Code",
2370
2553
  "card.header.parts.identifier-first": "Ihr {identifierLabel}",
2371
2554
  "card.header.parts.oidc": "ein sozialer Anbieter",
2372
2555
  "card.header.parts.passkey": "ein Passkey",
2373
2556
  "card.header.parts.password.login": "Ihrer {identifierLabel} und Ihrem Passwort",
2374
2557
  "card.header.parts.password.registration": "Ihrer {identifierLabel} und einem Passwort",
2375
2558
  "card.header.parts.webauthn": "ein Sicherheitsschl\xFCssel",
2559
+ "card.header.parts.totp": "deine Authentifikator-App",
2560
+ "card.header.parts.lookup_secret": "ein Backup-Wiederherstellungscode",
2376
2561
  "recovery.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um einen einmaligen Zugangscode zu erhalten",
2377
2562
  "verification.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um es zu best\xE4tigen",
2378
2563
  "card.header.description.login": "Melden Sie sich mit {identifierLabel} an",
@@ -2465,7 +2650,6 @@ var es_default = {
2465
2650
  "error.back-button": "Regresar",
2466
2651
  "error.description": "Ocurri\xF3 un error con el siguiente mensaje:",
2467
2652
  "error.support-email-link": "Si el problema persiste, por favor contacte a <a>{contactSupportEmail}</a>",
2468
- "error.title": "",
2469
2653
  "error.title-internal-server-error": "Error Interno del Servidor",
2470
2654
  "error.title-not-found": "404 - P\xE1gina no encontrada",
2471
2655
  "identities.messages.1010001": "Iniciar sesi\xF3n",
@@ -2640,45 +2824,6 @@ var es_default = {
2640
2824
  "two-step.totp.description": "Utilice un c\xF3digo de un solo uso de 6 d\xEDgitos de su aplicaci\xF3n de autenticaci\xF3n",
2641
2825
  "two-step.lookup_secret.title": "C\xF3digo de recuperaci\xF3n de respaldo",
2642
2826
  "two-step.lookup_secret.description": "Utilice uno de sus c\xF3digos de respaldo de 8 d\xEDgitos para autenticarse",
2643
- "identities.messages.1010016": "",
2644
- "identities.messages.1010017": "",
2645
- "identities.messages.1010018": "",
2646
- "identities.messages.1010019": "",
2647
- "identities.messages.1010020": "",
2648
- "identities.messages.1010021": "",
2649
- "identities.messages.1010022": "",
2650
- "identities.messages.1010023": "",
2651
- "identities.messages.1040007": "",
2652
- "identities.messages.1040008": "",
2653
- "identities.messages.1040009": "",
2654
- "identities.messages.1050019": "",
2655
- "identities.messages.1050020": "",
2656
- "identities.messages.1070014": "",
2657
- "identities.messages.1070015": "",
2658
- "identities.messages.4000037": "",
2659
- "identities.messages.4000038": "",
2660
- "identities.messages.4010009": "",
2661
- "identities.messages.4010010": "",
2662
- "login.cancel-button": "",
2663
- "login.cancel-label": "",
2664
- "input.placeholder": "",
2665
- "card.header.description.login": "",
2666
- "card.header.description.registration": "",
2667
- "card.header.parts.code": "",
2668
- "card.header.parts.identifier-first": "",
2669
- "card.header.parts.oidc": "",
2670
- "card.header.parts.passkey": "",
2671
- "card.header.parts.password.login": "",
2672
- "card.header.parts.password.registration": "",
2673
- "card.header.parts.webauthn": "",
2674
- "forms.label.forgot-password": "",
2675
- "login.subtitle": "",
2676
- "login.subtitle-refresh": "",
2677
- "misc.or": "",
2678
- "recovery.subtitle": "",
2679
- "registration.subtitle": "",
2680
- "settings.subtitle": "",
2681
- "verification.subtitle": "",
2682
2827
  "settings.totp.info.linked": "Actualmente tienes una aplicaci\xF3n de autenticaci\xF3n conectada.",
2683
2828
  "settings.totp.info.not-linked": "Para habilitar, escanea el c\xF3digo QR con tu autenticador e ingresa el c\xF3digo.",
2684
2829
  "settings.totp.title": "Aplicaci\xF3n Autenticadora",
@@ -2696,25 +2841,6 @@ var es_default = {
2696
2841
  "settings.profile.title": "Configuraci\xF3n de Perfil",
2697
2842
  "settings.webauthn.description": "Administra la configuraci\xF3n de tu token de hardware",
2698
2843
  "settings.webauthn.title": "Gestionar Tokens de Hardware",
2699
- "settings.oidc.info": "",
2700
- "settings.passkey.info": "",
2701
- "settings.title-lookup-secret": "",
2702
- "settings.title-navigation": "",
2703
- "settings.title-oidc": "",
2704
- "settings.title-passkey": "",
2705
- "settings.title-password": "",
2706
- "settings.title-profile": "",
2707
- "settings.title-totp": "",
2708
- "settings.title-webauthn": "",
2709
- "settings.webauthn.info": "",
2710
- "card.footer.select-another-method": "",
2711
- "account-linking.title": "",
2712
- "property.code": "",
2713
- "property.email": "",
2714
- "property.identifier": "",
2715
- "property.password": "",
2716
- "property.phone": "",
2717
- "property.username": "",
2718
2844
  "consent.title": "Autorizar {party}",
2719
2845
  "consent.subtitle": "Una aplicaci\xF3n de terceros quiere acceder a la informaci\xF3n asociada a su cuenta {identifier}.",
2720
2846
  "consent.scope.openid.title": "Identidad",
@@ -2729,12 +2855,73 @@ var es_default = {
2729
2855
  "consent.scope.address.description": "Acceda a su direcci\xF3n postal.",
2730
2856
  "consent.scope.phone.title": "N\xFAmero de tel\xE9fono",
2731
2857
  "consent.scope.phone.description": "Recupere su n\xFAmero de tel\xE9fono y su estado de verificaci\xF3n.",
2732
- "error.action.go-back": "",
2733
- "error.footer.copy": "",
2734
- "error.footer.text": "",
2735
- "error.instructions": "",
2736
- "error.title.what-can-i-do": "",
2737
- "error.title.what-happened": ""
2858
+ "error.title": "Ocurri\xF3 un error",
2859
+ "identities.messages.1010016": 'Intentaste iniciar sesi\xF3n con "{duplicateIdentifier}", pero ese correo electr\xF3nico ya est\xE1 en uso por otra cuenta. Inicia sesi\xF3n en tu cuenta con una de las opciones a continuaci\xF3n para agregar tu cuenta "{duplicateIdentifier}" en "{provider}" como otra forma de iniciar sesi\xF3n.',
2860
+ "identities.messages.1010017": "Iniciar sesi\xF3n y vincular",
2861
+ "identities.messages.1010018": "Confirmar con {provider}",
2862
+ "identities.messages.1010019": "Solicitar c\xF3digo para continuar",
2863
+ "identities.messages.1010021": "Iniciar sesi\xF3n con clave de acceso",
2864
+ "identities.messages.1010022": "Iniciar sesi\xF3n con contrase\xF1a",
2865
+ "identities.messages.1010023": "Enviar c\xF3digo a {address}",
2866
+ "identities.messages.1040007": "Registrarse con clave de acceso",
2867
+ "identities.messages.1040008": "Atr\xE1s",
2868
+ "identities.messages.1040009": "Por favor, elige una credencial para autenticarte.",
2869
+ "identities.messages.1050019": "Agregar clave de acceso",
2870
+ "identities.messages.1070014": "Iniciar sesi\xF3n y vincular credencial",
2871
+ "identities.messages.1070015": "Por favor, completa el desaf\xEDo captcha para continuar.",
2872
+ "identities.messages.4000037": "Esta cuenta no existe o no tiene ning\xFAn m\xE9todo de inicio de sesi\xF3n configurado.",
2873
+ "identities.messages.4000038": "Fall\xF3 la verificaci\xF3n de Captcha, por favor intenta de nuevo.",
2874
+ "identities.messages.4010009": "Las credenciales vinculadas no coinciden.",
2875
+ "identities.messages.4010010": "La direcci\xF3n que ingresaste no coincide con ninguna direcci\xF3n conocida en la cuenta actual.",
2876
+ "login.cancel-button": "Cancelar",
2877
+ "login.cancel-label": "\xBFNo es la cuenta correcta?",
2878
+ "login.subtitle": "Iniciar sesi\xF3n con {parts}",
2879
+ "login.subtitle-refresh": "Confirma tu identidad con {parts}",
2880
+ "recovery.subtitle": "Ingresa la direcci\xF3n de correo electr\xF3nico asociada con tu cuenta para recibir un c\xF3digo de acceso \xFAnico",
2881
+ "registration.subtitle": "Registrarse con {parts}",
2882
+ "settings.subtitle": "Actualiza la configuraci\xF3n de tu cuenta",
2883
+ "settings.title-lookup-secret": "Administrar c\xF3digos de recuperaci\xF3n de respaldo 2FA",
2884
+ "settings.title-navigation": "Configuraci\xF3n de la cuenta",
2885
+ "settings.title-oidc": "Inicio de sesi\xF3n social",
2886
+ "settings.title-password": "Cambiar contrase\xF1a",
2887
+ "settings.title-profile": "Configuraci\xF3n del perfil",
2888
+ "settings.title-totp": "Administrar la aplicaci\xF3n de autenticaci\xF3n 2FA TOTP",
2889
+ "settings.title-webauthn": "Administrar tokens de hardware",
2890
+ "settings.title-passkey": "Administrar claves de acceso",
2891
+ "verification.subtitle": "Ingresa la direcci\xF3n de correo electr\xF3nico asociada con tu cuenta para verificarla",
2892
+ "input.placeholder": "Ingresa tu {placeholder}",
2893
+ "card.header.parts.oidc": "un proveedor social",
2894
+ "card.header.parts.password.registration": "tu {identifierLabel} y una contrase\xF1a",
2895
+ "card.header.parts.password.login": "tu {identifierLabel} y contrase\xF1a",
2896
+ "card.header.parts.code": "un c\xF3digo enviado a tu correo electr\xF3nico",
2897
+ "card.header.parts.passkey": "una clave de acceso",
2898
+ "card.header.parts.webauthn": "una clave de seguridad",
2899
+ "card.header.parts.totp": "su aplicaci\xF3n de autenticaci\xF3n",
2900
+ "card.header.parts.lookup_secret": "un c\xF3digo de recuperaci\xF3n de copia de seguridad",
2901
+ "card.header.parts.identifier-first": "tu {identifierLabel}",
2902
+ "card.header.description.login": "Iniciar sesi\xF3n con {identifierLabel}",
2903
+ "card.header.description.registration": "Registrarse con {identifierLabel}",
2904
+ "misc.or": "o",
2905
+ "forms.label.forgot-password": "\xBFOlvidaste tu contrase\xF1a?",
2906
+ "settings.oidc.info": "Las cuentas conectadas de estos proveedores se pueden utilizar para iniciar sesi\xF3n en tu cuenta",
2907
+ "settings.webauthn.info": "Los tokens de hardware se utilizan para la autenticaci\xF3n de segundo factor o como primer factor con las claves de acceso",
2908
+ "settings.passkey.info": "Administra la configuraci\xF3n de tus claves de acceso",
2909
+ "card.footer.select-another-method": "Seleccionar otro m\xE9todo",
2910
+ "account-linking.title": "Vincular cuenta",
2911
+ "property.password": "contrase\xF1a",
2912
+ "property.email": "correo electr\xF3nico",
2913
+ "property.phone": "tel\xE9fono",
2914
+ "property.username": "nombre de usuario",
2915
+ "property.identifier": "identificador",
2916
+ "property.code": "c\xF3digo",
2917
+ "error.title.what-happened": "\xBFQu\xE9 pas\xF3?",
2918
+ "error.title.what-can-i-do": "\xBFQu\xE9 puedo hacer?",
2919
+ "error.instructions": "Por favor, int\xE9ntalo de nuevo en unos minutos o contacta al operador del sitio web.",
2920
+ "error.footer.text": "Al informar este error, incluye la siguiente informaci\xF3n:",
2921
+ "error.footer.copy": "Copiar",
2922
+ "error.action.go-back": "Regresar",
2923
+ "identities.messages.1010020": "",
2924
+ "identities.messages.1050020": 'Eliminar passkey "{display_name}"'
2738
2925
  };
2739
2926
 
2740
2927
  // src/locales/fr.json
@@ -2925,81 +3112,10 @@ var fr_default = {
2925
3112
  "two-step.totp.description": "Utilisez un code \xE0 usage unique \xE0 6 chiffres provenant de votre application d'authentification",
2926
3113
  "two-step.lookup_secret.title": "Code de r\xE9cup\xE9ration de secours",
2927
3114
  "two-step.lookup_secret.description": "Utilisez l'un de vos codes de secours \xE0 8 chiffres pour vous authentifier",
2928
- "identities.messages.1010023": "",
2929
- "identities.messages.1070015": "",
2930
- "identities.messages.4000038": "",
2931
- "login.cancel-button": "",
2932
- "login.cancel-label": "",
2933
- "identities.messages.1010016": "",
2934
- "identities.messages.1010017": "",
2935
- "identities.messages.1010018": "",
2936
- "identities.messages.1010019": "",
2937
- "identities.messages.1010020": "",
2938
- "identities.messages.1010021": "",
2939
- "identities.messages.1010022": "",
2940
- "identities.messages.1040007": "",
2941
- "identities.messages.1040008": "",
2942
- "identities.messages.1040009": "",
2943
- "identities.messages.1050019": "",
2944
- "identities.messages.1050020": "",
2945
- "identities.messages.1070014": "",
2946
- "identities.messages.4000037": "",
2947
- "identities.messages.4010009": "",
2948
- "identities.messages.4010010": "",
2949
- "input.placeholder": "",
2950
- "card.header.description.login": "",
2951
- "card.header.description.registration": "",
2952
- "card.header.parts.code": "",
2953
- "card.header.parts.identifier-first": "",
2954
- "card.header.parts.oidc": "",
2955
- "card.header.parts.passkey": "",
2956
- "card.header.parts.password.login": "",
2957
- "card.header.parts.password.registration": "",
2958
- "card.header.parts.webauthn": "",
2959
- "forms.label.forgot-password": "",
2960
- "login.subtitle": "",
2961
- "login.subtitle-refresh": "",
2962
- "misc.or": "",
2963
- "recovery.subtitle": "",
2964
- "registration.subtitle": "",
2965
- "settings.subtitle": "",
2966
- "verification.subtitle": "",
2967
3115
  "settings.totp.info.linked": "Vous avez actuellement une application d'authentification connect\xE9e.",
2968
3116
  "settings.totp.info.not-linked": "Pour activer, scannez le QR code avec votre authentificateur et entrez le code.",
2969
3117
  "settings.totp.title": "Application d'authentification",
2970
3118
  "settings.totp.description": "Ajoutez une application d'authentification TOTP \xE0 votre compte pour am\xE9liorer la s\xE9curit\xE9 de votre compte. Les applications d'authentification populaires sont LastPass et Google Authenticator.",
2971
- "settings.lookup_secret.description": "",
2972
- "settings.lookup_secret.title": "",
2973
- "settings.navigation.title": "",
2974
- "settings.oidc.description": "",
2975
- "settings.oidc.info": "",
2976
- "settings.oidc.title": "",
2977
- "settings.passkey.description": "",
2978
- "settings.passkey.info": "",
2979
- "settings.passkey.title": "",
2980
- "settings.password.description": "",
2981
- "settings.password.title": "",
2982
- "settings.profile.description": "",
2983
- "settings.profile.title": "",
2984
- "settings.title-lookup-secret": "",
2985
- "settings.title-navigation": "",
2986
- "settings.title-oidc": "",
2987
- "settings.title-passkey": "",
2988
- "settings.title-password": "",
2989
- "settings.title-profile": "",
2990
- "settings.title-totp": "",
2991
- "settings.title-webauthn": "",
2992
- "settings.webauthn.description": "",
2993
- "settings.webauthn.info": "",
2994
- "settings.webauthn.title": "",
2995
- "card.footer.select-another-method": "",
2996
- "account-linking.title": "",
2997
- "property.code": "",
2998
- "property.email": "",
2999
- "property.identifier": "",
3000
- "property.password": "",
3001
- "property.phone": "",
3002
- "property.username": "",
3003
3119
  "consent.title": "Autoriser {party}",
3004
3120
  "consent.subtitle": "Une application tierce souhaite acc\xE9der aux informations associ\xE9es \xE0 votre compte {identifier}.",
3005
3121
  "consent.scope.openid.title": "Identit\xE9",
@@ -3014,12 +3130,85 @@ var fr_default = {
3014
3130
  "consent.scope.address.description": "Acc\xE8de \xE0 votre adresse postale.",
3015
3131
  "consent.scope.phone.title": "Num\xE9ro de t\xE9l\xE9phone",
3016
3132
  "consent.scope.phone.description": "R\xE9cup\xE8re votre num\xE9ro de t\xE9l\xE9phone et son statut de v\xE9rification.",
3017
- "error.action.go-back": "",
3018
- "error.footer.copy": "",
3019
- "error.footer.text": "",
3020
- "error.title.what-can-i-do": "",
3021
- "error.title.what-happened": "",
3022
- "error.instructions": ""
3133
+ "identities.messages.1010016": "Vous avez essay\xE9 de vous connecter avec \xAB {duplicateIdentifier} \xBB, mais cet e-mail est d\xE9j\xE0 utilis\xE9 par un autre compte. Connectez-vous \xE0 votre compte avec l'une des options ci-dessous pour ajouter votre compte \xAB {duplicateIdentifier} \xBB sur \xAB {provider} \xBB comme autre moyen de vous connecter.",
3134
+ "identities.messages.1010017": "Se connecter et lier",
3135
+ "identities.messages.1010018": "Confirmer avec {provider}",
3136
+ "identities.messages.1010019": "Demander un code pour continuer",
3137
+ "identities.messages.1010021": "Se connecter avec une cl\xE9 d'acc\xE8s",
3138
+ "identities.messages.1010022": "Se connecter avec un mot de passe",
3139
+ "identities.messages.1010023": "Envoyer le code \xE0 {address}",
3140
+ "identities.messages.1040007": "S'inscrire avec une cl\xE9 d'acc\xE8s",
3141
+ "identities.messages.1040008": "Retour",
3142
+ "identities.messages.1040009": "Veuillez choisir une identification pour vous authentifier.",
3143
+ "identities.messages.1050019": "Ajouter une cl\xE9 d'acc\xE8s",
3144
+ "identities.messages.1050020": "Supprimer la cl\xE9 d'acc\xE8s \xAB {display_name} \xBB",
3145
+ "identities.messages.1070014": "Se connecter et lier l'identification",
3146
+ "identities.messages.1070015": "Veuillez compl\xE9ter le d\xE9fi captcha pour continuer.",
3147
+ "identities.messages.4000037": "Ce compte n'existe pas ou n'a aucune m\xE9thode de connexion configur\xE9e.",
3148
+ "identities.messages.4000038": "La v\xE9rification Captcha a \xE9chou\xE9, veuillez r\xE9essayer.",
3149
+ "identities.messages.4010009": "Les identifications li\xE9es ne correspondent pas.",
3150
+ "identities.messages.4010010": "L'adresse que vous avez saisie ne correspond \xE0 aucune adresse connue dans le compte actuel.",
3151
+ "login.cancel-button": "Annuler",
3152
+ "login.cancel-label": "Ce n'est pas le bon compte\xA0?",
3153
+ "login.subtitle": "Se connecter avec {parts}",
3154
+ "login.subtitle-refresh": "Confirmez votre identit\xE9 avec {parts}",
3155
+ "recovery.subtitle": "Saisissez l'adresse e-mail associ\xE9e \xE0 votre compte pour recevoir un code d'acc\xE8s unique",
3156
+ "registration.subtitle": "S'inscrire avec {parts}",
3157
+ "settings.subtitle": "Mettre \xE0 jour les param\xE8tres de votre compte",
3158
+ "settings.title-lookup-secret": "G\xE9rer les codes de r\xE9cup\xE9ration de sauvegarde 2FA",
3159
+ "settings.title-navigation": "Param\xE8tres du compte",
3160
+ "settings.title-oidc": "Connexion via les r\xE9seaux sociaux",
3161
+ "settings.title-password": "Changer le mot de passe",
3162
+ "settings.title-profile": "Param\xE8tres du profil",
3163
+ "settings.title-totp": "G\xE9rer l'application d'authentification 2FA TOTP",
3164
+ "settings.title-webauthn": "G\xE9rer les jetons mat\xE9riels",
3165
+ "settings.title-passkey": "G\xE9rer les cl\xE9s d'acc\xE8s",
3166
+ "settings.navigation.title": "Param\xE8tres du compte",
3167
+ "settings.password.title": "Changer le mot de passe",
3168
+ "settings.password.description": "Modifier votre mot de passe",
3169
+ "settings.profile.title": "Param\xE8tres du profil",
3170
+ "settings.profile.description": "Mettre \xE0 jour les informations de votre profil",
3171
+ "settings.webauthn.title": "G\xE9rer les jetons mat\xE9riels",
3172
+ "settings.webauthn.description": "G\xE9rer les param\xE8tres de votre jeton mat\xE9riel",
3173
+ "verification.subtitle": "Saisissez l'adresse e-mail associ\xE9e \xE0 votre compte pour la v\xE9rifier",
3174
+ "input.placeholder": "Saisissez votre {placeholder}",
3175
+ "card.header.parts.oidc": "un fournisseur de r\xE9seaux sociaux",
3176
+ "card.header.parts.password.registration": "votre {identifierLabel} et un mot de passe",
3177
+ "card.header.parts.password.login": "votre {identifierLabel} et votre mot de passe",
3178
+ "card.header.parts.passkey": "une cl\xE9 d'acc\xE8s",
3179
+ "card.header.parts.webauthn": "une cl\xE9 de s\xE9curit\xE9",
3180
+ "card.header.parts.identifier-first": "votre {identifierLabel}",
3181
+ "card.header.parts.code": "un code qui vous a \xE9t\xE9 envoy\xE9",
3182
+ "card.header.parts.totp": "votre application d'authentification",
3183
+ "card.header.parts.lookup_secret": "un code de r\xE9cup\xE9ration de secours",
3184
+ "card.header.description.login": "Se connecter avec {identifierLabel}",
3185
+ "card.header.description.registration": "S'inscrire avec {identifierLabel}",
3186
+ "misc.or": "ou",
3187
+ "forms.label.forgot-password": "Mot de passe oubli\xE9?",
3188
+ "settings.lookup_secret.title": "Codes de r\xE9cup\xE9ration de sauvegarde (second facteur)",
3189
+ "settings.lookup_secret.description": "Les codes de r\xE9cup\xE9ration sont une sauvegarde s\xE9curis\xE9e pour l'authentification \xE0 deux facteurs (2FA), vous permettant de retrouver l'acc\xE8s \xE0 votre compte si vous perdez votre appareil 2FA.",
3190
+ "settings.oidc.title": "Comptes connect\xE9s",
3191
+ "settings.oidc.description": "Connectez un fournisseur de connexion sociale \xE0 votre compte.",
3192
+ "settings.oidc.info": "Les comptes connect\xE9s de ces fournisseurs peuvent \xEAtre utilis\xE9s pour vous connecter \xE0 votre compte",
3193
+ "settings.webauthn.info": "Les jetons mat\xE9riels sont utilis\xE9s pour l'authentification \xE0 deux facteurs ou comme premier facteur avec les cl\xE9s d'acc\xE8s",
3194
+ "settings.passkey.title": "G\xE9rer les cl\xE9s d'acc\xE8s",
3195
+ "settings.passkey.description": "G\xE9rer les param\xE8tres de vos cl\xE9s d'acc\xE8s",
3196
+ "settings.passkey.info": "G\xE9rer les param\xE8tres de vos cl\xE9s d'acc\xE8s",
3197
+ "card.footer.select-another-method": "S\xE9lectionner une autre m\xE9thode",
3198
+ "account-linking.title": "Lier le compte",
3199
+ "property.password": "mot de passe",
3200
+ "property.email": "e-mail",
3201
+ "property.phone": "t\xE9l\xE9phone",
3202
+ "property.username": "nom d'utilisateur",
3203
+ "property.identifier": "identifiant",
3204
+ "property.code": "code",
3205
+ "error.title.what-happened": "Que s'est-il pass\xE9?",
3206
+ "error.title.what-can-i-do": "Que puis-je faire?",
3207
+ "error.instructions": "Veuillez r\xE9essayer dans quelques minutes ou contacter l'op\xE9rateur du site Web.",
3208
+ "error.footer.text": "Lorsque vous signalez cette erreur, veuillez inclure les informations suivantes:",
3209
+ "error.footer.copy": "Copier",
3210
+ "error.action.go-back": "Retour",
3211
+ "identities.messages.1010020": ""
3023
3212
  };
3024
3213
 
3025
3214
  // src/locales/nl.json
@@ -3234,7 +3423,9 @@ var nl_default = {
3234
3423
  "input.placeholder": "",
3235
3424
  "card.header.description.login": "",
3236
3425
  "card.header.description.registration": "",
3237
- "card.header.parts.code": "",
3426
+ "card.header.parts.code": "een code die naar je is verzonden",
3427
+ "card.header.parts.totp": "je authenticator-app",
3428
+ "card.header.parts.lookup_secret": "een backup herstelcode",
3238
3429
  "card.header.parts.identifier-first": "",
3239
3430
  "card.header.parts.oidc": "",
3240
3431
  "card.header.parts.passkey": "",
@@ -3519,13 +3710,15 @@ var pl_default = {
3519
3710
  "input.placeholder": "",
3520
3711
  "card.header.description.login": "",
3521
3712
  "card.header.description.registration": "",
3522
- "card.header.parts.code": "",
3523
3713
  "card.header.parts.identifier-first": "",
3524
3714
  "card.header.parts.oidc": "",
3525
3715
  "card.header.parts.passkey": "",
3526
3716
  "card.header.parts.password.login": "",
3527
3717
  "card.header.parts.password.registration": "",
3528
3718
  "card.header.parts.webauthn": "",
3719
+ "card.header.parts.code": "kod wys\u0142any do Ciebie",
3720
+ "card.header.parts.totp": "Twoja aplikacja uwierzytelniaj\u0105ca",
3721
+ "card.header.parts.lookup_secret": "kod odzyskiwania kopii zapasowej",
3529
3722
  "forms.label.forgot-password": "",
3530
3723
  "login.subtitle": "",
3531
3724
  "login.subtitle-refresh": "",
@@ -3804,7 +3997,9 @@ var pt_default = {
3804
3997
  "input.placeholder": "",
3805
3998
  "card.header.description.login": "",
3806
3999
  "card.header.description.registration": "",
3807
- "card.header.parts.code": "",
4000
+ "card.header.parts.code": "um c\xF3digo enviado para voc\xEA",
4001
+ "card.header.parts.totp": "seu aplicativo autenticador",
4002
+ "card.header.parts.lookup_secret": "um c\xF3digo de recupera\xE7\xE3o de backup",
3808
4003
  "card.header.parts.identifier-first": "",
3809
4004
  "card.header.parts.oidc": "",
3810
4005
  "card.header.parts.passkey": "",
@@ -4089,7 +4284,9 @@ var sv_default = {
4089
4284
  "input.placeholder": "Ange din {placeholder}",
4090
4285
  "card.header.description.login": "Logga in med {identifierLabel}",
4091
4286
  "card.header.description.registration": "Registrera dig med {identifierLabel}",
4092
- "card.header.parts.code": "en kod skickad till din e-post",
4287
+ "card.header.parts.code": "en kod skickad till dig",
4288
+ "card.header.parts.totp": "din autentiseringsapp",
4289
+ "card.header.parts.lookup_secret": "en s\xE4kerhetskopieringskod",
4093
4290
  "card.header.parts.identifier-first": "din {identifierLabel}",
4094
4291
  "card.header.parts.oidc": "en social leverant\xF6r",
4095
4292
  "card.header.parts.passkey": "en Passkey",
@@ -4180,6 +4377,7 @@ exports.OryCardContent = OryCardContent;
4180
4377
  exports.OryCardFooter = OryCardFooter;
4181
4378
  exports.OryCardHeader = OryCardHeader;
4182
4379
  exports.OryCardValidationMessages = OryCardValidationMessages;
4380
+ exports.OryConfigurationProvider = OryConfigurationProvider;
4183
4381
  exports.OryConsentCard = OryConsentCard;
4184
4382
  exports.OryForm = OryForm;
4185
4383
  exports.OryFormGroupDivider = OryFormGroupDivider;
@@ -4195,6 +4393,7 @@ exports.messageTestId = messageTestId;
4195
4393
  exports.uiTextToFormattedMessage = uiTextToFormattedMessage;
4196
4394
  exports.useComponents = useComponents;
4197
4395
  exports.useNodeSorter = useNodeSorter;
4396
+ exports.useOryConfiguration = useOryConfiguration;
4198
4397
  exports.useOryFlow = useOryFlow;
4199
4398
  //# sourceMappingURL=index.js.map
4200
4399
  //# sourceMappingURL=index.js.map