@ory/elements-react 0.0.0-pr.8e964fc1 → 0.0.0-pr.96c07cce

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
@@ -36,16 +36,30 @@ function useGroupSorter() {
36
36
  }
37
37
  var defaultNodeOrder = [
38
38
  "oidc",
39
+ "saml",
39
40
  "identifier_first",
40
41
  "default",
41
42
  "profile",
42
43
  "password",
44
+ // CAPTCHA is below password because otherwise the password input field
45
+ // would be above the captcha. Somehow, we sort the password sign up button somewhere else to be always at the bottom.
46
+ "captcha",
43
47
  "passkey",
44
48
  "code",
45
49
  "webauthn"
46
50
  ];
47
51
  function defaultNodeSorter(a, b) {
48
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
+ }
49
63
  const aGroupWeight = (_a = defaultNodeOrder.indexOf(a.group)) != null ? _a : 999;
50
64
  const bGroupWeight = (_b = defaultNodeOrder.indexOf(b.group)) != null ? _b : 999;
51
65
  return aGroupWeight - bGroupWeight;
@@ -85,25 +99,10 @@ function OryComponentProvider({
85
99
  }
86
100
  );
87
101
  }
88
- function isChoosingMethod(uiNodes) {
89
- return uiNodes.some(
90
- (node) => "name" in node.attributes && node.attributes.name === "screen" && "value" in node.attributes && node.attributes.value === "previous"
91
- ) || uiNodes.some(
92
- (node) => node.group === clientFetch.UiNodeGroupEnum.IdentifierFirst && "name" in node.attributes && node.attributes.name === "identifier" && node.attributes.type === "hidden"
93
- );
94
- }
95
- function filterOidcOut(nodes) {
96
- return nodes.filter((node) => node.group !== clientFetch.UiNodeGroupEnum.Oidc);
97
- }
98
- function getFinalNodes(uniqueGroups, selectedGroup) {
99
- var _a, _b, _c;
100
- const selectedNodes = selectedGroup ? (_a = uniqueGroups[selectedGroup]) != null ? _a : [] : [];
101
- return [
102
- ...(_b = uniqueGroups == null ? void 0 : uniqueGroups.identifier_first) != null ? _b : [],
103
- ...(_c = uniqueGroups == null ? void 0 : uniqueGroups.default) != null ? _c : []
104
- ].flat().filter(
105
- (node) => "type" in node.attributes && node.attributes.type === "hidden"
106
- ).concat(selectedNodes);
102
+
103
+ // src/theme/default/utils/form.ts
104
+ function isGroupImmediateSubmit(group) {
105
+ return group === "code";
107
106
  }
108
107
  function triggerToWindowCall(trigger) {
109
108
  if (!trigger) {
@@ -172,25 +171,37 @@ function nodesToAuthMethodGroups(nodes, excludeAuthMethods = []) {
172
171
  clientFetch.UiNodeGroupEnum.Default,
173
172
  clientFetch.UiNodeGroupEnum.IdentifierFirst,
174
173
  clientFetch.UiNodeGroupEnum.Profile,
174
+ clientFetch.UiNodeGroupEnum.Captcha,
175
175
  ...excludeAuthMethods
176
176
  ].includes(group)
177
177
  );
178
178
  }
179
- function useNodesGroups(nodes) {
179
+ function useNodesGroups(nodes, { omit } = {}) {
180
180
  const groupSorter = useGroupSorter();
181
181
  const groups = react.useMemo(() => {
182
- var _a;
182
+ var _a, _b;
183
183
  const groups2 = {};
184
+ const groupRetained = {};
184
185
  for (const node of nodes) {
185
- if (node.type === "script") {
186
- continue;
187
- }
188
186
  const groupNodes = (_a = groups2[node.group]) != null ? _a : [];
189
187
  groupNodes.push(node);
190
188
  groups2[node.group] = groupNodes;
189
+ if ((omit == null ? void 0 : omit.includes("script")) && clientFetch.isUiNodeScriptAttributes(node.attributes)) {
190
+ continue;
191
+ }
192
+ if ((omit == null ? void 0 : omit.includes("input_hidden")) && clientFetch.isUiNodeInputAttributes(node.attributes) && node.attributes.type === "hidden") {
193
+ continue;
194
+ }
195
+ groupRetained[node.group] = ((_b = groupRetained[node.group]) != null ? _b : 0) + 1;
191
196
  }
192
- return groups2;
193
- }, [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]);
194
205
  const entries = react.useMemo(
195
206
  () => Object.entries(groups).sort(([a], [b]) => groupSorter(a, b)),
196
207
  [groups, groupSorter]
@@ -200,6 +211,96 @@ function useNodesGroups(nodes) {
200
211
  entries
201
212
  };
202
213
  }
214
+ var findNode = (nodes, opt) => nodes.find((n) => {
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);
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
+ };
203
304
 
204
305
  // src/context/form-state.ts
205
306
  function findMethodWithMessage(nodes) {
@@ -221,9 +322,11 @@ function parseStateFromFlow(flow) {
221
322
  return { current: "method_active", method: "code" };
222
323
  } else if (methodWithMessage) {
223
324
  return { current: "method_active", method: methodWithMessage.group };
224
- } else if (flow.flow.active && !["default", "identifier_first", "oidc"].includes(flow.flow.active)) {
325
+ } else if (flow.flow.active && !["default", "identifier_first", "oidc", "saml"].includes(
326
+ flow.flow.active
327
+ )) {
225
328
  return { current: "method_active", method: flow.flow.active };
226
- } else if (isChoosingMethod(flow.flow.ui.nodes)) {
329
+ } else if (isChoosingMethod(flow)) {
227
330
  const authMethods = nodesToAuthMethodGroups(flow.flow.ui.nodes);
228
331
  if (authMethods.length === 1 && authMethods[0] !== "code") {
229
332
  return { current: "method_active", method: authMethods[0] };
@@ -245,23 +348,32 @@ function parseStateFromFlow(flow) {
245
348
  break;
246
349
  case clientFetch.FlowType.Settings:
247
350
  return { current: "settings" };
351
+ case clientFetch.FlowType.OAuth2Consent:
352
+ return { current: "method_active", method: "oauth2_consent" };
248
353
  }
249
354
  console.warn(
250
355
  `[Ory/Elements React] Encountered an unknown form state on ${flow.flowType} flow with ID ${flow.flow.id}`
251
356
  );
252
357
  throw new Error("Unknown form state");
253
358
  }
254
- function formStateReducer(state, action) {
255
- switch (action.type) {
256
- case "action_flow_update":
257
- return parseStateFromFlow(action.flow);
258
- case "action_select_method":
259
- return { current: "method_active", method: action.method };
260
- }
261
- return state;
262
- }
263
359
  function useFormStateReducer(flow) {
264
- return react.useReducer(formStateReducer, parseStateFromFlow(flow));
360
+ const action = parseStateFromFlow(flow);
361
+ const [selectedMethod, setSelectedMethod] = react.useState();
362
+ const formStateReducer = (state, action2) => {
363
+ switch (action2.type) {
364
+ case "action_flow_update": {
365
+ if (selectedMethod)
366
+ return { current: "method_active", method: selectedMethod };
367
+ return parseStateFromFlow(action2.flow);
368
+ }
369
+ case "action_select_method": {
370
+ setSelectedMethod(action2.method);
371
+ return { current: "method_active", method: action2.method };
372
+ }
373
+ }
374
+ return state;
375
+ };
376
+ return react.useReducer(formStateReducer, action);
265
377
  }
266
378
  function useOryFlow() {
267
379
  const ctx = react.useContext(OryFlowContext);
@@ -351,6 +463,22 @@ function computeDefaultValues(nodes) {
351
463
  if (attrs.name === "method" || attrs.type === "submit" || typeof attrs.value === "undefined") {
352
464
  return acc;
353
465
  }
466
+ if (attrs.name.startsWith("grant_scope")) {
467
+ const scope = attrs.value;
468
+ if (Array.isArray(acc.grant_scope)) {
469
+ return {
470
+ ...acc,
471
+ // We want to have all scopes accepted by default, so that the user has to actively uncheck them.
472
+ grant_scope: [...acc.grant_scope, scope]
473
+ };
474
+ } else if (!acc.grant_scope) {
475
+ return {
476
+ ...acc,
477
+ grant_scope: [scope]
478
+ };
479
+ }
480
+ return acc;
481
+ }
354
482
  return unrollTrait(
355
483
  {
356
484
  name: attrs.name,
@@ -438,15 +566,11 @@ function OryCardContent({ children }) {
438
566
  const { Card } = useComponents();
439
567
  return /* @__PURE__ */ jsxRuntime.jsx(Card.Content, { children });
440
568
  }
441
-
442
- // src/theme/default/utils/form.ts
443
- function isGroupImmediateSubmit(group) {
444
- return group === "code";
445
- }
446
569
  function frontendClient(sdkUrl, opts = {}) {
447
570
  const config = new clientFetch.Configuration({
448
571
  ...opts,
449
572
  basePath: sdkUrl,
573
+ credentials: "include",
450
574
  headers: {
451
575
  Accept: "application/json",
452
576
  ...opts.headers
@@ -782,7 +906,7 @@ function useOryFormSubmit(onAfterSubmit) {
782
906
  if ("lookup_secret_confirm" in submitData || "lookup_secret_reveal" in submitData || "lookup_secret_regenerate" in submitData || "lookup_secret_disable" in submitData) {
783
907
  submitData.method = "lookup_secret";
784
908
  }
785
- if (submitData.method === "oidc" && submitData.link && supportsSelectAccountPrompt.includes(submitData.link)) {
909
+ if (submitData.method === clientFetch.UiNodeGroupEnum.Oidc && submitData.link && supportsSelectAccountPrompt.includes(submitData.link)) {
786
910
  submitData.upstream_parameters = {
787
911
  prompt: "select_account"
788
912
  };
@@ -800,6 +924,19 @@ function useOryFormSubmit(onAfterSubmit) {
800
924
  });
801
925
  break;
802
926
  }
927
+ case clientFetch.FlowType.OAuth2Consent: {
928
+ const response = await fetch(flowContainer.flow.ui.action, {
929
+ method: "POST",
930
+ body: JSON.stringify(data),
931
+ headers: {
932
+ "Content-Type": "application/json"
933
+ }
934
+ });
935
+ const oauth2Success = await response.json();
936
+ if (oauth2Success.redirect_to && typeof oauth2Success.redirect_to === "string") {
937
+ onRedirect(oauth2Success.redirect_to);
938
+ }
939
+ }
803
940
  }
804
941
  if ("password" in data) {
805
942
  methods.setValue("password", "");
@@ -814,15 +951,22 @@ function useOryFormSubmit(onAfterSubmit) {
814
951
  };
815
952
  return onSubmit;
816
953
  }
817
- function OryForm({ children, onAfterSubmit }) {
818
- var _a;
954
+ function OryForm({
955
+ children,
956
+ onAfterSubmit,
957
+ "data-testid": dataTestId
958
+ }) {
819
959
  const { Form } = useComponents();
820
960
  const flowContainer = useOryFlow();
821
961
  const methods = reactHookForm.useFormContext();
962
+ const { Message } = useComponents();
822
963
  const intl = reactIntl.useIntl();
823
964
  const onSubmit = useOryFormSubmit(onAfterSubmit);
824
965
  const hasMethods = flowContainer.flow.ui.nodes.some((node) => {
825
966
  if (clientFetch.isUiNodeInputAttributes(node.attributes)) {
967
+ if (node.attributes.type === "hidden") {
968
+ return false;
969
+ }
826
970
  return node.attributes.name !== "csrf_token";
827
971
  } else if (clientFetch.isUiNodeAnchorAttributes(node.attributes)) {
828
972
  return true;
@@ -833,15 +977,24 @@ function OryForm({ children, onAfterSubmit }) {
833
977
  }
834
978
  return false;
835
979
  });
836
- if (!hasMethods && ((_a = flowContainer.flow.ui.messages) != null ? _a : []).length === 0) {
837
- return intl.formatMessage({
838
- id: `identities.messages.${5000002}`,
839
- defaultMessage: "No authentication methods are available for this request. Please contact the site or app owner."
840
- });
980
+ if (!hasMethods) {
981
+ const m = {
982
+ id: 5000002,
983
+ text: intl.formatMessage({
984
+ id: `identities.messages.${5000002}`,
985
+ defaultMessage: "No authentication methods are available for this request. Please contact the site or app owner."
986
+ }),
987
+ type: "error"
988
+ };
989
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-testid": dataTestId, children: /* @__PURE__ */ jsxRuntime.jsx(Message.Root, { children: /* @__PURE__ */ jsxRuntime.jsx(Message.Content, { message: m }, m.id) }) });
990
+ }
991
+ if ((flowContainer.flowType === clientFetch.FlowType.Login || flowContainer.flowType === clientFetch.FlowType.Registration) && flowContainer.formState.current === "method_active" && flowContainer.formState.method === "code") {
992
+ methods.setValue("method", "code");
841
993
  }
842
994
  return /* @__PURE__ */ jsxRuntime.jsx(
843
995
  Form.Root,
844
996
  {
997
+ "data-testid": dataTestId,
845
998
  action: flowContainer.flow.ui.action,
846
999
  method: flowContainer.flow.ui.method,
847
1000
  onSubmit: (e) => void methods.handleSubmit(onSubmit)(e),
@@ -849,7 +1002,15 @@ function OryForm({ children, onAfterSubmit }) {
849
1002
  }
850
1003
  );
851
1004
  }
852
- var messageIdsToHide = [1040009, 1060003, 1080003, 1010014, 1040005, 1010016];
1005
+ var messageIdsToHide = [
1006
+ 1040009,
1007
+ 1060003,
1008
+ 1080003,
1009
+ 1010004,
1010
+ 1010014,
1011
+ 1040005,
1012
+ 1010016
1013
+ ];
853
1014
  function OryCardValidationMessages({ ...props }) {
854
1015
  var _a;
855
1016
  const { flow } = useOryFlow();
@@ -868,7 +1029,7 @@ var NodeInput = ({
868
1029
  }) => {
869
1030
  var _a;
870
1031
  const { Node: Node2 } = useComponents();
871
- const { setValue } = reactHookForm.useFormContext();
1032
+ const { setValue, watch } = reactHookForm.useFormContext();
872
1033
  const {
873
1034
  onloadTrigger,
874
1035
  onclickTrigger,
@@ -881,7 +1042,7 @@ var NodeInput = ({
881
1042
  const isResendNode = ((_a = node.meta.label) == null ? void 0 : _a.id) === 1070008;
882
1043
  const isScreenSelectionNode = "name" in node.attributes && node.attributes.name === "screen";
883
1044
  const setFormValue = () => {
884
- if (attrs.value && !(isResendNode || isScreenSelectionNode)) {
1045
+ if (attrs.value && !(isResendNode || isScreenSelectionNode || node.group === clientFetch.UiNodeGroupEnum.Oauth2Consent)) {
885
1046
  setValue(attrs.name, attrs.value);
886
1047
  }
887
1048
  };
@@ -904,8 +1065,21 @@ var NodeInput = ({
904
1065
  triggerToWindowCall(onclickTrigger);
905
1066
  }
906
1067
  };
907
- const isSocial = (attrs.name === "provider" || attrs.name === "link") && node.group === "oidc";
1068
+ const isSocial = (attrs.name === "provider" || attrs.name === "link") && (node.group === clientFetch.UiNodeGroupEnum.Oidc || node.group === clientFetch.UiNodeGroupEnum.Saml);
908
1069
  const isPinCodeInput = attrs.name === "code" && node.group === "code" || attrs.name === "totp_code" && node.group === "totp";
1070
+ const handleScopeChange = (checked) => {
1071
+ const scopes = watch("grant_scope");
1072
+ if (Array.isArray(scopes)) {
1073
+ if (checked) {
1074
+ setValue("grant_scope", Array.from(/* @__PURE__ */ new Set([...scopes, attrs.value])));
1075
+ } else {
1076
+ setValue(
1077
+ "grant_scope",
1078
+ scopes.filter((scope) => scope !== attrs.value)
1079
+ );
1080
+ }
1081
+ }
1082
+ };
909
1083
  switch (attributes.type) {
910
1084
  case clientFetch.UiNodeInputAttributesTypeEnum.Submit:
911
1085
  case clientFetch.UiNodeInputAttributesTypeEnum.Button:
@@ -915,6 +1089,9 @@ var NodeInput = ({
915
1089
  if (isResendNode || isScreenSelectionNode) {
916
1090
  return null;
917
1091
  }
1092
+ if (node.group === "oauth2_consent") {
1093
+ return null;
1094
+ }
918
1095
  return /* @__PURE__ */ jsxRuntime.jsx(
919
1096
  Node2.Label,
920
1097
  {
@@ -926,6 +1103,21 @@ var NodeInput = ({
926
1103
  case clientFetch.UiNodeInputAttributesTypeEnum.DatetimeLocal:
927
1104
  throw new Error("Not implemented");
928
1105
  case clientFetch.UiNodeInputAttributesTypeEnum.Checkbox:
1106
+ if (node.group === "oauth2_consent" && node.attributes.node_type === "input") {
1107
+ switch (node.attributes.name) {
1108
+ case "grant_scope":
1109
+ return /* @__PURE__ */ jsxRuntime.jsx(
1110
+ Node2.ConsentScopeCheckbox,
1111
+ {
1112
+ attributes: attrs,
1113
+ node,
1114
+ onCheckedChange: handleScopeChange
1115
+ }
1116
+ );
1117
+ default:
1118
+ return null;
1119
+ }
1120
+ }
929
1121
  return /* @__PURE__ */ jsxRuntime.jsx(
930
1122
  Node2.Label,
931
1123
  {
@@ -952,6 +1144,9 @@ var NodeInput = ({
952
1144
  };
953
1145
  var Node = ({ node, onClick }) => {
954
1146
  const { Node: Node2 } = useComponents();
1147
+ if (node.group === clientFetch.UiNodeGroupEnum.Captcha) {
1148
+ return /* @__PURE__ */ jsxRuntime.jsx(Node2.Captcha, { node });
1149
+ }
955
1150
  if (clientFetch.isUiNodeImageAttributes(node.attributes)) {
956
1151
  return /* @__PURE__ */ jsxRuntime.jsx(Node2.Image, { node, attributes: node.attributes });
957
1152
  } else if (clientFetch.isUiNodeTextAttributes(node.attributes)) {
@@ -984,12 +1179,14 @@ function OryFormOidcButtons() {
984
1179
  flow: { ui }
985
1180
  } = useOryFlow();
986
1181
  const { setValue } = reactHookForm.useFormContext();
987
- const filteredNodes = ui.nodes.filter((node) => node.group === "oidc");
1182
+ const filteredNodes = ui.nodes.filter(
1183
+ (node) => node.group === clientFetch.UiNodeGroupEnum.Oidc || node.group === clientFetch.UiNodeGroupEnum.Saml
1184
+ );
988
1185
  const { Form, Node: Node2 } = useComponents();
989
1186
  if (filteredNodes.length === 0) {
990
1187
  return null;
991
1188
  }
992
- return /* @__PURE__ */ jsxRuntime.jsx(Form.OidcRoot, { nodes: filteredNodes, children: filteredNodes.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(
1189
+ return /* @__PURE__ */ jsxRuntime.jsx(Form.OidcRoot, { nodes: filteredNodes, children: filteredNodes.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
993
1190
  Node2.OidcButton,
994
1191
  {
995
1192
  node,
@@ -999,114 +1196,217 @@ function OryFormOidcButtons() {
999
1196
  "provider",
1000
1197
  node.attributes.value
1001
1198
  );
1002
- setValue("method", "oidc");
1199
+ setValue("method", node.group);
1003
1200
  }
1004
1201
  },
1005
- k
1202
+ clientFetch.getNodeId(node)
1006
1203
  )) });
1007
1204
  }
1008
1205
  function OryFormSocialButtonsForm() {
1009
1206
  const {
1010
1207
  flow: { ui }
1011
1208
  } = useOryFlow();
1012
- const filteredNodes = ui.nodes.filter((node) => node.group === "oidc");
1209
+ const filteredNodes = ui.nodes.filter(
1210
+ (node) => node.group === clientFetch.UiNodeGroupEnum.Saml || node.group === clientFetch.UiNodeGroupEnum.Oidc
1211
+ );
1013
1212
  if (filteredNodes.length === 0) {
1014
1213
  return null;
1015
1214
  }
1016
- return /* @__PURE__ */ jsxRuntime.jsx(OryFormProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(OryForm, { children: /* @__PURE__ */ jsxRuntime.jsx(OryFormOidcButtons, {}) }) });
1215
+ return /* @__PURE__ */ jsxRuntime.jsx(OryFormProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(OryForm, { "data-testid": `ory/form/methods/oidc-saml`, children: /* @__PURE__ */ jsxRuntime.jsx(OryFormOidcButtons, {}) }) });
1017
1216
  }
1018
- function isUINodeGroupEnum(method) {
1019
- return Object.values(clientFetch.UiNodeGroupEnum).includes(method);
1217
+ function OryTwoStepCardStateMethodActive({
1218
+ formState
1219
+ }) {
1220
+ const { Form } = useComponents();
1221
+ const { flow, flowType, dispatchFormState } = useOryFlow();
1222
+ const { ui } = flow;
1223
+ const nodeSorter = useNodeSorter();
1224
+ const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
1225
+ const groupsToShow = useNodeGroupsWithVisibleNodes(ui.nodes);
1226
+ const finalNodes = getFinalNodes(groupsToShow, formState.method);
1227
+ const selectedMethodIsSocial = formState.method === clientFetch.UiNodeGroupEnum.Oidc || formState.method === clientFetch.UiNodeGroupEnum.Saml;
1228
+ return /* @__PURE__ */ jsxRuntime.jsxs(OryCard, { children: [
1229
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardHeader, {}),
1230
+ /* @__PURE__ */ jsxRuntime.jsxs(OryCardContent, { children: [
1231
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardValidationMessages, {}),
1232
+ selectedMethodIsSocial && /* @__PURE__ */ jsxRuntime.jsx(OryFormSocialButtonsForm, {}),
1233
+ /* @__PURE__ */ jsxRuntime.jsx(
1234
+ OryForm,
1235
+ {
1236
+ "data-testid": `ory/form/methods/local`,
1237
+ onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
1238
+ children: /* @__PURE__ */ jsxRuntime.jsxs(Form.Group, { children: [
1239
+ ui.nodes.filter(
1240
+ (n) => clientFetch.isUiNodeScriptAttributes(n.attributes) || n.group === clientFetch.UiNodeGroupEnum.Captcha || n.group === clientFetch.UiNodeGroupEnum.Default || n.group === clientFetch.UiNodeGroupEnum.Profile
1241
+ ).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k)),
1242
+ finalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1243
+ ] })
1244
+ }
1245
+ )
1246
+ ] }),
1247
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
1248
+ ] });
1020
1249
  }
1021
- function OryTwoStepCard() {
1022
- const {
1023
- flow: { ui },
1024
- flowType,
1025
- formState,
1026
- dispatchFormState
1027
- } = useOryFlow();
1250
+ function OryTwoStepCardStateProvideIdentifier() {
1028
1251
  const { Form, Card } = useComponents();
1252
+ const { flowType, flow, dispatchFormState } = useOryFlow();
1029
1253
  const nodeSorter = useNodeSorter();
1030
1254
  const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
1031
- const uniqueGroups = useNodesGroups(ui.nodes);
1032
- const options = Object.values(clientFetch.UiNodeGroupEnum).filter((group) => {
1033
- var _a;
1034
- return (_a = uniqueGroups.groups[group]) == null ? void 0 : _a.length;
1035
- }).filter(
1036
- (group) => ![
1037
- clientFetch.UiNodeGroupEnum.Oidc,
1038
- clientFetch.UiNodeGroupEnum.Default,
1039
- clientFetch.UiNodeGroupEnum.IdentifierFirst,
1040
- clientFetch.UiNodeGroupEnum.Profile
1041
- ].includes(group)
1255
+ const nonSsoNodes = withoutSingleSignOnNodes(flow.ui.nodes).sort(sortNodes);
1256
+ const hasSso = flow.ui.nodes.filter(isNodeVisible).some(
1257
+ (node) => node.group === clientFetch.UiNodeGroupEnum.Oidc || node.group === clientFetch.UiNodeGroupEnum.Saml
1042
1258
  );
1043
- const nonOidcNodes = filterOidcOut(ui.nodes);
1044
- const finalNodes = formState.current === "method_active" ? getFinalNodes(uniqueGroups.groups, formState.method) : [];
1045
- const handleAfterFormSubmit = (method) => {
1046
- if (typeof method !== "string" || !isUINodeGroupEnum(method)) {
1047
- return;
1259
+ const showSsoDivider = hasSso && nonSsoNodes.some(isNodeVisible);
1260
+ return /* @__PURE__ */ jsxRuntime.jsxs(OryCard, { children: [
1261
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardHeader, {}),
1262
+ /* @__PURE__ */ jsxRuntime.jsxs(OryCardContent, { children: [
1263
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardValidationMessages, {}),
1264
+ /* @__PURE__ */ jsxRuntime.jsx(OryFormSocialButtonsForm, {}),
1265
+ /* @__PURE__ */ jsxRuntime.jsx(
1266
+ OryForm,
1267
+ {
1268
+ "data-testid": `ory/form/methods/local`,
1269
+ onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
1270
+ children: /* @__PURE__ */ jsxRuntime.jsxs(Form.Group, { children: [
1271
+ showSsoDivider && /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
1272
+ nonSsoNodes.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1273
+ ] })
1274
+ }
1275
+ )
1276
+ ] }),
1277
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
1278
+ ] });
1279
+ }
1280
+ function AuthMethodList({
1281
+ options,
1282
+ setSelectedGroup
1283
+ }) {
1284
+ const { Card } = useComponents();
1285
+ const { setValue, getValues } = reactHookForm.useFormContext();
1286
+ if (Object.entries(options).length === 0) {
1287
+ return null;
1288
+ }
1289
+ const handleClick = (group, options2) => {
1290
+ var _a, _b, _c, _d;
1291
+ if (isGroupImmediateSubmit(group)) {
1292
+ if (group === "code" && !getValues("identifier") && ((_b = (_a = options2 == null ? void 0 : options2.title) == null ? void 0 : _a.values) == null ? void 0 : _b.address)) {
1293
+ setValue("identifier", (_d = (_c = options2 == null ? void 0 : options2.title) == null ? void 0 : _c.values) == null ? void 0 : _d.address);
1294
+ }
1295
+ setValue("method", group);
1296
+ } else {
1297
+ setSelectedGroup(group);
1048
1298
  }
1049
- if (isGroupImmediateSubmit(method)) {
1050
- dispatchFormState({
1051
- type: "action_select_method",
1052
- method
1053
- });
1299
+ };
1300
+ return /* @__PURE__ */ jsxRuntime.jsx(Card.AuthMethodListContainer, { children: Object.entries(options).map(([group, options2]) => /* @__PURE__ */ jsxRuntime.jsx(
1301
+ Card.AuthMethodListItem,
1302
+ {
1303
+ group,
1304
+ title: options2.title,
1305
+ onClick: () => handleClick(group, options2)
1306
+ },
1307
+ group
1308
+ )) });
1309
+ }
1310
+ function toAuthMethodPickerOptions(visibleGroups) {
1311
+ return Object.fromEntries(
1312
+ Object.values(clientFetch.UiNodeGroupEnum).filter((group) => {
1313
+ var _a;
1314
+ return (_a = visibleGroups[group]) == null ? void 0 : _a.length;
1315
+ }).filter(
1316
+ (group) => ![
1317
+ clientFetch.UiNodeGroupEnum.Oidc,
1318
+ clientFetch.UiNodeGroupEnum.Saml,
1319
+ clientFetch.UiNodeGroupEnum.Default,
1320
+ clientFetch.UiNodeGroupEnum.IdentifierFirst,
1321
+ clientFetch.UiNodeGroupEnum.Profile,
1322
+ clientFetch.UiNodeGroupEnum.Captcha
1323
+ ].includes(group)
1324
+ ).map((g) => [g, {}])
1325
+ );
1326
+ }
1327
+ function OryTwoStepCardStateSelectMethod() {
1328
+ var _a, _b, _c, _d;
1329
+ const { Form, Card, Message } = useComponents();
1330
+ const { flow, flowType, dispatchFormState } = useOryFlow();
1331
+ const { ui } = flow;
1332
+ const intl = reactIntl.useIntl();
1333
+ const nodeSorter = useNodeSorter();
1334
+ const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
1335
+ const visibleGroups = useNodeGroupsWithVisibleNodes(ui.nodes);
1336
+ const authMethodBlocks = toAuthMethodPickerOptions(visibleGroups);
1337
+ const authMethodAdditionalNodes = useFunctionalNodes(ui.nodes);
1338
+ if (clientFetch.UiNodeGroupEnum.Code in authMethodBlocks) {
1339
+ let identifier = (_b = (_a = findNode(ui.nodes, {
1340
+ group: "identifier_first",
1341
+ node_type: "input",
1342
+ name: "identifier"
1343
+ })) == null ? void 0 : _a.attributes) == null ? void 0 : _b.value;
1344
+ identifier || (identifier = (_d = (_c = findNode(ui.nodes, {
1345
+ group: "code",
1346
+ node_type: "input",
1347
+ name: "address"
1348
+ })) == null ? void 0 : _c.attributes) == null ? void 0 : _d.value);
1349
+ if (identifier) {
1350
+ authMethodBlocks[clientFetch.UiNodeGroupEnum.Code] = {
1351
+ title: {
1352
+ id: "identities.messages.1010023",
1353
+ values: { address: identifier }
1354
+ }
1355
+ };
1054
1356
  }
1357
+ }
1358
+ const noMethods = {
1359
+ id: 5000002,
1360
+ text: intl.formatMessage({
1361
+ id: `identities.messages.5000002`,
1362
+ defaultMessage: "No authentication methods are available for this request. Please contact the site or app owner."
1363
+ }),
1364
+ type: "error"
1055
1365
  };
1056
- const hasOidc = ui.nodes.some((node) => node.group === clientFetch.UiNodeGroupEnum.Oidc);
1057
- const showOidc = !(formState.current === "method_active" && formState.method !== "oidc");
1058
1366
  return /* @__PURE__ */ jsxRuntime.jsxs(OryCard, { children: [
1059
1367
  /* @__PURE__ */ jsxRuntime.jsx(OryCardHeader, {}),
1060
1368
  /* @__PURE__ */ jsxRuntime.jsxs(OryCardContent, { children: [
1061
1369
  /* @__PURE__ */ jsxRuntime.jsx(OryCardValidationMessages, {}),
1062
- showOidc && /* @__PURE__ */ jsxRuntime.jsx(OryFormSocialButtonsForm, {}),
1063
- /* @__PURE__ */ jsxRuntime.jsxs(OryForm, { onAfterSubmit: handleAfterFormSubmit, children: [
1064
- /* @__PURE__ */ jsxRuntime.jsxs(Form.Group, { children: [
1065
- formState.current === "provide_identifier" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1066
- hasOidc && /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
1067
- nonOidcNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1068
- ] }),
1069
- formState.current === "select_method" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1370
+ /* @__PURE__ */ jsxRuntime.jsx(OryFormSocialButtonsForm, {}),
1371
+ Object.entries(authMethodBlocks).length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
1372
+ OryForm,
1373
+ {
1374
+ "data-testid": `ory/form/methods/local`,
1375
+ onAfterSubmit: handleAfterFormSubmit(dispatchFormState),
1376
+ children: /* @__PURE__ */ jsxRuntime.jsxs(Form.Group, { children: [
1070
1377
  /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
1071
1378
  /* @__PURE__ */ jsxRuntime.jsx(
1072
1379
  AuthMethodList,
1073
1380
  {
1074
- options,
1381
+ options: authMethodBlocks,
1075
1382
  setSelectedGroup: (group) => dispatchFormState({
1076
1383
  type: "action_select_method",
1077
1384
  method: group
1078
1385
  })
1079
1386
  }
1080
- )
1081
- ] }),
1082
- formState.current === "method_active" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1083
- ui.nodes.filter((n) => n.type === "script").map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k)),
1084
- finalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1387
+ ),
1388
+ authMethodAdditionalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1085
1389
  ] })
1086
- ] }),
1087
- /* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
1088
- ] })
1089
- ] })
1390
+ }
1391
+ ) : !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) }) })
1392
+ ] }),
1393
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
1090
1394
  ] });
1091
1395
  }
1092
- function AuthMethodList({ options, setSelectedGroup }) {
1093
- const { Card } = useComponents();
1094
- const { setValue } = reactHookForm.useFormContext();
1095
- const handleClick = (group) => {
1096
- if (isGroupImmediateSubmit(group)) {
1097
- setValue("method", group);
1098
- } else {
1099
- setSelectedGroup(group);
1100
- }
1101
- };
1102
- return /* @__PURE__ */ jsxRuntime.jsx(Card.AuthMethodListContainer, { children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
1103
- Card.AuthMethodListItem,
1104
- {
1105
- group: option,
1106
- onClick: () => handleClick(option)
1107
- },
1108
- option
1109
- )) });
1396
+ function OryTwoStepCard() {
1397
+ const { formState } = useOryFlow();
1398
+ switch (formState.current) {
1399
+ case "provide_identifier":
1400
+ return /* @__PURE__ */ jsxRuntime.jsx(OryTwoStepCardStateProvideIdentifier, {});
1401
+ case "select_method":
1402
+ return /* @__PURE__ */ jsxRuntime.jsx(OryTwoStepCardStateSelectMethod, {});
1403
+ case "method_active":
1404
+ return /* @__PURE__ */ jsxRuntime.jsx(OryTwoStepCardStateMethodActive, { formState });
1405
+ }
1406
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1407
+ "unknown form state: ",
1408
+ formState.current
1409
+ ] });
1110
1410
  }
1111
1411
  function OryFormGroups({ groups }) {
1112
1412
  const {
@@ -1116,8 +1416,8 @@ function OryFormGroups({ groups }) {
1116
1416
  const { flowType } = useOryFlow();
1117
1417
  const { Form } = useComponents();
1118
1418
  const nodes = ui.nodes.filter((node) => groups.indexOf(node.group) > -1).sort((a, b) => nodeSorter(a, b, { flowType }));
1119
- return /* @__PURE__ */ jsxRuntime.jsx(Form.Group, { children: nodes.map((node, k) => {
1120
- return /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k);
1419
+ return /* @__PURE__ */ jsxRuntime.jsx(Form.Group, { children: nodes.map((node) => {
1420
+ return /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node));
1121
1421
  }) });
1122
1422
  }
1123
1423
  function OryFormSection({
@@ -1146,14 +1446,29 @@ function OryFormSectionInner({
1146
1446
  }
1147
1447
  );
1148
1448
  }
1449
+ function OryConsentCard() {
1450
+ const { Form, Card } = useComponents();
1451
+ const flow = useOryFlow();
1452
+ return /* @__PURE__ */ jsxRuntime.jsxs(OryCard, { children: [
1453
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardHeader, {}),
1454
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs(OryForm, { children: [
1455
+ /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
1456
+ /* @__PURE__ */ jsxRuntime.jsx(Form.Group, { children: flow.flow.ui.nodes.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node))) }),
1457
+ /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
1458
+ /* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
1459
+ ] }) })
1460
+ ] });
1461
+ }
1149
1462
  function OryFormGroupDivider() {
1150
1463
  const { Card } = useComponents();
1151
1464
  const {
1152
1465
  flow: { ui }
1153
1466
  } = useOryFlow();
1154
- const filteredNodes = ui.nodes.filter((node) => node.group === "oidc");
1467
+ const filteredNodes = ui.nodes.filter(
1468
+ (node) => node.group === clientFetch.UiNodeGroupEnum.Oidc || node.group === clientFetch.UiNodeGroupEnum.Saml
1469
+ );
1155
1470
  const otherNodes = ui.nodes.filter(
1156
- (node) => node.group !== "oidc" && node.group !== "default"
1471
+ (node) => !(node.group === clientFetch.UiNodeGroupEnum.Oidc || node.group === clientFetch.UiNodeGroupEnum.Saml) && node.group !== "default"
1157
1472
  );
1158
1473
  if (filteredNodes.length > 0 && otherNodes.length > 0) {
1159
1474
  return /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {});
@@ -1179,7 +1494,7 @@ function OrySettingsOidc({ nodes }) {
1179
1494
  onClick: () => {
1180
1495
  if (node.attributes.node_type === "input") {
1181
1496
  setValue("link", node.attributes.value);
1182
- setValue("method", "oidc");
1497
+ setValue("method", node.group);
1183
1498
  }
1184
1499
  }
1185
1500
  }));
@@ -1188,7 +1503,7 @@ function OrySettingsOidc({ nodes }) {
1188
1503
  onClick: () => {
1189
1504
  if (node.attributes.node_type === "input") {
1190
1505
  setValue("unlink", node.attributes.value);
1191
- setValue("method", "oidc");
1506
+ setValue("method", node.group);
1192
1507
  }
1193
1508
  }
1194
1509
  }));
@@ -1497,16 +1812,19 @@ function SettingsSectionContent({ group, nodes }) {
1497
1812
  const { Card } = useComponents();
1498
1813
  const intl = reactIntl.useIntl();
1499
1814
  const { flow } = useOryFlow();
1500
- const uniqueGroups = useNodesGroups(flow.ui.nodes);
1815
+ const groupedNodes = useNodesGroups(flow.ui.nodes, {
1816
+ // Script nodes are already handled by the parent component.
1817
+ omit: ["script"]
1818
+ });
1501
1819
  if (group === clientFetch.UiNodeGroupEnum.Totp) {
1502
1820
  return /* @__PURE__ */ jsxRuntime.jsxs(
1503
1821
  OryFormSection,
1504
1822
  {
1505
- nodes: uniqueGroups.groups.totp,
1823
+ nodes: groupedNodes.groups.totp,
1506
1824
  "data-testid": "ory/screen/settings/group/totp",
1507
1825
  children: [
1508
- /* @__PURE__ */ jsxRuntime.jsx(OrySettingsTotp, { nodes: (_a = uniqueGroups.groups.totp) != null ? _a : [] }),
1509
- (_b = uniqueGroups.groups.default) == null ? void 0 : _b.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1826
+ /* @__PURE__ */ jsxRuntime.jsx(OrySettingsTotp, { nodes: (_a = groupedNodes.groups.totp) != null ? _a : [] }),
1827
+ (_b = groupedNodes.groups.default) == null ? void 0 : _b.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1510
1828
  ]
1511
1829
  }
1512
1830
  );
@@ -1515,16 +1833,16 @@ function SettingsSectionContent({ group, nodes }) {
1515
1833
  return /* @__PURE__ */ jsxRuntime.jsxs(
1516
1834
  OryFormSection,
1517
1835
  {
1518
- nodes: uniqueGroups.groups.lookup_secret,
1836
+ nodes: groupedNodes.groups.lookup_secret,
1519
1837
  "data-testid": "ory/screen/settings/group/lookup_secret",
1520
1838
  children: [
1521
1839
  /* @__PURE__ */ jsxRuntime.jsx(
1522
1840
  OrySettingsRecoveryCodes,
1523
1841
  {
1524
- nodes: (_c = uniqueGroups.groups.lookup_secret) != null ? _c : []
1842
+ nodes: (_c = groupedNodes.groups.lookup_secret) != null ? _c : []
1525
1843
  }
1526
1844
  ),
1527
- (_d = uniqueGroups.groups.default) == null ? void 0 : _d.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1845
+ (_d = groupedNodes.groups.default) == null ? void 0 : _d.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1528
1846
  ]
1529
1847
  }
1530
1848
  );
@@ -1533,11 +1851,11 @@ function SettingsSectionContent({ group, nodes }) {
1533
1851
  return /* @__PURE__ */ jsxRuntime.jsxs(
1534
1852
  OryFormSection,
1535
1853
  {
1536
- nodes: uniqueGroups.groups.oidc,
1854
+ nodes: groupedNodes.groups.oidc,
1537
1855
  "data-testid": "ory/screen/settings/group/oidc",
1538
1856
  children: [
1539
- /* @__PURE__ */ jsxRuntime.jsx(OrySettingsOidc, { nodes: (_e = uniqueGroups.groups.oidc) != null ? _e : [] }),
1540
- (_f = uniqueGroups.groups.default) == null ? void 0 : _f.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1857
+ /* @__PURE__ */ jsxRuntime.jsx(OrySettingsOidc, { nodes: (_e = groupedNodes.groups.oidc) != null ? _e : [] }),
1858
+ (_f = groupedNodes.groups.default) == null ? void 0 : _f.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1541
1859
  ]
1542
1860
  }
1543
1861
  );
@@ -1546,11 +1864,11 @@ function SettingsSectionContent({ group, nodes }) {
1546
1864
  return /* @__PURE__ */ jsxRuntime.jsxs(
1547
1865
  OryFormSection,
1548
1866
  {
1549
- nodes: uniqueGroups.groups.webauthn,
1867
+ nodes: groupedNodes.groups.webauthn,
1550
1868
  "data-testid": "ory/screen/settings/group/webauthn",
1551
1869
  children: [
1552
- /* @__PURE__ */ jsxRuntime.jsx(OrySettingsWebauthn, { nodes: (_g = uniqueGroups.groups.webauthn) != null ? _g : [] }),
1553
- (_h = uniqueGroups.groups.default) == null ? void 0 : _h.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1870
+ /* @__PURE__ */ jsxRuntime.jsx(OrySettingsWebauthn, { nodes: (_g = groupedNodes.groups.webauthn) != null ? _g : [] }),
1871
+ (_h = groupedNodes.groups.default) == null ? void 0 : _h.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1554
1872
  ]
1555
1873
  }
1556
1874
  );
@@ -1559,11 +1877,11 @@ function SettingsSectionContent({ group, nodes }) {
1559
1877
  return /* @__PURE__ */ jsxRuntime.jsxs(
1560
1878
  OryFormSection,
1561
1879
  {
1562
- nodes: uniqueGroups.groups.passkey,
1880
+ nodes: groupedNodes.groups.passkey,
1563
1881
  "data-testid": "ory/screen/settings/group/passkey",
1564
1882
  children: [
1565
- /* @__PURE__ */ jsxRuntime.jsx(OrySettingsPasskey, { nodes: (_i = uniqueGroups.groups.passkey) != null ? _i : [] }),
1566
- (_j = uniqueGroups.groups.default) == null ? void 0 : _j.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1883
+ /* @__PURE__ */ jsxRuntime.jsx(OrySettingsPasskey, { nodes: (_i = groupedNodes.groups.passkey) != null ? _i : [] }),
1884
+ (_j = groupedNodes.groups.default) == null ? void 0 : _j.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1567
1885
  ]
1568
1886
  }
1569
1887
  );
@@ -1584,30 +1902,30 @@ function SettingsSectionContent({ group, nodes }) {
1584
1902
  id: `settings.${group}.description`
1585
1903
  }),
1586
1904
  children: [
1587
- (_k = uniqueGroups.groups.default) == null ? void 0 : _k.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k)),
1905
+ (_k = groupedNodes.groups.default) == null ? void 0 : _k.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node))),
1588
1906
  nodes.filter(
1589
1907
  (node) => "type" in node.attributes && node.attributes.type !== "submit"
1590
- ).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1908
+ ).map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1591
1909
  ]
1592
1910
  }
1593
1911
  ),
1594
1912
  /* @__PURE__ */ jsxRuntime.jsx(Card.SettingsSectionFooter, { children: nodes.filter(
1595
1913
  (node) => "type" in node.attributes && node.attributes.type === "submit"
1596
- ).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k)) })
1914
+ ).map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node))) })
1597
1915
  ]
1598
1916
  }
1599
1917
  );
1600
1918
  }
1601
- var getScriptNode = (nodes) => nodes.find(
1602
- (node) => "id" in node.attributes && node.attributes.id === "webauthn_script"
1919
+ var onlyScriptNodes = (nodes) => nodes.filter(
1920
+ (node) => clientFetch.isUiNodeScriptAttributes(node.attributes) && node.attributes.id === "webauthn_script"
1603
1921
  );
1604
1922
  function OrySettingsCard() {
1605
1923
  const { flow } = useOryFlow();
1606
- const uniqueGroups = useNodesGroups(flow.ui.nodes);
1607
- const scriptNode = getScriptNode(flow.ui.nodes);
1924
+ const uniqueGroups = useNodesGroups(flow.ui.nodes, { omit: ["script"] });
1925
+ const scriptNodes = onlyScriptNodes(flow.ui.nodes);
1608
1926
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1609
1927
  /* @__PURE__ */ jsxRuntime.jsx(OryCardValidationMessages, {}),
1610
- scriptNode && /* @__PURE__ */ jsxRuntime.jsx(Node, { node: scriptNode }),
1928
+ scriptNodes.map((n) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node: n }, clientFetch.getNodeId(n))),
1611
1929
  uniqueGroups.entries.map(([group, nodes]) => {
1612
1930
  if (group === clientFetch.UiNodeGroupEnum.Default) {
1613
1931
  return null;
@@ -1703,9 +2021,9 @@ var en_default = {
1703
2021
  "identities.messages.1010005": "Verify",
1704
2022
  "identities.messages.1010006": "Authentication code",
1705
2023
  "identities.messages.1010007": "Backup recovery code",
1706
- "identities.messages.1010008": "Sign in with hardware key",
1707
- "identities.messages.1010009": "Use Authenticator",
1708
- "identities.messages.1010010": "Use backup recovery code",
2024
+ "identities.messages.1010008": "Continue with hardware key",
2025
+ "identities.messages.1010009": "Continue",
2026
+ "identities.messages.1010010": "Continue",
1709
2027
  "identities.messages.1010011": "Sign in with hardware key",
1710
2028
  "identities.messages.1010012": "Prepare your WebAuthn device (e.g. security key, biometrics scanner, ...) and press continue.",
1711
2029
  "identities.messages.1010013": "Continue",
@@ -1842,9 +2160,17 @@ var en_default = {
1842
2160
  "login.subtitle-oauth2": "To authenticate {clientName}",
1843
2161
  "login.title": "Sign in",
1844
2162
  "login.subtitle": "Sign in with {parts}",
1845
- "login.title-aal2": "Two-Factor Authentication",
2163
+ "login.title-aal2": "Second factor authentication",
2164
+ "login.subtitle-aal2": "Choose a way to complete your second factor authentication",
2165
+ "login.code.subtitle": "A verification code will be sent by email",
2166
+ "login.webauthn.subtitle": "Please prepare your WebAuthN device",
2167
+ "login.totp.subtitle": "Please enter the code generated by your Authenticator App",
2168
+ "login.lookup_secret.subtitle": "Please enter one of your 8-digit backup recovery codes",
1846
2169
  "login.title-refresh": "Reauthenticate",
1847
2170
  "login.subtitle-refresh": "Confirm your identity with {parts}",
2171
+ "login.2fa.go-back": "Something isn't working?",
2172
+ "login.2fa.go-back.link": "Go back",
2173
+ "login.2fa.method.go-back": "Choose another method",
1848
2174
  "logout.accept-button": "Yes",
1849
2175
  "logout.reject-button": "No",
1850
2176
  "logout.title": "Do you wish to log out?",
@@ -1893,18 +2219,24 @@ var en_default = {
1893
2219
  "two-step.password.description": "Enter your password associated with your account",
1894
2220
  "two-step.code.title": "Email code",
1895
2221
  "two-step.code.description": "A verification code will be sent to your email",
1896
- "two-step.webauthn.title": "Security Key",
2222
+ "two-step.webauthn.title": "Security key",
1897
2223
  "two-step.webauthn.description": "Use your security key to authenticate",
1898
2224
  "two-step.passkey.title": "Passkey (recommended)",
1899
2225
  "two-step.passkey.description": "Use your device's for fingerprint or face recognition",
2226
+ "two-step.totp.title": "Use your Authenticator App (TOTP)",
2227
+ "two-step.totp.description": "Use a 6-digit one-time code from your authenticator app",
2228
+ "two-step.lookup_secret.title": "Backup recovery code",
2229
+ "two-step.lookup_secret.description": "Use up one of your 8-digit backup codes to authenticate",
1900
2230
  "identities.messages.1010020": "",
1901
2231
  "input.placeholder": "Enter your {placeholder}",
1902
2232
  "card.header.parts.oidc": "a social provider",
1903
2233
  "card.header.parts.password.registration": "your {identifierLabel} and a password",
1904
2234
  "card.header.parts.password.login": "your {identifierLabel} and password",
1905
- "card.header.parts.code": "a code sent to your email",
2235
+ "card.header.parts.code": "a code sent to you",
1906
2236
  "card.header.parts.passkey": "a Passkey",
1907
2237
  "card.header.parts.webauthn": "a security key",
2238
+ "card.header.parts.totp": "your authenticator app",
2239
+ "card.header.parts.lookup_secret": "a backup recovery code",
1908
2240
  "card.header.parts.identifier-first": "your {identifierLabel}",
1909
2241
  "card.header.description.login": "Sign in with {identifierLabel}",
1910
2242
  "card.header.description.registration": "Sign up with {identifierLabel}",
@@ -1930,7 +2262,27 @@ var en_default = {
1930
2262
  "property.phone": "phone",
1931
2263
  "property.username": "username",
1932
2264
  "property.identifier": "identifier",
1933
- "property.code": "code"
2265
+ "property.code": "code",
2266
+ "consent.title": "Authorize {party}",
2267
+ "consent.subtitle": "A third party application wants to access information associated with your account {identifier}.",
2268
+ "consent.scope.openid.title": "Identity",
2269
+ "consent.scope.openid.description": "Allows the application to verify your identity. This is required for authentication and a trusted login experience.",
2270
+ "consent.scope.offline_access.title": "Offline Access",
2271
+ "consent.scope.offline_access.description": "Allows this application to keep you signed in even when you're not actively using it.",
2272
+ "consent.scope.profile.title": "Profile Information",
2273
+ "consent.scope.profile.description": "Allows access to your basic profile details, including your username, first name, and last name.",
2274
+ "consent.scope.email.title": "Email Address",
2275
+ "consent.scope.email.description": "Retrieve your email address and its verification status.",
2276
+ "consent.scope.address.title": "Physical Address",
2277
+ "consent.scope.address.description": "Access your postal address.",
2278
+ "consent.scope.phone.title": "Phone Number",
2279
+ "consent.scope.phone.description": "Retrieve your phone number and its verification status.",
2280
+ "error.title.what-happened": "What happened?",
2281
+ "error.title.what-can-i-do": "What can I do?",
2282
+ "error.instructions": "Please try again in a few minutes or contact the website operator.",
2283
+ "error.footer.text": "When reporting this error, please include the following information:",
2284
+ "error.footer.copy": "Copy",
2285
+ "error.action.go-back": "Go back"
1934
2286
  };
1935
2287
 
1936
2288
  // src/locales/de.json
@@ -1956,9 +2308,9 @@ var de_default = {
1956
2308
  "identities.messages.1010005": "Verifizieren",
1957
2309
  "identities.messages.1010006": "Authentifizierungscode",
1958
2310
  "identities.messages.1010007": "Backup-Wiederherstellungscode",
1959
- "identities.messages.1010008": "Sicherheitsschl\xFCssel verwenden",
1960
- "identities.messages.1010009": "Authentifizierungs-App verwenden",
1961
- "identities.messages.1010010": "Backup-Wiederherstellungscode verwenden",
2311
+ "identities.messages.1010008": "Mit Sicherheitsschl\xFCssel fortfahren",
2312
+ "identities.messages.1010009": "Weiter",
2313
+ "identities.messages.1010010": "Weiter",
1962
2314
  "identities.messages.1010011": "Mit Sicherheitsschl\xFCssel fortfahren",
1963
2315
  "identities.messages.1010012": "Bereiten Sie Ihr WebAuthn-Ger\xE4t vor (z. B. Sicherheitsschl\xFCssel, biometrischer Scanner, ...) und dr\xFCcken Sie auf Weiter.",
1964
2316
  "identities.messages.1010013": "Weiter",
@@ -2074,8 +2426,16 @@ var de_default = {
2074
2426
  "login.registration-label": "Sie haben noch kein Konto?",
2075
2427
  "login.subtitle-oauth2": "Zur Authentifizierung bei {clientName}",
2076
2428
  "login.title": "Anmelden",
2077
- "login.title-aal2": "Zwei-Faktor-Authentifizierung",
2429
+ "login.title-aal2": "Zweitfaktor-Authentifizierung",
2430
+ "login.subtitle-aal2": "W\xE4hlen Sie eine Methode zur Best\xE4tigung Ihrer Zwei-Faktor-Authentifizierung",
2431
+ "login.code.subtitle": "Ein Best\xE4tigungscode wird per E-Mail gesendet",
2432
+ "login.webauthn.subtitle": "Bitte bereiten Sie Ihr WebAuthN-Ger\xE4t vor",
2433
+ "login.totp.subtitle": "Bitte geben Sie den Code aus Ihrer Authenticator-App ein",
2434
+ "login.lookup_secret.subtitle": "Bitte geben Sie einen Ihrer 8-stelligen Backup-Wiederherstellungscodes ein",
2078
2435
  "login.title-refresh": "Best\xE4tigen Sie, dass Sie es sind",
2436
+ "login.2fa.go-back": "Funktioniert etwas nicht?",
2437
+ "login.2fa.go-back.link": "Zur\xFCck",
2438
+ "login.2fa.method.go-back": "Eine andere Methode w\xE4hlen",
2079
2439
  "logout.accept-button": "Ja",
2080
2440
  "logout.reject-button": "Nein",
2081
2441
  "logout.title": "M\xF6chten Sie sich abmelden?",
@@ -2093,11 +2453,15 @@ var de_default = {
2093
2453
  "two-step.code.description": "Ein Best\xE4tigungscode wird an Ihre E-Mail gesendet.",
2094
2454
  "two-step.code.title": "E-Mail-Code",
2095
2455
  "two-step.passkey.description": "Verwenden Sie die Fingerabdruck- oder Gesichtserkennung Ihres Ger\xE4ts",
2096
- "two-step.passkey.title": "Passwort (empfohlen)",
2456
+ "two-step.passkey.title": "Passkey (empfohlen)",
2097
2457
  "two-step.password.description": "Geben Sie Ihr Passwort ein, das mit Ihrem Konto verkn\xFCpft ist",
2098
2458
  "two-step.password.title": "Passwort",
2099
- "two-step.webauthn.description": "Verwenden Sie Ihren Sicherheitsschl\xFCssel zur Authentifizierung",
2100
2459
  "two-step.webauthn.title": "Sicherheitsschl\xFCssel",
2460
+ "two-step.webauthn.description": "Verwenden Sie Ihren Sicherheitsschl\xFCssel zur Authentifizierung",
2461
+ "two-step.totp.title": "Verwenden Sie Ihre Authenticator-App (TOTP)",
2462
+ "two-step.totp.description": "Verwenden Sie einen 6-stelligen Einmal-Code aus Ihrer Authenticator-App",
2463
+ "two-step.lookup_secret.title": "Backup-Wiederherstellungscode",
2464
+ "two-step.lookup_secret.description": "Verwenden Sie einen Ihrer 8-stelligen Backup-Codes, um sich zu authentifizieren",
2101
2465
  "identities.messages.1070014": "Login- und Link-Zugangsdaten",
2102
2466
  "identities.messages.1070015": "Bitte schlie\xDFen Sie die Captcha-Challenge ab, um fortzufahren.",
2103
2467
  "identities.messages.4000038": "Die Captcha-\xDCberpr\xFCfung ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
@@ -2105,28 +2469,30 @@ var de_default = {
2105
2469
  "login.cancel-label": "Nicht das richtige Konto?",
2106
2470
  "identities.messages.1010023": "Code an {address} senden",
2107
2471
  "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.",
2108
- "identities.messages.1010017": "",
2109
- "identities.messages.1010018": "",
2110
- "identities.messages.1010019": "",
2472
+ "identities.messages.1010017": "Anmelden und verbinden",
2473
+ "identities.messages.1010018": "Mit {provider} best\xE4tigen",
2474
+ "identities.messages.1010019": "Code senden um fortzufahren",
2111
2475
  "identities.messages.1010020": "",
2112
- "identities.messages.1010021": "",
2113
- "identities.messages.1010022": "",
2114
- "identities.messages.1040007": "",
2115
- "identities.messages.1040008": "",
2116
- "identities.messages.1040009": "",
2476
+ "identities.messages.1010021": "Mit Paskey anmelden",
2477
+ "identities.messages.1010022": "Mit Passwort anmelden",
2478
+ "identities.messages.1040007": "Mit Passkey registrieren",
2479
+ "identities.messages.1040008": "Zur\xFCck",
2480
+ "identities.messages.1040009": "Bitte w\xE4hlen Sie eine Authentifizierungsmethode, um fortzufahren.",
2117
2481
  "identities.messages.1050019": "Passkey hinzuf\xFCgen",
2118
- "identities.messages.1050020": "",
2119
- "identities.messages.4000037": "",
2120
- "identities.messages.4010009": "",
2121
- "identities.messages.4010010": "",
2482
+ "identities.messages.1050020": 'Passkey "{display_name}" entfernen',
2483
+ "identities.messages.4000037": "F\xFCr die eingegebenen Daten existiert kein Account",
2484
+ "identities.messages.4010009": "Die Authentifizierungsmethode stimmt nicht mit der vorherigen Authentifizierungsmethode \xFCberein. Bitte versuchen Sie es erneut.",
2485
+ "identities.messages.4010010": "Die eingegebene Adresse stimmt nicht mit der Adresse \xFCberein, die Sie bei der Registrierung angegeben haben. Bitte versuchen Sie es erneut.",
2122
2486
  "input.placeholder": "{placeholder} eingeben",
2123
- "card.header.parts.code": "einem Code per E-Mail",
2487
+ "card.header.parts.code": "ein an Sie gesendeter Code",
2124
2488
  "card.header.parts.identifier-first": "Ihr {identifierLabel}",
2125
2489
  "card.header.parts.oidc": "ein sozialer Anbieter",
2126
2490
  "card.header.parts.passkey": "ein Passkey",
2127
2491
  "card.header.parts.password.login": "Ihrer {identifierLabel} und Ihrem Passwort",
2128
2492
  "card.header.parts.password.registration": "Ihrer {identifierLabel} und einem Passwort",
2129
2493
  "card.header.parts.webauthn": "ein Sicherheitsschl\xFCssel",
2494
+ "card.header.parts.totp": "deine Authentifikator-App",
2495
+ "card.header.parts.lookup_secret": "ein Backup-Wiederherstellungscode",
2130
2496
  "recovery.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um einen einmaligen Zugangscode zu erhalten",
2131
2497
  "verification.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um es zu best\xE4tigen",
2132
2498
  "card.header.description.login": "Melden Sie sich mit {identifierLabel} an",
@@ -2183,7 +2549,27 @@ var de_default = {
2183
2549
  "property.password": "Passwort",
2184
2550
  "property.phone": "Telefon",
2185
2551
  "property.code": "Code",
2186
- "property.username": "Benutzername"
2552
+ "property.username": "Benutzername",
2553
+ "consent.title": "Autorisieren {party}",
2554
+ "consent.subtitle": "Eine Drittanbieteranwendung m\xF6chte auf Informationen zugreifen, die mit Ihrem Konto {identifier} verkn\xFCpft sind.",
2555
+ "consent.scope.openid.title": "Identit\xE4t",
2556
+ "consent.scope.openid.description": "Erm\xF6glicht der Anwendung, Ihre Identit\xE4t zu \xFCberpr\xFCfen. Dies ist f\xFCr die Authentifizierung und eine vertrauensw\xFCrdige Login-Erfahrung erforderlich.",
2557
+ "consent.scope.offline_access.title": "Offline-Zugriff",
2558
+ "consent.scope.offline_access.description": "Erm\xF6glicht dieser Anwendung, Sie angemeldet zu lassen, auch wenn Sie sie nicht aktiv nutzen.",
2559
+ "consent.scope.profile.title": "Profilinformationen",
2560
+ "consent.scope.profile.description": "Erm\xF6glicht den Zugriff auf Ihre grundlegenden Profildetails, einschlie\xDFlich Ihres Benutzernamens, Vornamens und Nachnamens.",
2561
+ "consent.scope.email.title": "E-Mail-Adresse",
2562
+ "consent.scope.email.description": "Erm\xF6glicht den Abruf Ihrer E-Mail-Adresse und deren \xDCberpr\xFCfungsstatus.",
2563
+ "consent.scope.address.title": "Physische Adresse",
2564
+ "consent.scope.address.description": "Erm\xF6glicht den Zugriff auf Ihre Postanschrift.",
2565
+ "consent.scope.phone.title": "Telefonnummer",
2566
+ "consent.scope.phone.description": "Erm\xF6glicht den Abruf Ihrer Telefonnummer und deren \xDCberpr\xFCfungsstatus.",
2567
+ "error.title.what-happened": "Was ist passiert?",
2568
+ "error.footer.copy": "Kopieren",
2569
+ "error.footer.text": "Bitte f\xFCgen Sie bei der Meldung dieses Fehlers die folgenden Informationen hinzu:",
2570
+ "error.instructions": "Bitte versuchen Sie es in wenigen Minuten erneut oder wenden Sie sich an den Website-Betreiber.",
2571
+ "error.title.what-can-i-do": "Was kann ich tun?",
2572
+ "error.action.go-back": "Zur\xFCck"
2187
2573
  };
2188
2574
 
2189
2575
  // src/locales/es.json
@@ -2199,7 +2585,6 @@ var es_default = {
2199
2585
  "error.back-button": "Regresar",
2200
2586
  "error.description": "Ocurri\xF3 un error con el siguiente mensaje:",
2201
2587
  "error.support-email-link": "Si el problema persiste, por favor contacte a <a>{contactSupportEmail}</a>",
2202
- "error.title": "Ocurri\xF3 un error",
2203
2588
  "error.title-internal-server-error": "Error Interno del Servidor",
2204
2589
  "error.title-not-found": "404 - P\xE1gina no encontrada",
2205
2590
  "identities.messages.1010001": "Iniciar sesi\xF3n",
@@ -2209,9 +2594,9 @@ var es_default = {
2209
2594
  "identities.messages.1010005": "Verificar",
2210
2595
  "identities.messages.1010006": "C\xF3digo de autenticaci\xF3n",
2211
2596
  "identities.messages.1010007": "C\xF3digo de recuperaci\xF3n de respaldo",
2212
- "identities.messages.1010008": "Usar llave de seguridad",
2213
- "identities.messages.1010009": "Usar Autenticador",
2214
- "identities.messages.1010010": "Usar c\xF3digo de recuperaci\xF3n de respaldo",
2597
+ "identities.messages.1010008": "Continuar con la llave de hardware",
2598
+ "identities.messages.1010009": "Continuar",
2599
+ "identities.messages.1010010": "Continuar",
2215
2600
  "identities.messages.1010011": "Continuar con llave de seguridad",
2216
2601
  "identities.messages.1010012": "Prepare su dispositivo WebAuthn (por ejemplo, llave de seguridad, esc\xE1ner biom\xE9trico, ...) y presione continuar.",
2217
2602
  "identities.messages.1010013": "Continuar",
@@ -2327,8 +2712,16 @@ var es_default = {
2327
2712
  "login.registration-label": "\xBFNo tiene una cuenta?",
2328
2713
  "login.subtitle-oauth2": "Para autenticar a {clientName}",
2329
2714
  "login.title": "Iniciar sesi\xF3n",
2330
- "login.title-aal2": "Autenticaci\xF3n de Dos Factores",
2715
+ "login.title-aal2": "Autenticaci\xF3n de dos factores",
2716
+ "login.subtitle-aal2": "Elija una forma de completar su autenticaci\xF3n de segundo factor",
2717
+ "login.code.subtitle": "Se enviar\xE1 un c\xF3digo de verificaci\xF3n por correo electr\xF3nico",
2718
+ "login.webauthn.subtitle": "Por favor, prepare su dispositivo WebAuthN",
2719
+ "login.totp.subtitle": "Ingrese el c\xF3digo generado por su aplicaci\xF3n de autenticaci\xF3n",
2720
+ "login.lookup_secret.subtitle": "Ingrese uno de sus c\xF3digos de recuperaci\xF3n de respaldo de 8 d\xEDgitos",
2331
2721
  "login.title-refresh": "Confirme que es usted",
2722
+ "login.2fa.go-back": "\xBFAlgo no funciona?",
2723
+ "login.2fa.go-back.link": "Volver",
2724
+ "login.2fa.method.go-back": "Elegir otro m\xE9todo",
2332
2725
  "logout.accept-button": "S\xED",
2333
2726
  "logout.reject-button": "No",
2334
2727
  "logout.title": "\xBFDesea cerrar sesi\xF3n?",
@@ -2360,47 +2753,12 @@ var es_default = {
2360
2753
  "two-step.passkey.title": "Clave de acceso (recomendada)",
2361
2754
  "two-step.password.description": "Ingrese la contrase\xF1a asociada con su cuenta",
2362
2755
  "two-step.password.title": "Contrase\xF1a",
2363
- "two-step.webauthn.description": "Utiliza tu llave de seguridad para autenticarte",
2364
2756
  "two-step.webauthn.title": "Clave de Seguridad",
2365
- "identities.messages.1010016": "",
2366
- "identities.messages.1010017": "",
2367
- "identities.messages.1010018": "",
2368
- "identities.messages.1010019": "",
2369
- "identities.messages.1010020": "",
2370
- "identities.messages.1010021": "",
2371
- "identities.messages.1010022": "",
2372
- "identities.messages.1010023": "",
2373
- "identities.messages.1040007": "",
2374
- "identities.messages.1040008": "",
2375
- "identities.messages.1040009": "",
2376
- "identities.messages.1050019": "",
2377
- "identities.messages.1050020": "",
2378
- "identities.messages.1070014": "",
2379
- "identities.messages.1070015": "",
2380
- "identities.messages.4000037": "",
2381
- "identities.messages.4000038": "",
2382
- "identities.messages.4010009": "",
2383
- "identities.messages.4010010": "",
2384
- "login.cancel-button": "",
2385
- "login.cancel-label": "",
2386
- "input.placeholder": "",
2387
- "card.header.description.login": "",
2388
- "card.header.description.registration": "",
2389
- "card.header.parts.code": "",
2390
- "card.header.parts.identifier-first": "",
2391
- "card.header.parts.oidc": "",
2392
- "card.header.parts.passkey": "",
2393
- "card.header.parts.password.login": "",
2394
- "card.header.parts.password.registration": "",
2395
- "card.header.parts.webauthn": "",
2396
- "forms.label.forgot-password": "",
2397
- "login.subtitle": "",
2398
- "login.subtitle-refresh": "",
2399
- "misc.or": "",
2400
- "recovery.subtitle": "",
2401
- "registration.subtitle": "",
2402
- "settings.subtitle": "",
2403
- "verification.subtitle": "",
2757
+ "two-step.webauthn.description": "Utilice su llave de seguridad para autenticase",
2758
+ "two-step.totp.title": "Utilice su aplicaci\xF3n de autenticaci\xF3n (TOTP)",
2759
+ "two-step.totp.description": "Utilice un c\xF3digo de un solo uso de 6 d\xEDgitos de su aplicaci\xF3n de autenticaci\xF3n",
2760
+ "two-step.lookup_secret.title": "C\xF3digo de recuperaci\xF3n de respaldo",
2761
+ "two-step.lookup_secret.description": "Utilice uno de sus c\xF3digos de respaldo de 8 d\xEDgitos para autenticarse",
2404
2762
  "settings.totp.info.linked": "Actualmente tienes una aplicaci\xF3n de autenticaci\xF3n conectada.",
2405
2763
  "settings.totp.info.not-linked": "Para habilitar, escanea el c\xF3digo QR con tu autenticador e ingresa el c\xF3digo.",
2406
2764
  "settings.totp.title": "Aplicaci\xF3n Autenticadora",
@@ -2418,25 +2776,87 @@ var es_default = {
2418
2776
  "settings.profile.title": "Configuraci\xF3n de Perfil",
2419
2777
  "settings.webauthn.description": "Administra la configuraci\xF3n de tu token de hardware",
2420
2778
  "settings.webauthn.title": "Gestionar Tokens de Hardware",
2421
- "settings.oidc.info": "",
2422
- "settings.passkey.info": "",
2423
- "settings.title-lookup-secret": "",
2424
- "settings.title-navigation": "",
2425
- "settings.title-oidc": "",
2426
- "settings.title-passkey": "",
2427
- "settings.title-password": "",
2428
- "settings.title-profile": "",
2429
- "settings.title-totp": "",
2430
- "settings.title-webauthn": "",
2431
- "settings.webauthn.info": "",
2432
- "card.footer.select-another-method": "",
2433
- "account-linking.title": "",
2434
- "property.code": "",
2435
- "property.email": "",
2436
- "property.identifier": "",
2437
- "property.password": "",
2438
- "property.phone": "",
2439
- "property.username": ""
2779
+ "consent.title": "Autorizar {party}",
2780
+ "consent.subtitle": "Una aplicaci\xF3n de terceros quiere acceder a la informaci\xF3n asociada a su cuenta {identifier}.",
2781
+ "consent.scope.openid.title": "Identidad",
2782
+ "consent.scope.openid.description": "Permite que la aplicaci\xF3n verifique su identidad. Esto es necesario para la autenticaci\xF3n y una experiencia de inicio de sesi\xF3n confiable.",
2783
+ "consent.scope.offline_access.title": "Acceso sin conexi\xF3n",
2784
+ "consent.scope.offline_access.description": "Permite que esta aplicaci\xF3n le mantenga conectado incluso cuando no la est\xE9 utilizando activamente.",
2785
+ "consent.scope.profile.title": "Informaci\xF3n del perfil",
2786
+ "consent.scope.profile.description": "Permite el acceso a los detalles b\xE1sicos de su perfil, incluyendo su nombre de usuario, nombre y apellido.",
2787
+ "consent.scope.email.title": "Direcci\xF3n de correo electr\xF3nico",
2788
+ "consent.scope.email.description": "Recupere su direcci\xF3n de correo electr\xF3nico y su estado de verificaci\xF3n.",
2789
+ "consent.scope.address.title": "Direcci\xF3n f\xEDsica",
2790
+ "consent.scope.address.description": "Acceda a su direcci\xF3n postal.",
2791
+ "consent.scope.phone.title": "N\xFAmero de tel\xE9fono",
2792
+ "consent.scope.phone.description": "Recupere su n\xFAmero de tel\xE9fono y su estado de verificaci\xF3n.",
2793
+ "error.title": "Ocurri\xF3 un error",
2794
+ "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.',
2795
+ "identities.messages.1010017": "Iniciar sesi\xF3n y vincular",
2796
+ "identities.messages.1010018": "Confirmar con {provider}",
2797
+ "identities.messages.1010019": "Solicitar c\xF3digo para continuar",
2798
+ "identities.messages.1010021": "Iniciar sesi\xF3n con clave de acceso",
2799
+ "identities.messages.1010022": "Iniciar sesi\xF3n con contrase\xF1a",
2800
+ "identities.messages.1010023": "Enviar c\xF3digo a {address}",
2801
+ "identities.messages.1040007": "Registrarse con clave de acceso",
2802
+ "identities.messages.1040008": "Atr\xE1s",
2803
+ "identities.messages.1040009": "Por favor, elige una credencial para autenticarte.",
2804
+ "identities.messages.1050019": "Agregar clave de acceso",
2805
+ "identities.messages.1070014": "Iniciar sesi\xF3n y vincular credencial",
2806
+ "identities.messages.1070015": "Por favor, completa el desaf\xEDo captcha para continuar.",
2807
+ "identities.messages.4000037": "Esta cuenta no existe o no tiene ning\xFAn m\xE9todo de inicio de sesi\xF3n configurado.",
2808
+ "identities.messages.4000038": "Fall\xF3 la verificaci\xF3n de Captcha, por favor intenta de nuevo.",
2809
+ "identities.messages.4010009": "Las credenciales vinculadas no coinciden.",
2810
+ "identities.messages.4010010": "La direcci\xF3n que ingresaste no coincide con ninguna direcci\xF3n conocida en la cuenta actual.",
2811
+ "login.cancel-button": "Cancelar",
2812
+ "login.cancel-label": "\xBFNo es la cuenta correcta?",
2813
+ "login.subtitle": "Iniciar sesi\xF3n con {parts}",
2814
+ "login.subtitle-refresh": "Confirma tu identidad con {parts}",
2815
+ "recovery.subtitle": "Ingresa la direcci\xF3n de correo electr\xF3nico asociada con tu cuenta para recibir un c\xF3digo de acceso \xFAnico",
2816
+ "registration.subtitle": "Registrarse con {parts}",
2817
+ "settings.subtitle": "Actualiza la configuraci\xF3n de tu cuenta",
2818
+ "settings.title-lookup-secret": "Administrar c\xF3digos de recuperaci\xF3n de respaldo 2FA",
2819
+ "settings.title-navigation": "Configuraci\xF3n de la cuenta",
2820
+ "settings.title-oidc": "Inicio de sesi\xF3n social",
2821
+ "settings.title-password": "Cambiar contrase\xF1a",
2822
+ "settings.title-profile": "Configuraci\xF3n del perfil",
2823
+ "settings.title-totp": "Administrar la aplicaci\xF3n de autenticaci\xF3n 2FA TOTP",
2824
+ "settings.title-webauthn": "Administrar tokens de hardware",
2825
+ "settings.title-passkey": "Administrar claves de acceso",
2826
+ "verification.subtitle": "Ingresa la direcci\xF3n de correo electr\xF3nico asociada con tu cuenta para verificarla",
2827
+ "input.placeholder": "Ingresa tu {placeholder}",
2828
+ "card.header.parts.oidc": "un proveedor social",
2829
+ "card.header.parts.password.registration": "tu {identifierLabel} y una contrase\xF1a",
2830
+ "card.header.parts.password.login": "tu {identifierLabel} y contrase\xF1a",
2831
+ "card.header.parts.code": "un c\xF3digo enviado a tu correo electr\xF3nico",
2832
+ "card.header.parts.passkey": "una clave de acceso",
2833
+ "card.header.parts.webauthn": "una clave de seguridad",
2834
+ "card.header.parts.totp": "su aplicaci\xF3n de autenticaci\xF3n",
2835
+ "card.header.parts.lookup_secret": "un c\xF3digo de recuperaci\xF3n de copia de seguridad",
2836
+ "card.header.parts.identifier-first": "tu {identifierLabel}",
2837
+ "card.header.description.login": "Iniciar sesi\xF3n con {identifierLabel}",
2838
+ "card.header.description.registration": "Registrarse con {identifierLabel}",
2839
+ "misc.or": "o",
2840
+ "forms.label.forgot-password": "\xBFOlvidaste tu contrase\xF1a?",
2841
+ "settings.oidc.info": "Las cuentas conectadas de estos proveedores se pueden utilizar para iniciar sesi\xF3n en tu cuenta",
2842
+ "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",
2843
+ "settings.passkey.info": "Administra la configuraci\xF3n de tus claves de acceso",
2844
+ "card.footer.select-another-method": "Seleccionar otro m\xE9todo",
2845
+ "account-linking.title": "Vincular cuenta",
2846
+ "property.password": "contrase\xF1a",
2847
+ "property.email": "correo electr\xF3nico",
2848
+ "property.phone": "tel\xE9fono",
2849
+ "property.username": "nombre de usuario",
2850
+ "property.identifier": "identificador",
2851
+ "property.code": "c\xF3digo",
2852
+ "error.title.what-happened": "\xBFQu\xE9 pas\xF3?",
2853
+ "error.title.what-can-i-do": "\xBFQu\xE9 puedo hacer?",
2854
+ "error.instructions": "Por favor, int\xE9ntalo de nuevo en unos minutos o contacta al operador del sitio web.",
2855
+ "error.footer.text": "Al informar este error, incluye la siguiente informaci\xF3n:",
2856
+ "error.footer.copy": "Copiar",
2857
+ "error.action.go-back": "Regresar",
2858
+ "identities.messages.1010020": "",
2859
+ "identities.messages.1050020": 'Eliminar passkey "{display_name}"'
2440
2860
  };
2441
2861
 
2442
2862
  // src/locales/fr.json
@@ -2462,9 +2882,9 @@ var fr_default = {
2462
2882
  "identities.messages.1010005": "V\xE9rifier",
2463
2883
  "identities.messages.1010006": "Code d'authentification",
2464
2884
  "identities.messages.1010007": "Code de r\xE9cup\xE9ration de secours",
2465
- "identities.messages.1010008": "Utiliser une cl\xE9 de s\xE9curit\xE9",
2466
- "identities.messages.1010009": "Utiliser un authentificateur",
2467
- "identities.messages.1010010": "Utiliser un code de r\xE9cup\xE9ration de secours",
2885
+ "identities.messages.1010008": "Continuer avec la cl\xE9 mat\xE9rielle",
2886
+ "identities.messages.1010009": "Continuer",
2887
+ "identities.messages.1010010": "Continuer",
2468
2888
  "identities.messages.1010011": "Continuer avec la cl\xE9 de s\xE9curit\xE9",
2469
2889
  "identities.messages.1010012": "Pr\xE9parez votre appareil WebAuthn (par exemple, une cl\xE9 de s\xE9curit\xE9, un scanner biom\xE9trique, ...) et appuyez sur Continuer.",
2470
2890
  "identities.messages.1010013": "Continuer",
@@ -2581,7 +3001,15 @@ var fr_default = {
2581
3001
  "login.subtitle-oauth2": "Pour vous authentifier sur {clientName}",
2582
3002
  "login.title": "Se connecter",
2583
3003
  "login.title-aal2": "Authentification \xE0 deux facteurs",
3004
+ "login.subtitle-aal2": "Choisissez une m\xE9thode pour compl\xE9ter votre authentification \xE0 deux facteurs",
3005
+ "login.code.subtitle": "Un code de v\xE9rification sera envoy\xE9 par e-mail",
3006
+ "login.webauthn.subtitle": "Veuillez pr\xE9parer votre dispositif WebAuthN",
3007
+ "login.totp.subtitle": "Veuillez saisir le code g\xE9n\xE9r\xE9 par votre application d'authentification",
3008
+ "login.lookup_secret.subtitle": "Veuillez saisir l'un de vos codes de r\xE9cup\xE9ration de secours \xE0 8 chiffres",
2584
3009
  "login.title-refresh": "Confirmez que c'est bien vous",
3010
+ "login.2fa.go-back": "Quelque chose ne fonctionne pas ?",
3011
+ "login.2fa.go-back.link": "Retour",
3012
+ "login.2fa.method.go-back": "Choisir une autre m\xE9thode",
2585
3013
  "logout.accept-button": "Oui",
2586
3014
  "logout.reject-button": "Non",
2587
3015
  "logout.title": "Souhaitez-vous vous d\xE9connecter ?",
@@ -2613,83 +3041,109 @@ var fr_default = {
2613
3041
  "two-step.passkey.title": "Cl\xE9 de passe (recommand\xE9e)",
2614
3042
  "two-step.password.description": "Entrez votre mot de passe associ\xE9 \xE0 votre compte",
2615
3043
  "two-step.password.title": "Mot de passe",
2616
- "two-step.webauthn.description": "Utilisez votre cl\xE9 de s\xE9curit\xE9 pour vous authentifier",
2617
3044
  "two-step.webauthn.title": "Cl\xE9 de S\xE9curit\xE9",
2618
- "identities.messages.1010023": "",
2619
- "identities.messages.1070015": "",
2620
- "identities.messages.4000038": "",
2621
- "login.cancel-button": "",
2622
- "login.cancel-label": "",
2623
- "identities.messages.1010016": "",
2624
- "identities.messages.1010017": "",
2625
- "identities.messages.1010018": "",
2626
- "identities.messages.1010019": "",
2627
- "identities.messages.1010020": "",
2628
- "identities.messages.1010021": "",
2629
- "identities.messages.1010022": "",
2630
- "identities.messages.1040007": "",
2631
- "identities.messages.1040008": "",
2632
- "identities.messages.1040009": "",
2633
- "identities.messages.1050019": "",
2634
- "identities.messages.1050020": "",
2635
- "identities.messages.1070014": "",
2636
- "identities.messages.4000037": "",
2637
- "identities.messages.4010009": "",
2638
- "identities.messages.4010010": "",
2639
- "input.placeholder": "",
2640
- "card.header.description.login": "",
2641
- "card.header.description.registration": "",
2642
- "card.header.parts.code": "",
2643
- "card.header.parts.identifier-first": "",
2644
- "card.header.parts.oidc": "",
2645
- "card.header.parts.passkey": "",
2646
- "card.header.parts.password.login": "",
2647
- "card.header.parts.password.registration": "",
2648
- "card.header.parts.webauthn": "",
2649
- "forms.label.forgot-password": "",
2650
- "login.subtitle": "",
2651
- "login.subtitle-refresh": "",
2652
- "misc.or": "",
2653
- "recovery.subtitle": "",
2654
- "registration.subtitle": "",
2655
- "settings.subtitle": "",
2656
- "verification.subtitle": "",
3045
+ "two-step.webauthn.description": "Utilisez votre cl\xE9 de s\xE9curit\xE9 pour vous authentifier",
3046
+ "two-step.totp.title": "Utilisez votre application d'authentification (TOTP)",
3047
+ "two-step.totp.description": "Utilisez un code \xE0 usage unique \xE0 6 chiffres provenant de votre application d'authentification",
3048
+ "two-step.lookup_secret.title": "Code de r\xE9cup\xE9ration de secours",
3049
+ "two-step.lookup_secret.description": "Utilisez l'un de vos codes de secours \xE0 8 chiffres pour vous authentifier",
2657
3050
  "settings.totp.info.linked": "Vous avez actuellement une application d'authentification connect\xE9e.",
2658
3051
  "settings.totp.info.not-linked": "Pour activer, scannez le QR code avec votre authentificateur et entrez le code.",
2659
3052
  "settings.totp.title": "Application d'authentification",
2660
3053
  "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.",
2661
- "settings.lookup_secret.description": "",
2662
- "settings.lookup_secret.title": "",
2663
- "settings.navigation.title": "",
2664
- "settings.oidc.description": "",
2665
- "settings.oidc.info": "",
2666
- "settings.oidc.title": "",
2667
- "settings.passkey.description": "",
2668
- "settings.passkey.info": "",
2669
- "settings.passkey.title": "",
2670
- "settings.password.description": "",
2671
- "settings.password.title": "",
2672
- "settings.profile.description": "",
2673
- "settings.profile.title": "",
2674
- "settings.title-lookup-secret": "",
2675
- "settings.title-navigation": "",
2676
- "settings.title-oidc": "",
2677
- "settings.title-passkey": "",
2678
- "settings.title-password": "",
2679
- "settings.title-profile": "",
2680
- "settings.title-totp": "",
2681
- "settings.title-webauthn": "",
2682
- "settings.webauthn.description": "",
2683
- "settings.webauthn.info": "",
2684
- "settings.webauthn.title": "",
2685
- "card.footer.select-another-method": "",
2686
- "account-linking.title": "",
2687
- "property.code": "",
2688
- "property.email": "",
2689
- "property.identifier": "",
2690
- "property.password": "",
2691
- "property.phone": "",
2692
- "property.username": ""
3054
+ "consent.title": "Autoriser {party}",
3055
+ "consent.subtitle": "Une application tierce souhaite acc\xE9der aux informations associ\xE9es \xE0 votre compte {identifier}.",
3056
+ "consent.scope.openid.title": "Identit\xE9",
3057
+ "consent.scope.openid.description": "Permet \xE0 l'application de v\xE9rifier votre identit\xE9. Cela est n\xE9cessaire pour l'authentification et une exp\xE9rience de connexion fiable.",
3058
+ "consent.scope.offline_access.title": "Acc\xE8s hors ligne",
3059
+ "consent.scope.offline_access.description": "Permet \xE0 cette application de vous maintenir connect\xE9 m\xEAme lorsque vous ne l'utilisez pas activement.",
3060
+ "consent.scope.profile.title": "Informations de profil",
3061
+ "consent.scope.profile.description": "Permet l'acc\xE8s aux d\xE9tails de base de votre profil, y compris votre nom d'utilisateur, pr\xE9nom et nom.",
3062
+ "consent.scope.email.title": "Adresse e-mail",
3063
+ "consent.scope.email.description": "R\xE9cup\xE8re votre adresse e-mail et son statut de v\xE9rification.",
3064
+ "consent.scope.address.title": "Adresse physique",
3065
+ "consent.scope.address.description": "Acc\xE8de \xE0 votre adresse postale.",
3066
+ "consent.scope.phone.title": "Num\xE9ro de t\xE9l\xE9phone",
3067
+ "consent.scope.phone.description": "R\xE9cup\xE8re votre num\xE9ro de t\xE9l\xE9phone et son statut de v\xE9rification.",
3068
+ "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.",
3069
+ "identities.messages.1010017": "Se connecter et lier",
3070
+ "identities.messages.1010018": "Confirmer avec {provider}",
3071
+ "identities.messages.1010019": "Demander un code pour continuer",
3072
+ "identities.messages.1010021": "Se connecter avec une cl\xE9 d'acc\xE8s",
3073
+ "identities.messages.1010022": "Se connecter avec un mot de passe",
3074
+ "identities.messages.1010023": "Envoyer le code \xE0 {address}",
3075
+ "identities.messages.1040007": "S'inscrire avec une cl\xE9 d'acc\xE8s",
3076
+ "identities.messages.1040008": "Retour",
3077
+ "identities.messages.1040009": "Veuillez choisir une identification pour vous authentifier.",
3078
+ "identities.messages.1050019": "Ajouter une cl\xE9 d'acc\xE8s",
3079
+ "identities.messages.1050020": "Supprimer la cl\xE9 d'acc\xE8s \xAB {display_name} \xBB",
3080
+ "identities.messages.1070014": "Se connecter et lier l'identification",
3081
+ "identities.messages.1070015": "Veuillez compl\xE9ter le d\xE9fi captcha pour continuer.",
3082
+ "identities.messages.4000037": "Ce compte n'existe pas ou n'a aucune m\xE9thode de connexion configur\xE9e.",
3083
+ "identities.messages.4000038": "La v\xE9rification Captcha a \xE9chou\xE9, veuillez r\xE9essayer.",
3084
+ "identities.messages.4010009": "Les identifications li\xE9es ne correspondent pas.",
3085
+ "identities.messages.4010010": "L'adresse que vous avez saisie ne correspond \xE0 aucune adresse connue dans le compte actuel.",
3086
+ "login.cancel-button": "Annuler",
3087
+ "login.cancel-label": "Ce n'est pas le bon compte\xA0?",
3088
+ "login.subtitle": "Se connecter avec {parts}",
3089
+ "login.subtitle-refresh": "Confirmez votre identit\xE9 avec {parts}",
3090
+ "recovery.subtitle": "Saisissez l'adresse e-mail associ\xE9e \xE0 votre compte pour recevoir un code d'acc\xE8s unique",
3091
+ "registration.subtitle": "S'inscrire avec {parts}",
3092
+ "settings.subtitle": "Mettre \xE0 jour les param\xE8tres de votre compte",
3093
+ "settings.title-lookup-secret": "G\xE9rer les codes de r\xE9cup\xE9ration de sauvegarde 2FA",
3094
+ "settings.title-navigation": "Param\xE8tres du compte",
3095
+ "settings.title-oidc": "Connexion via les r\xE9seaux sociaux",
3096
+ "settings.title-password": "Changer le mot de passe",
3097
+ "settings.title-profile": "Param\xE8tres du profil",
3098
+ "settings.title-totp": "G\xE9rer l'application d'authentification 2FA TOTP",
3099
+ "settings.title-webauthn": "G\xE9rer les jetons mat\xE9riels",
3100
+ "settings.title-passkey": "G\xE9rer les cl\xE9s d'acc\xE8s",
3101
+ "settings.navigation.title": "Param\xE8tres du compte",
3102
+ "settings.password.title": "Changer le mot de passe",
3103
+ "settings.password.description": "Modifier votre mot de passe",
3104
+ "settings.profile.title": "Param\xE8tres du profil",
3105
+ "settings.profile.description": "Mettre \xE0 jour les informations de votre profil",
3106
+ "settings.webauthn.title": "G\xE9rer les jetons mat\xE9riels",
3107
+ "settings.webauthn.description": "G\xE9rer les param\xE8tres de votre jeton mat\xE9riel",
3108
+ "verification.subtitle": "Saisissez l'adresse e-mail associ\xE9e \xE0 votre compte pour la v\xE9rifier",
3109
+ "input.placeholder": "Saisissez votre {placeholder}",
3110
+ "card.header.parts.oidc": "un fournisseur de r\xE9seaux sociaux",
3111
+ "card.header.parts.password.registration": "votre {identifierLabel} et un mot de passe",
3112
+ "card.header.parts.password.login": "votre {identifierLabel} et votre mot de passe",
3113
+ "card.header.parts.passkey": "une cl\xE9 d'acc\xE8s",
3114
+ "card.header.parts.webauthn": "une cl\xE9 de s\xE9curit\xE9",
3115
+ "card.header.parts.identifier-first": "votre {identifierLabel}",
3116
+ "card.header.parts.code": "un code qui vous a \xE9t\xE9 envoy\xE9",
3117
+ "card.header.parts.totp": "votre application d'authentification",
3118
+ "card.header.parts.lookup_secret": "un code de r\xE9cup\xE9ration de secours",
3119
+ "card.header.description.login": "Se connecter avec {identifierLabel}",
3120
+ "card.header.description.registration": "S'inscrire avec {identifierLabel}",
3121
+ "misc.or": "ou",
3122
+ "forms.label.forgot-password": "Mot de passe oubli\xE9?",
3123
+ "settings.lookup_secret.title": "Codes de r\xE9cup\xE9ration de sauvegarde (second facteur)",
3124
+ "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.",
3125
+ "settings.oidc.title": "Comptes connect\xE9s",
3126
+ "settings.oidc.description": "Connectez un fournisseur de connexion sociale \xE0 votre compte.",
3127
+ "settings.oidc.info": "Les comptes connect\xE9s de ces fournisseurs peuvent \xEAtre utilis\xE9s pour vous connecter \xE0 votre compte",
3128
+ "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",
3129
+ "settings.passkey.title": "G\xE9rer les cl\xE9s d'acc\xE8s",
3130
+ "settings.passkey.description": "G\xE9rer les param\xE8tres de vos cl\xE9s d'acc\xE8s",
3131
+ "settings.passkey.info": "G\xE9rer les param\xE8tres de vos cl\xE9s d'acc\xE8s",
3132
+ "card.footer.select-another-method": "S\xE9lectionner une autre m\xE9thode",
3133
+ "account-linking.title": "Lier le compte",
3134
+ "property.password": "mot de passe",
3135
+ "property.email": "e-mail",
3136
+ "property.phone": "t\xE9l\xE9phone",
3137
+ "property.username": "nom d'utilisateur",
3138
+ "property.identifier": "identifiant",
3139
+ "property.code": "code",
3140
+ "error.title.what-happened": "Que s'est-il pass\xE9?",
3141
+ "error.title.what-can-i-do": "Que puis-je faire?",
3142
+ "error.instructions": "Veuillez r\xE9essayer dans quelques minutes ou contacter l'op\xE9rateur du site Web.",
3143
+ "error.footer.text": "Lorsque vous signalez cette erreur, veuillez inclure les informations suivantes:",
3144
+ "error.footer.copy": "Copier",
3145
+ "error.action.go-back": "Retour",
3146
+ "identities.messages.1010020": ""
2693
3147
  };
2694
3148
 
2695
3149
  // src/locales/nl.json
@@ -2715,9 +3169,9 @@ var nl_default = {
2715
3169
  "identities.messages.1010005": "Verifi\xEBren",
2716
3170
  "identities.messages.1010006": "Verificatiecode",
2717
3171
  "identities.messages.1010007": "Back-up herstelcode",
2718
- "identities.messages.1010008": "Beveiligingssleutel gebruiken",
2719
- "identities.messages.1010009": "Authenticator gebruiken",
2720
- "identities.messages.1010010": "Back-up herstelcode gebruiken",
3172
+ "identities.messages.1010008": "Ga verder met hardware-sleutel",
3173
+ "identities.messages.1010009": "Doorgaan",
3174
+ "identities.messages.1010010": "Doorgaan",
2721
3175
  "identities.messages.1010011": "Doorgaan met beveiligingssleutel",
2722
3176
  "identities.messages.1010012": "Bereid uw WebAuthn-apparaat voor (bijv. beveiligingssleutel, biometrische scanner, ...) en druk op doorgaan.",
2723
3177
  "identities.messages.1010013": "Doorgaan",
@@ -2833,8 +3287,16 @@ var nl_default = {
2833
3287
  "login.registration-label": "Heb je nog geen account?",
2834
3288
  "login.subtitle-oauth2": "Om te authenticeren bij {clientName}",
2835
3289
  "login.title": "Inloggen",
2836
- "login.title-aal2": "Twee-Factor Authenticatie",
3290
+ "login.title-aal2": "Tweefactorauthenticatie",
3291
+ "login.subtitle-aal2": "Kies een manier om uw tweefactorauthenticatie te voltooien",
3292
+ "login.code.subtitle": "Er wordt een verificatiecode per e-mail verzonden",
3293
+ "login.webauthn.subtitle": "Bereid uw WebAuthN-apparaat voor",
3294
+ "login.totp.subtitle": "Voer de code in die door uw Authenticator-app is gegenereerd",
3295
+ "login.lookup_secret.subtitle": "Voer een van uw 8-cijferige back-up herstelcodes in",
2837
3296
  "login.title-refresh": "Bevestig dat jij het bent",
3297
+ "login.2fa.go-back": "Werkt er iets niet?",
3298
+ "login.2fa.go-back.link": "Ga terug",
3299
+ "login.2fa.method.go-back": "Kies een andere methode",
2838
3300
  "logout.accept-button": "Ja",
2839
3301
  "logout.reject-button": "Nee",
2840
3302
  "logout.title": "Wil je uitloggen?",
@@ -2866,8 +3328,12 @@ var nl_default = {
2866
3328
  "two-step.passkey.title": "Toegangscode (aanbevolen)",
2867
3329
  "two-step.password.description": "Voer uw wachtwoord in dat is gekoppeld aan uw account",
2868
3330
  "two-step.password.title": "Wachtwoord",
2869
- "two-step.webauthn.description": "Gebruik uw beveiligingssleutel om te verifi\xEBren",
2870
3331
  "two-step.webauthn.title": "Beveiligingssleutel",
3332
+ "two-step.webauthn.description": "Gebruik uw beveiligingssleutel om te verifi\xEBren",
3333
+ "two-step.totp.title": "Gebruik uw Authenticator-app (TOTP)",
3334
+ "two-step.totp.description": "Gebruik een 6-cijferige eenmalige code van uw authenticator-app",
3335
+ "two-step.lookup_secret.title": "Herstelcode",
3336
+ "two-step.lookup_secret.description": "Gebruik een van uw 8-cijferige back-upcodes om te authenticeren",
2871
3337
  "identities.messages.1010023": "",
2872
3338
  "identities.messages.1070014": "",
2873
3339
  "identities.messages.1070015": "",
@@ -2892,7 +3358,9 @@ var nl_default = {
2892
3358
  "input.placeholder": "",
2893
3359
  "card.header.description.login": "",
2894
3360
  "card.header.description.registration": "",
2895
- "card.header.parts.code": "",
3361
+ "card.header.parts.code": "een code die naar je is verzonden",
3362
+ "card.header.parts.totp": "je authenticator-app",
3363
+ "card.header.parts.lookup_secret": "een backup herstelcode",
2896
3364
  "card.header.parts.identifier-first": "",
2897
3365
  "card.header.parts.oidc": "",
2898
3366
  "card.header.parts.passkey": "",
@@ -2942,7 +3410,27 @@ var nl_default = {
2942
3410
  "property.identifier": "",
2943
3411
  "property.password": "",
2944
3412
  "property.phone": "",
2945
- "property.username": ""
3413
+ "property.username": "",
3414
+ "consent.title": "Autoriseren {party}",
3415
+ "consent.subtitle": "Een derde partij applicatie wil toegang tot informatie die aan uw account {identifier} is gekoppeld.",
3416
+ "consent.scope.openid.title": "Identiteit",
3417
+ "consent.scope.openid.description": "Stelt de applicatie in staat uw identiteit te verifi\xEBren. Dit is vereist voor authenticatie en een betrouwbare inlogervaring.",
3418
+ "consent.scope.offline_access.title": "Offline toegang",
3419
+ "consent.scope.offline_access.description": "Stelt deze applicatie in staat u ingelogd te houden, zelfs wanneer u deze niet actief gebruikt.",
3420
+ "consent.scope.profile.title": "Profielinformatie",
3421
+ "consent.scope.profile.description": "Geeft toegang tot uw basisprofielgegevens, inclusief uw gebruikersnaam, voornaam en achternaam.",
3422
+ "consent.scope.email.title": "E-mailadres",
3423
+ "consent.scope.email.description": "Haal uw e-mailadres en de verificatiestatus ervan op.",
3424
+ "consent.scope.address.title": "Fysiek adres",
3425
+ "consent.scope.address.description": "Toegang tot uw postadres.",
3426
+ "consent.scope.phone.title": "Telefoonnummer",
3427
+ "consent.scope.phone.description": "Haal uw telefoonnummer en de verificatiestatus ervan op.",
3428
+ "error.action.go-back": "",
3429
+ "error.footer.copy": "",
3430
+ "error.footer.text": "",
3431
+ "error.title.what-can-i-do": "",
3432
+ "error.title.what-happened": "",
3433
+ "error.instructions": ""
2946
3434
  };
2947
3435
 
2948
3436
  // src/locales/pl.json
@@ -2968,9 +3456,9 @@ var pl_default = {
2968
3456
  "identities.messages.1010005": "Zweryifkuj",
2969
3457
  "identities.messages.1010006": "Kod autentykacyjny",
2970
3458
  "identities.messages.1010007": "Zapasowe kody odzyskiwania",
2971
- "identities.messages.1010008": "U\u017Cyj klucza bezpiecze\u0144stwa",
2972
- "identities.messages.1010009": "U\u017Cyj Autentykatora",
2973
- "identities.messages.1010010": "U\u017Cyj zapasowych kod\xF3w odzyskiwania",
3459
+ "identities.messages.1010008": "Kontynuuj z kluczem sprz\u0119towym",
3460
+ "identities.messages.1010009": "Kontynuuj",
3461
+ "identities.messages.1010010": "Kontynuuj",
2974
3462
  "identities.messages.1010011": "Kontynuuj za pomoc\u0105 klucza bezpiecze\u0144stwa",
2975
3463
  "identities.messages.1010012": "Przygotuj swoje urz\u0105dzenie WebAuthn (np. klucz bezpiecze\u0144stwa, czytnik biometryczny, ...) a nast\u0119pnie kliknij kontynuuj.",
2976
3464
  "identities.messages.1010013": "Kontynuuj",
@@ -3086,8 +3574,16 @@ var pl_default = {
3086
3574
  "login.registration-label": "Nie posiadasz konta?",
3087
3575
  "login.subtitle-oauth2": "Do autentykacji {clientName}",
3088
3576
  "login.title": "Zaloguj si\u0119",
3089
- "login.title-aal2": "Autentykacja Dwu-Etapowa",
3577
+ "login.title-aal2": "Uwierzytelnianie dwusk\u0142adnikowe",
3578
+ "login.subtitle-aal2": "Wybierz spos\xF3b, aby zako\u0144czy\u0107 uwierzytelnianie dwusk\u0142adnikowe",
3579
+ "login.code.subtitle": "Kod weryfikacyjny zostanie wys\u0142any e-mailem",
3580
+ "login.webauthn.subtitle": "Prosz\u0119 przygotowa\u0107 urz\u0105dzenie WebAuthN",
3581
+ "login.totp.subtitle": "Prosz\u0119 wprowadzi\u0107 kod wygenerowany przez Twoj\u0105 aplikacj\u0119 uwierzytelniaj\u0105c\u0105",
3582
+ "login.lookup_secret.subtitle": "Prosz\u0119 wprowadzi\u0107 jeden z Twoich 8-cyfrowych kod\xF3w odzyskiwania zapasowego",
3090
3583
  "login.title-refresh": "Potwierd\u017A \u017Ce to Ty",
3584
+ "login.2fa.go-back": "Co\u015B nie dzia\u0142a?",
3585
+ "login.2fa.go-back.link": "Wr\xF3\u0107",
3586
+ "login.2fa.method.go-back": "Wybierz inn\u0105 metod\u0119",
3091
3587
  "logout.accept-button": "Tak",
3092
3588
  "logout.reject-button": "Nie",
3093
3589
  "logout.title": "Czy chcesz si\u0119 wylogowa\u0107?",
@@ -3119,8 +3615,12 @@ var pl_default = {
3119
3615
  "two-step.passkey.title": "Klucz dost\u0119pu (zalecany)",
3120
3616
  "two-step.password.description": "Wprowad\u017A has\u0142o powi\u0105zane z twoim kontem",
3121
3617
  "two-step.password.title": "Has\u0142o",
3122
- "two-step.webauthn.description": "U\u017Cyj swojego klucza bezpiecze\u0144stwa do uwierzytelnienia",
3123
3618
  "two-step.webauthn.title": "Klucz bezpiecze\u0144stwa",
3619
+ "two-step.webauthn.description": "U\u017Cyj swojego klucza bezpiecze\u0144stwa do uwierzytelnienia",
3620
+ "two-step.totp.title": "U\u017Cyj swojej aplikacji uwierzytelniaj\u0105cej (TOTP)",
3621
+ "two-step.totp.description": "U\u017Cyj 6-cyfrowego jednorazowego kodu z Twojej aplikacji uwierzytelniaj\u0105cej",
3622
+ "two-step.lookup_secret.title": "Kod odzyskiwania zapasowego",
3623
+ "two-step.lookup_secret.description": "U\u017Cyj jednego z Twoich 8-cyfrowych kod\xF3w zapasowych, aby si\u0119 uwierzytelni\u0107",
3124
3624
  "identities.messages.1010016": "",
3125
3625
  "identities.messages.1010017": "",
3126
3626
  "identities.messages.1010018": "",
@@ -3145,13 +3645,15 @@ var pl_default = {
3145
3645
  "input.placeholder": "",
3146
3646
  "card.header.description.login": "",
3147
3647
  "card.header.description.registration": "",
3148
- "card.header.parts.code": "",
3149
3648
  "card.header.parts.identifier-first": "",
3150
3649
  "card.header.parts.oidc": "",
3151
3650
  "card.header.parts.passkey": "",
3152
3651
  "card.header.parts.password.login": "",
3153
3652
  "card.header.parts.password.registration": "",
3154
3653
  "card.header.parts.webauthn": "",
3654
+ "card.header.parts.code": "kod wys\u0142any do Ciebie",
3655
+ "card.header.parts.totp": "Twoja aplikacja uwierzytelniaj\u0105ca",
3656
+ "card.header.parts.lookup_secret": "kod odzyskiwania kopii zapasowej",
3155
3657
  "forms.label.forgot-password": "",
3156
3658
  "login.subtitle": "",
3157
3659
  "login.subtitle-refresh": "",
@@ -3195,7 +3697,27 @@ var pl_default = {
3195
3697
  "property.password": "",
3196
3698
  "property.phone": "",
3197
3699
  "property.username": "",
3198
- "property.identifier": ""
3700
+ "property.identifier": "",
3701
+ "consent.title": "Autoryzuj {party}",
3702
+ "consent.subtitle": "Aplikacja trzeciej strony chce uzyska\u0107 dost\u0119p do informacji powi\u0105zanych z Twoim kontem {identifier}.",
3703
+ "consent.scope.openid.title": "To\u017Csamo\u015B\u0107",
3704
+ "consent.scope.openid.description": "Pozwala aplikacji zweryfikowa\u0107 Twoj\u0105 to\u017Csamo\u015B\u0107. Jest to wymagane do uwierzytelniania i zapewnienia zaufanej sesji logowania.",
3705
+ "consent.scope.offline_access.title": "Dost\u0119p offline",
3706
+ "consent.scope.offline_access.description": "Pozwala aplikacji utrzyma\u0107 Twoje logowanie, nawet gdy nie korzystasz z niej aktywnie.",
3707
+ "consent.scope.profile.title": "Informacje profilowe",
3708
+ "consent.scope.profile.description": "Pozwala na dost\u0119p do podstawowych danych profilowych, w tym nazwy u\u017Cytkownika, imienia i nazwiska.",
3709
+ "consent.scope.email.title": "Adres e-mail",
3710
+ "consent.scope.email.description": "Pobierz sw\xF3j adres e-mail oraz status jego weryfikacji.",
3711
+ "consent.scope.address.title": "Adres fizyczny",
3712
+ "consent.scope.address.description": "Dost\u0119p do Twojego adresu pocztowego.",
3713
+ "consent.scope.phone.title": "Numer telefonu",
3714
+ "consent.scope.phone.description": "Pobierz sw\xF3j numer telefonu oraz status jego weryfikacji.",
3715
+ "error.action.go-back": "",
3716
+ "error.footer.copy": "",
3717
+ "error.footer.text": "",
3718
+ "error.title.what-can-i-do": "",
3719
+ "error.title.what-happened": "",
3720
+ "error.instructions": ""
3199
3721
  };
3200
3722
 
3201
3723
  // src/locales/pt.json
@@ -3221,9 +3743,9 @@ var pt_default = {
3221
3743
  "identities.messages.1010005": "Verificar",
3222
3744
  "identities.messages.1010006": "C\xF3digo de Autentica\xE7\xE3o",
3223
3745
  "identities.messages.1010007": "C\xF3digo de Recupera\xE7\xE3o de Backup",
3224
- "identities.messages.1010008": "Usar chave de seguran\xE7a",
3225
- "identities.messages.1010009": "Usar o Autenticador",
3226
- "identities.messages.1010010": "Usar c\xF3digo de recupera\xE7\xE3o de backup",
3746
+ "identities.messages.1010008": "Continuar com chave de hardware",
3747
+ "identities.messages.1010009": "Continuar",
3748
+ "identities.messages.1010010": "Continuar",
3227
3749
  "identities.messages.1010011": "Continuar com a chave de seguran\xE7a",
3228
3750
  "identities.messages.1010012": "Prepare o seu dispositivo WebAuthn (por exemplo, chave de seguran\xE7a, scanner biom\xE9trico, ...) e pressione continuar.",
3229
3751
  "identities.messages.1010013": "Continuar",
@@ -3339,8 +3861,16 @@ var pt_default = {
3339
3861
  "login.registration-label": "N\xE3o tem uma conta?",
3340
3862
  "login.subtitle-oauth2": "Para autenticar {clientName}",
3341
3863
  "login.title": "Entrar",
3342
- "login.title-aal2": "Autentica\xE7\xE3o de Dois Fatores",
3864
+ "login.title-aal2": "Autentica\xE7\xE3o de dois fatores",
3865
+ "login.subtitle-aal2": "Escolha uma forma de completar sua autentica\xE7\xE3o de segundo fator",
3866
+ "login.code.subtitle": "Um c\xF3digo de verifica\xE7\xE3o ser\xE1 enviado por e-mail",
3867
+ "login.webauthn.subtitle": "Por favor, prepare seu dispositivo WebAuthN",
3868
+ "login.totp.subtitle": "Digite o c\xF3digo gerado pelo seu aplicativo autenticador",
3869
+ "login.lookup_secret.subtitle": "Digite um dos seus c\xF3digos de recupera\xE7\xE3o de 8 d\xEDgitos",
3343
3870
  "login.title-refresh": "Confirme que \xE9 voc\xEA",
3871
+ "login.2fa.go-back": "Algo n\xE3o est\xE1 funcionando?",
3872
+ "login.2fa.go-back.link": "Voltar",
3873
+ "login.2fa.method.go-back": "Escolher outro m\xE9todo",
3344
3874
  "logout.accept-button": "Sim",
3345
3875
  "logout.reject-button": "N\xE3o",
3346
3876
  "logout.title": "Deseja sair?",
@@ -3372,8 +3902,12 @@ var pt_default = {
3372
3902
  "two-step.passkey.title": "Chave de acesso (recomendado)",
3373
3903
  "two-step.password.description": "Insira a sua senha associada \xE0 sua conta",
3374
3904
  "two-step.password.title": "Senha",
3375
- "two-step.webauthn.description": "Use sua chave de seguran\xE7a para autenticar",
3376
3905
  "two-step.webauthn.title": "Chave de Seguran\xE7a",
3906
+ "two-step.webauthn.description": "Use sua chave de seguran\xE7a para autenticar",
3907
+ "two-step.totp.title": "Use seu aplicativo autenticador (TOTP)",
3908
+ "two-step.totp.description": "Use um c\xF3digo \xFAnico de 6 d\xEDgitos do seu aplicativo autenticador",
3909
+ "two-step.lookup_secret.title": "C\xF3digo de recupera\xE7\xE3o de backup",
3910
+ "two-step.lookup_secret.description": "Use um dos seus c\xF3digos de backup de 8 d\xEDgitos para autenticar",
3377
3911
  "identities.messages.1010016": "",
3378
3912
  "identities.messages.1010017": "",
3379
3913
  "identities.messages.1010018": "",
@@ -3398,7 +3932,9 @@ var pt_default = {
3398
3932
  "input.placeholder": "",
3399
3933
  "card.header.description.login": "",
3400
3934
  "card.header.description.registration": "",
3401
- "card.header.parts.code": "",
3935
+ "card.header.parts.code": "um c\xF3digo enviado para voc\xEA",
3936
+ "card.header.parts.totp": "seu aplicativo autenticador",
3937
+ "card.header.parts.lookup_secret": "um c\xF3digo de recupera\xE7\xE3o de backup",
3402
3938
  "card.header.parts.identifier-first": "",
3403
3939
  "card.header.parts.oidc": "",
3404
3940
  "card.header.parts.passkey": "",
@@ -3448,7 +3984,27 @@ var pt_default = {
3448
3984
  "property.identifier": "",
3449
3985
  "property.password": "",
3450
3986
  "property.phone": "",
3451
- "property.username": ""
3987
+ "property.username": "",
3988
+ "consent.title": "Autorizar {party}",
3989
+ "consent.subtitle": "Um aplicativo de terceiros deseja acessar as informa\xE7\xF5es associadas \xE0 sua conta {identifier}.",
3990
+ "consent.scope.openid.title": "Identidade",
3991
+ "consent.scope.openid.description": "Permite que a aplica\xE7\xE3o verifique sua identidade. Isso \xE9 necess\xE1rio para a autentica\xE7\xE3o e uma experi\xEAncia de login confi\xE1vel.",
3992
+ "consent.scope.offline_access.title": "Acesso Offline",
3993
+ "consent.scope.offline_access.description": "Permite que este aplicativo mantenha voc\xEA conectado mesmo quando n\xE3o estiver usando-o ativamente.",
3994
+ "consent.scope.profile.title": "Informa\xE7\xF5es do Perfil",
3995
+ "consent.scope.profile.description": "Permite o acesso aos detalhes b\xE1sicos do seu perfil, incluindo seu nome de usu\xE1rio, primeiro nome e sobrenome.",
3996
+ "consent.scope.email.title": "Endere\xE7o de E-mail",
3997
+ "consent.scope.email.description": "Recupere seu endere\xE7o de e-mail e seu status de verifica\xE7\xE3o.",
3998
+ "consent.scope.address.title": "Endere\xE7o F\xEDsico",
3999
+ "consent.scope.address.description": "Acesse seu endere\xE7o postal.",
4000
+ "consent.scope.phone.title": "N\xFAmero de Telefone",
4001
+ "consent.scope.phone.description": "Recupere seu n\xFAmero de telefone e seu status de verifica\xE7\xE3o.",
4002
+ "error.action.go-back": "",
4003
+ "error.footer.copy": "",
4004
+ "error.footer.text": "",
4005
+ "error.title.what-can-i-do": "",
4006
+ "error.title.what-happened": "",
4007
+ "error.instructions": ""
3452
4008
  };
3453
4009
 
3454
4010
  // src/locales/sv.json
@@ -3474,9 +4030,9 @@ var sv_default = {
3474
4030
  "identities.messages.1010005": "Verifiera",
3475
4031
  "identities.messages.1010006": "Autentiseringskod",
3476
4032
  "identities.messages.1010007": "\xC5terst\xE4llningskod f\xF6r backup",
3477
- "identities.messages.1010008": "Anv\xE4nd s\xE4kerhetsnyckel",
3478
- "identities.messages.1010009": "Anv\xE4nd autentiserings-app",
3479
- "identities.messages.1010010": "Anv\xE4nd reserv\xE5terst\xE4llningskod",
4033
+ "identities.messages.1010008": "Forts\xE4tt med s\xE4kerhetsnyckel",
4034
+ "identities.messages.1010009": "Forts\xE4tt",
4035
+ "identities.messages.1010010": "Forts\xE4tt",
3480
4036
  "identities.messages.1010011": "Forts\xE4tt med s\xE4kerhetsnyckel",
3481
4037
  "identities.messages.1010012": "F\xF6rbered din WebAuthn-enhet (t.ex. s\xE4kerhetsnyckel, biometriska skanner, ...) och tryck p\xE5 forts\xE4tt.",
3482
4038
  "identities.messages.1010013": "Forts\xE4tt",
@@ -3611,7 +4167,15 @@ var sv_default = {
3611
4167
  "login.subtitle-oauth2": "Att autentisera {clientName}",
3612
4168
  "login.title": "Logga in",
3613
4169
  "login.title-aal2": "Tv\xE5faktorsautentisering",
4170
+ "login.subtitle-aal2": "V\xE4lj ett s\xE4tt att slutf\xF6ra din tv\xE5faktorsautentisering",
4171
+ "login.code.subtitle": "En verifieringskod kommer att skickas via e-post",
4172
+ "login.webauthn.subtitle": "F\xF6rbered din WebAuthN-enhet",
4173
+ "login.totp.subtitle": "Ange koden som genererats av din autentiseringsapp",
4174
+ "login.lookup_secret.subtitle": "Ange en av dina 8-siffriga \xE5terst\xE4llningskoder",
3614
4175
  "login.title-refresh": "Bekr\xE4fta att det \xE4r du",
4176
+ "login.2fa.go-back": "N\xE5got fungerar inte?",
4177
+ "login.2fa.go-back.link": "G\xE5 tillbaka",
4178
+ "login.2fa.method.go-back": "V\xE4lj en annan metod",
3615
4179
  "logout.accept-button": "Ja",
3616
4180
  "logout.reject-button": "Nej",
3617
4181
  "logout.title": "Vill du logga ut?",
@@ -3643,15 +4207,21 @@ var sv_default = {
3643
4207
  "two-step.passkey.title": "Passerkod (rekommenderad)",
3644
4208
  "two-step.password.description": "Ange ditt l\xF6senord kopplat till ditt konto",
3645
4209
  "two-step.password.title": "L\xF6senord",
3646
- "two-step.webauthn.description": "Anv\xE4nd din s\xE4kerhetsnyckel f\xF6r att autentisera",
3647
4210
  "two-step.webauthn.title": "S\xE4kerhetsnyckel",
4211
+ "two-step.webauthn.description": "Anv\xE4nd din s\xE4kerhetsnyckel f\xF6r att autentisera",
4212
+ "two-step.totp.title": "Anv\xE4nd din autentiseringsapp (TOTP)",
4213
+ "two-step.totp.description": "Anv\xE4nd en 6-siffrig eng\xE5ngskod fr\xE5n din autentiseringsapp",
4214
+ "two-step.lookup_secret.title": "Reserv\xE5terst\xE4llningskod",
4215
+ "two-step.lookup_secret.description": "Anv\xE4nd en av dina 8-siffriga reservkoder f\xF6r att autentisera",
3648
4216
  "identities.messages.4000037": "Detta konto finns inte eller har ingen inloggningsmetod konfigurerad.",
3649
4217
  "identities.messages.4000038": "Captcha-verifiering misslyckades, f\xF6rs\xF6k igen.",
3650
4218
  "identities.messages.1010020": "",
3651
4219
  "input.placeholder": "Ange din {placeholder}",
3652
4220
  "card.header.description.login": "Logga in med {identifierLabel}",
3653
4221
  "card.header.description.registration": "Registrera dig med {identifierLabel}",
3654
- "card.header.parts.code": "en kod skickad till din e-post",
4222
+ "card.header.parts.code": "en kod skickad till dig",
4223
+ "card.header.parts.totp": "din autentiseringsapp",
4224
+ "card.header.parts.lookup_secret": "en s\xE4kerhetskopieringskod",
3655
4225
  "card.header.parts.identifier-first": "din {identifierLabel}",
3656
4226
  "card.header.parts.oidc": "en social leverant\xF6r",
3657
4227
  "card.header.parts.passkey": "en Passkey",
@@ -3701,7 +4271,27 @@ var sv_default = {
3701
4271
  "property.phone": "telefon",
3702
4272
  "property.username": "anv\xE4ndarnamn",
3703
4273
  "property.identifier": "identifier",
3704
- "property.code": "kod"
4274
+ "property.code": "kod",
4275
+ "consent.title": "Auktorisera {party}",
4276
+ "consent.subtitle": "En tredjepartsapplikation vill f\xE5 tillg\xE5ng till information kopplad till ditt konto {identifier}.",
4277
+ "consent.scope.openid.title": "Identitet",
4278
+ "consent.scope.openid.description": "G\xF6r det m\xF6jligt f\xF6r applikationen att verifiera din identitet. Detta kr\xE4vs f\xF6r autentisering och en p\xE5litlig inloggningsupplevelse.",
4279
+ "consent.scope.offline_access.title": "Offline-\xE5tkomst",
4280
+ "consent.scope.offline_access.description": "G\xF6r det m\xF6jligt f\xF6r denna applikation att h\xE5lla dig inloggad \xE4ven n\xE4r du inte aktivt anv\xE4nder den.",
4281
+ "consent.scope.profile.title": "Profilinformation",
4282
+ "consent.scope.profile.description": "Ger tillg\xE5ng till dina grundl\xE4ggande profiluppgifter, inklusive ditt anv\xE4ndarnamn, f\xF6rnamn och efternamn.",
4283
+ "consent.scope.email.title": "E-postadress",
4284
+ "consent.scope.email.description": "H\xE4mta din e-postadress och dess verifieringsstatus.",
4285
+ "consent.scope.address.title": "Fysisk adress",
4286
+ "consent.scope.address.description": "F\xE5 \xE5tkomst till din postadress.",
4287
+ "consent.scope.phone.title": "Telefonnummer",
4288
+ "consent.scope.phone.description": "H\xE4mta ditt telefonnummer och dess verifieringsstatus.",
4289
+ "error.action.go-back": "",
4290
+ "error.footer.copy": "",
4291
+ "error.footer.text": "",
4292
+ "error.title.what-can-i-do": "",
4293
+ "error.title.what-happened": "",
4294
+ "error.instructions": ""
3705
4295
  };
3706
4296
 
3707
4297
  // src/locales/index.ts
@@ -3722,6 +4312,7 @@ exports.OryCardContent = OryCardContent;
3722
4312
  exports.OryCardFooter = OryCardFooter;
3723
4313
  exports.OryCardHeader = OryCardHeader;
3724
4314
  exports.OryCardValidationMessages = OryCardValidationMessages;
4315
+ exports.OryConsentCard = OryConsentCard;
3725
4316
  exports.OryForm = OryForm;
3726
4317
  exports.OryFormGroupDivider = OryFormGroupDivider;
3727
4318
  exports.OryFormGroups = OryFormGroups;