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

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.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import { UiNodeGroupEnum, isUiNodeInputAttributes, FlowType, Configuration, FrontendApi, handleContinueWith, handleFlowError, settingsUrl, isResponseError, loginUrl, instanceOfContinueWithRecoveryUi, recoveryUrl, verificationUrl, registrationUrl, isUiNodeAnchorAttributes, isUiNodeImageAttributes, isUiNodeScriptAttributes, isUiNodeTextAttributes, UiNodeInputAttributesTypeEnum } from '@ory/client-fetch';
2
- import { createContext, useContext, useRef, useEffect, useState, useReducer, useMemo } from 'react';
1
+ import { UiNodeGroupEnum, isUiNodeInputAttributes, isUiNodeAnchorAttributes, isUiNodeImageAttributes, isUiNodeScriptAttributes, FlowType, UiNodeInputAttributesTypeEnum, isUiNodeTextAttributes, handleContinueWith, handleFlowError, settingsUrl, isResponseError, loginUrl, recoveryUrl, verificationUrl, registrationUrl, Configuration, FrontendApi, instanceOfContinueWithRecoveryUi } from '@ory/client-fetch';
2
+ import { createContext, useContext, useState, useMemo, useReducer, useRef, useEffect } from 'react';
3
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
4
  import { useIntl, IntlProvider as IntlProvider$1 } from 'react-intl';
5
- import { useForm, FormProvider, useFormContext } from 'react-hook-form';
5
+ import { useFormContext, useForm, FormProvider } from 'react-hook-form';
6
6
 
7
7
  // src/context/component.tsx
8
8
  var ComponentContext = createContext({
@@ -34,10 +34,14 @@ function useGroupSorter() {
34
34
  }
35
35
  var defaultNodeOrder = [
36
36
  "oidc",
37
+ "saml",
37
38
  "identifier_first",
38
39
  "default",
39
40
  "profile",
40
41
  "password",
42
+ // CAPTCHA is below password because otherwise the password input field
43
+ // would be above the captcha. Somehow, we sort the password sign up button somewhere else to be always at the bottom.
44
+ "captcha",
41
45
  "passkey",
42
46
  "code",
43
47
  "webauthn"
@@ -46,6 +50,11 @@ function defaultNodeSorter(a, b) {
46
50
  var _a, _b;
47
51
  const aGroupWeight = (_a = defaultNodeOrder.indexOf(a.group)) != null ? _a : 999;
48
52
  const bGroupWeight = (_b = defaultNodeOrder.indexOf(b.group)) != null ? _b : 999;
53
+ if (b.group === "captcha" && isUiNodeInputAttributes(a.attributes) && a.attributes.type === "submit") {
54
+ return aGroupWeight - (bGroupWeight - 2);
55
+ } else if (a.group === "captcha" && isUiNodeInputAttributes(b.attributes) && b.attributes.type === "submit") {
56
+ return aGroupWeight - 2 - bGroupWeight;
57
+ }
49
58
  return aGroupWeight - bGroupWeight;
50
59
  }
51
60
  var defaultGroupOrder = [
@@ -83,22 +92,25 @@ function OryComponentProvider({
83
92
  }
84
93
  );
85
94
  }
86
- function isChoosingMethod(uiNodes) {
87
- return uiNodes.some(
95
+ function isChoosingMethod(flow) {
96
+ return flow.flow.ui.nodes.some(
88
97
  (node) => "name" in node.attributes && node.attributes.name === "screen" && "value" in node.attributes && node.attributes.value === "previous"
89
- ) || uiNodes.some(
98
+ ) || flow.flow.ui.nodes.some(
90
99
  (node) => node.group === UiNodeGroupEnum.IdentifierFirst && "name" in node.attributes && node.attributes.name === "identifier" && node.attributes.type === "hidden"
91
- );
100
+ ) || flow.flowType === FlowType.Login && flow.flow.requested_aal === "aal2";
92
101
  }
93
- function filterOidcOut(nodes) {
94
- return nodes.filter((node) => node.group !== UiNodeGroupEnum.Oidc);
102
+ function removeSsoNodes(nodes) {
103
+ return nodes.filter(
104
+ (node) => !(node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml)
105
+ );
95
106
  }
96
107
  function getFinalNodes(uniqueGroups, selectedGroup) {
97
- var _a, _b, _c;
108
+ var _a, _b, _c, _d;
98
109
  const selectedNodes = selectedGroup ? (_a = uniqueGroups[selectedGroup]) != null ? _a : [] : [];
99
110
  return [
100
111
  ...(_b = uniqueGroups == null ? void 0 : uniqueGroups.identifier_first) != null ? _b : [],
101
- ...(_c = uniqueGroups == null ? void 0 : uniqueGroups.default) != null ? _c : []
112
+ ...(_c = uniqueGroups == null ? void 0 : uniqueGroups.default) != null ? _c : [],
113
+ ...(_d = uniqueGroups == null ? void 0 : uniqueGroups.captcha) != null ? _d : []
102
114
  ].flat().filter(
103
115
  (node) => "type" in node.attributes && node.attributes.type === "hidden"
104
116
  ).concat(selectedNodes);
@@ -170,25 +182,37 @@ function nodesToAuthMethodGroups(nodes, excludeAuthMethods = []) {
170
182
  UiNodeGroupEnum.Default,
171
183
  UiNodeGroupEnum.IdentifierFirst,
172
184
  UiNodeGroupEnum.Profile,
185
+ UiNodeGroupEnum.Captcha,
173
186
  ...excludeAuthMethods
174
187
  ].includes(group)
175
188
  );
176
189
  }
177
- function useNodesGroups(nodes) {
190
+ function useNodesGroups(nodes, { omit } = {}) {
178
191
  const groupSorter = useGroupSorter();
179
192
  const groups = useMemo(() => {
180
- var _a;
193
+ var _a, _b;
181
194
  const groups2 = {};
195
+ const groupRetained = {};
182
196
  for (const node of nodes) {
183
- if (node.type === "script") {
184
- continue;
185
- }
186
197
  const groupNodes = (_a = groups2[node.group]) != null ? _a : [];
187
198
  groupNodes.push(node);
188
199
  groups2[node.group] = groupNodes;
200
+ if ((omit == null ? void 0 : omit.includes("script")) && isUiNodeScriptAttributes(node.attributes)) {
201
+ continue;
202
+ }
203
+ if ((omit == null ? void 0 : omit.includes("input_hidden")) && isUiNodeInputAttributes(node.attributes) && node.attributes.type === "hidden") {
204
+ continue;
205
+ }
206
+ groupRetained[node.group] = ((_b = groupRetained[node.group]) != null ? _b : 0) + 1;
207
+ }
208
+ const finalGroups = {};
209
+ for (const [group, count] of Object.entries(groupRetained)) {
210
+ if (count > 0) {
211
+ finalGroups[group] = groups2[group];
212
+ }
189
213
  }
190
- return groups2;
191
- }, [nodes]);
214
+ return finalGroups;
215
+ }, [nodes, omit]);
192
216
  const entries = useMemo(
193
217
  () => Object.entries(groups).sort(([a], [b]) => groupSorter(a, b)),
194
218
  [groups, groupSorter]
@@ -198,6 +222,9 @@ function useNodesGroups(nodes) {
198
222
  entries
199
223
  };
200
224
  }
225
+ var findNode = (nodes, opt) => nodes.find((n) => {
226
+ 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);
227
+ });
201
228
 
202
229
  // src/context/form-state.ts
203
230
  function findMethodWithMessage(nodes) {
@@ -219,9 +246,11 @@ function parseStateFromFlow(flow) {
219
246
  return { current: "method_active", method: "code" };
220
247
  } else if (methodWithMessage) {
221
248
  return { current: "method_active", method: methodWithMessage.group };
222
- } else if (flow.flow.active && !["default", "identifier_first", "oidc"].includes(flow.flow.active)) {
249
+ } else if (flow.flow.active && !["default", "identifier_first", "oidc", "saml"].includes(
250
+ flow.flow.active
251
+ )) {
223
252
  return { current: "method_active", method: flow.flow.active };
224
- } else if (isChoosingMethod(flow.flow.ui.nodes)) {
253
+ } else if (isChoosingMethod(flow)) {
225
254
  const authMethods = nodesToAuthMethodGroups(flow.flow.ui.nodes);
226
255
  if (authMethods.length === 1 && authMethods[0] !== "code") {
227
256
  return { current: "method_active", method: authMethods[0] };
@@ -243,23 +272,32 @@ function parseStateFromFlow(flow) {
243
272
  break;
244
273
  case FlowType.Settings:
245
274
  return { current: "settings" };
275
+ case FlowType.OAuth2Consent:
276
+ return { current: "method_active", method: "oauth2_consent" };
246
277
  }
247
278
  console.warn(
248
279
  `[Ory/Elements React] Encountered an unknown form state on ${flow.flowType} flow with ID ${flow.flow.id}`
249
280
  );
250
281
  throw new Error("Unknown form state");
251
282
  }
252
- function formStateReducer(state, action) {
253
- switch (action.type) {
254
- case "action_flow_update":
255
- return parseStateFromFlow(action.flow);
256
- case "action_select_method":
257
- return { current: "method_active", method: action.method };
258
- }
259
- return state;
260
- }
261
283
  function useFormStateReducer(flow) {
262
- return useReducer(formStateReducer, parseStateFromFlow(flow));
284
+ const action = parseStateFromFlow(flow);
285
+ const [selectedMethod, setSelectedMethod] = useState();
286
+ const formStateReducer = (state, action2) => {
287
+ switch (action2.type) {
288
+ case "action_flow_update": {
289
+ if (selectedMethod)
290
+ return { current: "method_active", method: selectedMethod };
291
+ return parseStateFromFlow(action2.flow);
292
+ }
293
+ case "action_select_method": {
294
+ setSelectedMethod(action2.method);
295
+ return { current: "method_active", method: action2.method };
296
+ }
297
+ }
298
+ return state;
299
+ };
300
+ return useReducer(formStateReducer, action);
263
301
  }
264
302
  function useOryFlow() {
265
303
  const ctx = useContext(OryFlowContext);
@@ -349,6 +387,22 @@ function computeDefaultValues(nodes) {
349
387
  if (attrs.name === "method" || attrs.type === "submit" || typeof attrs.value === "undefined") {
350
388
  return acc;
351
389
  }
390
+ if (attrs.name.startsWith("grant_scope")) {
391
+ const scope = attrs.value;
392
+ if (Array.isArray(acc.grant_scope)) {
393
+ return {
394
+ ...acc,
395
+ // We want to have all scopes accepted by default, so that the user has to actively uncheck them.
396
+ grant_scope: [...acc.grant_scope, scope]
397
+ };
398
+ } else if (!acc.grant_scope) {
399
+ return {
400
+ ...acc,
401
+ grant_scope: [scope]
402
+ };
403
+ }
404
+ return acc;
405
+ }
352
406
  return unrollTrait(
353
407
  {
354
408
  name: attrs.name,
@@ -780,7 +834,7 @@ function useOryFormSubmit(onAfterSubmit) {
780
834
  if ("lookup_secret_confirm" in submitData || "lookup_secret_reveal" in submitData || "lookup_secret_regenerate" in submitData || "lookup_secret_disable" in submitData) {
781
835
  submitData.method = "lookup_secret";
782
836
  }
783
- if (submitData.method === "oidc" && submitData.link && supportsSelectAccountPrompt.includes(submitData.link)) {
837
+ if (submitData.method === UiNodeGroupEnum.Oidc && submitData.link && supportsSelectAccountPrompt.includes(submitData.link)) {
784
838
  submitData.upstream_parameters = {
785
839
  prompt: "select_account"
786
840
  };
@@ -798,6 +852,19 @@ function useOryFormSubmit(onAfterSubmit) {
798
852
  });
799
853
  break;
800
854
  }
855
+ case FlowType.OAuth2Consent: {
856
+ const response = await fetch(flowContainer.flow.ui.action, {
857
+ method: "POST",
858
+ body: JSON.stringify(data),
859
+ headers: {
860
+ "Content-Type": "application/json"
861
+ }
862
+ });
863
+ const oauth2Success = await response.json();
864
+ if (oauth2Success.redirect_to && typeof oauth2Success.redirect_to === "string") {
865
+ onRedirect(oauth2Success.redirect_to);
866
+ }
867
+ }
801
868
  }
802
869
  if ("password" in data) {
803
870
  methods.setValue("password", "");
@@ -812,15 +879,22 @@ function useOryFormSubmit(onAfterSubmit) {
812
879
  };
813
880
  return onSubmit;
814
881
  }
815
- function OryForm({ children, onAfterSubmit }) {
816
- var _a;
882
+ function OryForm({
883
+ children,
884
+ onAfterSubmit,
885
+ "data-testid": dataTestId
886
+ }) {
817
887
  const { Form } = useComponents();
818
888
  const flowContainer = useOryFlow();
819
889
  const methods = useFormContext();
890
+ const { Message } = useComponents();
820
891
  const intl = useIntl();
821
892
  const onSubmit = useOryFormSubmit(onAfterSubmit);
822
893
  const hasMethods = flowContainer.flow.ui.nodes.some((node) => {
823
894
  if (isUiNodeInputAttributes(node.attributes)) {
895
+ if (node.attributes.type === "hidden") {
896
+ return false;
897
+ }
824
898
  return node.attributes.name !== "csrf_token";
825
899
  } else if (isUiNodeAnchorAttributes(node.attributes)) {
826
900
  return true;
@@ -831,15 +905,24 @@ function OryForm({ children, onAfterSubmit }) {
831
905
  }
832
906
  return false;
833
907
  });
834
- if (!hasMethods && ((_a = flowContainer.flow.ui.messages) != null ? _a : []).length === 0) {
835
- return intl.formatMessage({
836
- id: `identities.messages.${5000002}`,
837
- defaultMessage: "No authentication methods are available for this request. Please contact the site or app owner."
838
- });
908
+ if (!hasMethods) {
909
+ const m = {
910
+ id: 5000002,
911
+ text: intl.formatMessage({
912
+ id: `identities.messages.${5000002}`,
913
+ defaultMessage: "No authentication methods are available for this request. Please contact the site or app owner."
914
+ }),
915
+ type: "error"
916
+ };
917
+ return /* @__PURE__ */ jsx("div", { "data-testid": dataTestId, children: /* @__PURE__ */ jsx(Message.Root, { children: /* @__PURE__ */ jsx(Message.Content, { message: m }, m.id) }) });
918
+ }
919
+ if (flowContainer.flowType === FlowType.Login && flowContainer.formState.current === "method_active" && flowContainer.formState.method === "code") {
920
+ methods.setValue("method", "code");
839
921
  }
840
922
  return /* @__PURE__ */ jsx(
841
923
  Form.Root,
842
924
  {
925
+ "data-testid": dataTestId,
843
926
  action: flowContainer.flow.ui.action,
844
927
  method: flowContainer.flow.ui.method,
845
928
  onSubmit: (e) => void methods.handleSubmit(onSubmit)(e),
@@ -847,7 +930,15 @@ function OryForm({ children, onAfterSubmit }) {
847
930
  }
848
931
  );
849
932
  }
850
- var messageIdsToHide = [1040009, 1060003, 1080003, 1010014, 1040005, 1010016];
933
+ var messageIdsToHide = [
934
+ 1040009,
935
+ 1060003,
936
+ 1080003,
937
+ 1010004,
938
+ 1010014,
939
+ 1040005,
940
+ 1010016
941
+ ];
851
942
  function OryCardValidationMessages({ ...props }) {
852
943
  var _a;
853
944
  const { flow } = useOryFlow();
@@ -866,7 +957,7 @@ var NodeInput = ({
866
957
  }) => {
867
958
  var _a;
868
959
  const { Node: Node2 } = useComponents();
869
- const { setValue } = useFormContext();
960
+ const { setValue, watch } = useFormContext();
870
961
  const {
871
962
  onloadTrigger,
872
963
  onclickTrigger,
@@ -879,7 +970,7 @@ var NodeInput = ({
879
970
  const isResendNode = ((_a = node.meta.label) == null ? void 0 : _a.id) === 1070008;
880
971
  const isScreenSelectionNode = "name" in node.attributes && node.attributes.name === "screen";
881
972
  const setFormValue = () => {
882
- if (attrs.value && !(isResendNode || isScreenSelectionNode)) {
973
+ if (attrs.value && !(isResendNode || isScreenSelectionNode || node.group === UiNodeGroupEnum.Oauth2Consent)) {
883
974
  setValue(attrs.name, attrs.value);
884
975
  }
885
976
  };
@@ -902,8 +993,21 @@ var NodeInput = ({
902
993
  triggerToWindowCall(onclickTrigger);
903
994
  }
904
995
  };
905
- const isSocial = (attrs.name === "provider" || attrs.name === "link") && node.group === "oidc";
996
+ const isSocial = (attrs.name === "provider" || attrs.name === "link") && (node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml);
906
997
  const isPinCodeInput = attrs.name === "code" && node.group === "code" || attrs.name === "totp_code" && node.group === "totp";
998
+ const handleScopeChange = (checked) => {
999
+ const scopes = watch("grant_scope");
1000
+ if (Array.isArray(scopes)) {
1001
+ if (checked) {
1002
+ setValue("grant_scope", Array.from(/* @__PURE__ */ new Set([...scopes, attrs.value])));
1003
+ } else {
1004
+ setValue(
1005
+ "grant_scope",
1006
+ scopes.filter((scope) => scope !== attrs.value)
1007
+ );
1008
+ }
1009
+ }
1010
+ };
907
1011
  switch (attributes.type) {
908
1012
  case UiNodeInputAttributesTypeEnum.Submit:
909
1013
  case UiNodeInputAttributesTypeEnum.Button:
@@ -913,6 +1017,9 @@ var NodeInput = ({
913
1017
  if (isResendNode || isScreenSelectionNode) {
914
1018
  return null;
915
1019
  }
1020
+ if (node.group === "oauth2_consent") {
1021
+ return null;
1022
+ }
916
1023
  return /* @__PURE__ */ jsx(
917
1024
  Node2.Label,
918
1025
  {
@@ -924,6 +1031,21 @@ var NodeInput = ({
924
1031
  case UiNodeInputAttributesTypeEnum.DatetimeLocal:
925
1032
  throw new Error("Not implemented");
926
1033
  case UiNodeInputAttributesTypeEnum.Checkbox:
1034
+ if (node.group === "oauth2_consent" && node.attributes.node_type === "input") {
1035
+ switch (node.attributes.name) {
1036
+ case "grant_scope":
1037
+ return /* @__PURE__ */ jsx(
1038
+ Node2.ConsentScopeCheckbox,
1039
+ {
1040
+ attributes: attrs,
1041
+ node,
1042
+ onCheckedChange: handleScopeChange
1043
+ }
1044
+ );
1045
+ default:
1046
+ return null;
1047
+ }
1048
+ }
927
1049
  return /* @__PURE__ */ jsx(
928
1050
  Node2.Label,
929
1051
  {
@@ -950,6 +1072,9 @@ var NodeInput = ({
950
1072
  };
951
1073
  var Node = ({ node, onClick }) => {
952
1074
  const { Node: Node2 } = useComponents();
1075
+ if (node.group === UiNodeGroupEnum.Captcha) {
1076
+ return /* @__PURE__ */ jsx(Node2.Captcha, { node });
1077
+ }
953
1078
  if (isUiNodeImageAttributes(node.attributes)) {
954
1079
  return /* @__PURE__ */ jsx(Node2.Image, { node, attributes: node.attributes });
955
1080
  } else if (isUiNodeTextAttributes(node.attributes)) {
@@ -982,7 +1107,9 @@ function OryFormOidcButtons() {
982
1107
  flow: { ui }
983
1108
  } = useOryFlow();
984
1109
  const { setValue } = useFormContext();
985
- const filteredNodes = ui.nodes.filter((node) => node.group === "oidc");
1110
+ const filteredNodes = ui.nodes.filter(
1111
+ (node) => node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml
1112
+ );
986
1113
  const { Form, Node: Node2 } = useComponents();
987
1114
  if (filteredNodes.length === 0) {
988
1115
  return null;
@@ -997,7 +1124,7 @@ function OryFormOidcButtons() {
997
1124
  "provider",
998
1125
  node.attributes.value
999
1126
  );
1000
- setValue("method", "oidc");
1127
+ setValue("method", node.group);
1001
1128
  }
1002
1129
  },
1003
1130
  k
@@ -1007,39 +1134,76 @@ function OryFormSocialButtonsForm() {
1007
1134
  const {
1008
1135
  flow: { ui }
1009
1136
  } = useOryFlow();
1010
- const filteredNodes = ui.nodes.filter((node) => node.group === "oidc");
1137
+ const filteredNodes = ui.nodes.filter(
1138
+ (node) => node.group === UiNodeGroupEnum.Saml || node.group === UiNodeGroupEnum.Oidc
1139
+ );
1011
1140
  if (filteredNodes.length === 0) {
1012
1141
  return null;
1013
1142
  }
1014
- return /* @__PURE__ */ jsx(OryFormProvider, { children: /* @__PURE__ */ jsx(OryForm, { children: /* @__PURE__ */ jsx(OryFormOidcButtons, {}) }) });
1143
+ return /* @__PURE__ */ jsx(OryFormProvider, { children: /* @__PURE__ */ jsx(OryForm, { "data-testid": `ory/form/methods/oidc-saml`, children: /* @__PURE__ */ jsx(OryFormOidcButtons, {}) }) });
1015
1144
  }
1016
1145
  function isUINodeGroupEnum(method) {
1017
1146
  return Object.values(UiNodeGroupEnum).includes(method);
1018
1147
  }
1019
1148
  function OryTwoStepCard() {
1020
- const {
1021
- flow: { ui },
1022
- flowType,
1023
- formState,
1024
- dispatchFormState
1025
- } = useOryFlow();
1026
- const { Form, Card } = useComponents();
1149
+ var _a, _b, _c, _d;
1150
+ const { Form, Card, Message } = useComponents();
1151
+ const { flow, flowType, formState, dispatchFormState } = useOryFlow();
1152
+ const { ui } = flow;
1153
+ const intl = useIntl();
1027
1154
  const nodeSorter = useNodeSorter();
1028
1155
  const sortNodes = (a, b) => nodeSorter(a, b, { flowType });
1029
- const uniqueGroups = useNodesGroups(ui.nodes);
1030
- const options = Object.values(UiNodeGroupEnum).filter((group) => {
1031
- var _a;
1032
- return (_a = uniqueGroups.groups[group]) == null ? void 0 : _a.length;
1033
- }).filter(
1034
- (group) => ![
1156
+ const groupsToShow = useNodesGroups(ui.nodes, {
1157
+ // We only want to render groups that have visible elements.
1158
+ omit: ["script", "input_hidden"]
1159
+ });
1160
+ const authMethodBlocks = Object.fromEntries(
1161
+ Object.values(UiNodeGroupEnum).filter((group) => {
1162
+ var _a2;
1163
+ return (_a2 = groupsToShow.groups[group]) == null ? void 0 : _a2.length;
1164
+ }).filter(
1165
+ (group) => ![
1166
+ UiNodeGroupEnum.Oidc,
1167
+ UiNodeGroupEnum.Saml,
1168
+ UiNodeGroupEnum.Default,
1169
+ UiNodeGroupEnum.IdentifierFirst,
1170
+ UiNodeGroupEnum.Profile,
1171
+ UiNodeGroupEnum.Captcha
1172
+ ].includes(group)
1173
+ ).map((g) => [g, {}])
1174
+ );
1175
+ const authMethodAdditionalNodes = ui.nodes.filter(
1176
+ ({ group }) => [
1035
1177
  UiNodeGroupEnum.Oidc,
1178
+ UiNodeGroupEnum.Saml,
1036
1179
  UiNodeGroupEnum.Default,
1037
1180
  UiNodeGroupEnum.IdentifierFirst,
1038
- UiNodeGroupEnum.Profile
1181
+ UiNodeGroupEnum.Profile,
1182
+ UiNodeGroupEnum.Captcha
1039
1183
  ].includes(group)
1040
1184
  );
1041
- const nonOidcNodes = filterOidcOut(ui.nodes);
1042
- const finalNodes = formState.current === "method_active" ? getFinalNodes(uniqueGroups.groups, formState.method) : [];
1185
+ if (UiNodeGroupEnum.Code in authMethodBlocks) {
1186
+ let identifier = (_b = (_a = findNode(ui.nodes, {
1187
+ group: "identifier_first",
1188
+ node_type: "input",
1189
+ name: "identifier"
1190
+ })) == null ? void 0 : _a.attributes) == null ? void 0 : _b.value;
1191
+ identifier || (identifier = (_d = (_c = findNode(ui.nodes, {
1192
+ group: "code",
1193
+ node_type: "input",
1194
+ name: "address"
1195
+ })) == null ? void 0 : _c.attributes) == null ? void 0 : _d.value);
1196
+ if (identifier) {
1197
+ authMethodBlocks[UiNodeGroupEnum.Code] = {
1198
+ title: {
1199
+ id: "identities.messages.1010023",
1200
+ values: { address: identifier }
1201
+ }
1202
+ };
1203
+ }
1204
+ }
1205
+ const nonSsoNodes = removeSsoNodes(ui.nodes);
1206
+ const finalNodes = formState.current === "method_active" ? getFinalNodes(groupsToShow.groups, formState.method) : [];
1043
1207
  const handleAfterFormSubmit = (method) => {
1044
1208
  if (typeof method !== "string" || !isUINodeGroupEnum(method)) {
1045
1209
  return;
@@ -1051,59 +1215,130 @@ function OryTwoStepCard() {
1051
1215
  });
1052
1216
  }
1053
1217
  };
1054
- const hasOidc = ui.nodes.some((node) => node.group === UiNodeGroupEnum.Oidc);
1055
- const showOidc = !(formState.current === "method_active" && formState.method !== "oidc");
1056
- return /* @__PURE__ */ jsxs(OryCard, { children: [
1057
- /* @__PURE__ */ jsx(OryCardHeader, {}),
1058
- /* @__PURE__ */ jsxs(OryCardContent, { children: [
1059
- /* @__PURE__ */ jsx(OryCardValidationMessages, {}),
1060
- showOidc && /* @__PURE__ */ jsx(OryFormSocialButtonsForm, {}),
1061
- /* @__PURE__ */ jsxs(OryForm, { onAfterSubmit: handleAfterFormSubmit, children: [
1062
- /* @__PURE__ */ jsxs(Form.Group, { children: [
1063
- formState.current === "provide_identifier" && /* @__PURE__ */ jsxs(Fragment, { children: [
1064
- hasOidc && /* @__PURE__ */ jsx(Card.Divider, {}),
1065
- nonOidcNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1066
- ] }),
1067
- formState.current === "select_method" && /* @__PURE__ */ jsxs(Fragment, { children: [
1068
- /* @__PURE__ */ jsx(Card.Divider, {}),
1069
- /* @__PURE__ */ jsx(
1070
- AuthMethodList,
1071
- {
1072
- options,
1073
- setSelectedGroup: (group) => dispatchFormState({
1074
- type: "action_select_method",
1075
- method: group
1076
- })
1077
- }
1078
- )
1079
- ] }),
1080
- formState.current === "method_active" && /* @__PURE__ */ jsxs(Fragment, { children: [
1081
- ui.nodes.filter((n) => n.type === "script").map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k)),
1082
- finalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1083
- ] })
1218
+ const hasSso = ui.nodes.some(
1219
+ (node) => node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml
1220
+ );
1221
+ const showSso = !(formState.current === "method_active" && !(formState.method === UiNodeGroupEnum.Oidc || formState.method === UiNodeGroupEnum.Saml));
1222
+ const showSsoDivider = hasSso && nonSsoNodes.some((n) => {
1223
+ if (isUiNodeInputAttributes(n.attributes)) {
1224
+ return n.attributes.type !== UiNodeInputAttributesTypeEnum.Hidden;
1225
+ } else if (isUiNodeScriptAttributes(n.attributes)) {
1226
+ return false;
1227
+ }
1228
+ return true;
1229
+ });
1230
+ const noMethods = {
1231
+ id: 5000002,
1232
+ text: intl.formatMessage({
1233
+ id: `identities.messages.${5000002}`,
1234
+ defaultMessage: "No authentication methods are available for this request. Please contact the site or app owner."
1235
+ }),
1236
+ type: "error"
1237
+ };
1238
+ switch (formState.current) {
1239
+ case "provide_identifier":
1240
+ return /* @__PURE__ */ jsxs(OryCard, { children: [
1241
+ /* @__PURE__ */ jsx(OryCardHeader, {}),
1242
+ /* @__PURE__ */ jsxs(OryCardContent, { children: [
1243
+ /* @__PURE__ */ jsx(OryCardValidationMessages, {}),
1244
+ showSso && /* @__PURE__ */ jsx(OryFormSocialButtonsForm, {}),
1245
+ /* @__PURE__ */ jsx(
1246
+ OryForm,
1247
+ {
1248
+ "data-testid": `ory/form/methods/local`,
1249
+ onAfterSubmit: handleAfterFormSubmit,
1250
+ children: /* @__PURE__ */ jsxs(Form.Group, { children: [
1251
+ showSsoDivider && /* @__PURE__ */ jsx(Card.Divider, {}),
1252
+ nonSsoNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1253
+ ] })
1254
+ }
1255
+ )
1084
1256
  ] }),
1085
1257
  /* @__PURE__ */ jsx(OryCardFooter, {})
1086
- ] })
1087
- ] })
1258
+ ] });
1259
+ case "select_method":
1260
+ return /* @__PURE__ */ jsxs(OryCard, { children: [
1261
+ /* @__PURE__ */ jsx(OryCardHeader, {}),
1262
+ /* @__PURE__ */ jsxs(OryCardContent, { children: [
1263
+ /* @__PURE__ */ jsx(OryCardValidationMessages, {}),
1264
+ showSso && /* @__PURE__ */ jsx(OryFormSocialButtonsForm, {}),
1265
+ Object.entries(authMethodBlocks).length > 0 ? /* @__PURE__ */ jsx(
1266
+ OryForm,
1267
+ {
1268
+ "data-testid": `ory/form/methods/local`,
1269
+ onAfterSubmit: handleAfterFormSubmit,
1270
+ children: /* @__PURE__ */ jsxs(Form.Group, { children: [
1271
+ /* @__PURE__ */ jsx(Card.Divider, {}),
1272
+ /* @__PURE__ */ jsx(
1273
+ AuthMethodList,
1274
+ {
1275
+ options: authMethodBlocks,
1276
+ setSelectedGroup: (group) => dispatchFormState({
1277
+ type: "action_select_method",
1278
+ method: group
1279
+ })
1280
+ }
1281
+ ),
1282
+ authMethodAdditionalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1283
+ ] })
1284
+ }
1285
+ ) : /* @__PURE__ */ jsx("div", { "data-testid": `ory/form/methods/local`, children: /* @__PURE__ */ jsx(Message.Root, { children: /* @__PURE__ */ jsx(Message.Content, { message: noMethods }, noMethods.id) }) })
1286
+ ] }),
1287
+ /* @__PURE__ */ jsx(OryCardFooter, {})
1288
+ ] });
1289
+ case "method_active":
1290
+ return /* @__PURE__ */ jsxs(OryCard, { children: [
1291
+ /* @__PURE__ */ jsx(OryCardHeader, {}),
1292
+ /* @__PURE__ */ jsxs(OryCardContent, { children: [
1293
+ /* @__PURE__ */ jsx(OryCardValidationMessages, {}),
1294
+ showSso && /* @__PURE__ */ jsx(OryFormSocialButtonsForm, {}),
1295
+ /* @__PURE__ */ jsx(
1296
+ OryForm,
1297
+ {
1298
+ "data-testid": `ory/form/methods/local`,
1299
+ onAfterSubmit: handleAfterFormSubmit,
1300
+ children: /* @__PURE__ */ jsxs(Form.Group, { children: [
1301
+ ui.nodes.filter(
1302
+ (n) => isUiNodeScriptAttributes(n.attributes) || n.group === UiNodeGroupEnum.Captcha || n.group === UiNodeGroupEnum.Default || n.group === UiNodeGroupEnum.Profile
1303
+ ).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k)),
1304
+ finalNodes.sort(sortNodes).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1305
+ ] })
1306
+ }
1307
+ )
1308
+ ] }),
1309
+ /* @__PURE__ */ jsx(OryCardFooter, {})
1310
+ ] });
1311
+ }
1312
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1313
+ "unknown form state: ",
1314
+ formState.current
1088
1315
  ] });
1089
1316
  }
1090
1317
  function AuthMethodList({ options, setSelectedGroup }) {
1091
1318
  const { Card } = useComponents();
1092
- const { setValue } = useFormContext();
1093
- const handleClick = (group) => {
1319
+ const { setValue, getValues } = useFormContext();
1320
+ if (Object.entries(options).length === 0) {
1321
+ return null;
1322
+ }
1323
+ const handleClick = (group, options2) => {
1324
+ var _a, _b, _c, _d;
1094
1325
  if (isGroupImmediateSubmit(group)) {
1326
+ if (group === "code" && !getValues("identifier") && ((_b = (_a = options2 == null ? void 0 : options2.title) == null ? void 0 : _a.values) == null ? void 0 : _b.address)) {
1327
+ setValue("identifier", (_d = (_c = options2 == null ? void 0 : options2.title) == null ? void 0 : _c.values) == null ? void 0 : _d.address);
1328
+ }
1095
1329
  setValue("method", group);
1096
1330
  } else {
1097
1331
  setSelectedGroup(group);
1098
1332
  }
1099
1333
  };
1100
- return /* @__PURE__ */ jsx(Card.AuthMethodListContainer, { children: options.map((option) => /* @__PURE__ */ jsx(
1334
+ return /* @__PURE__ */ jsx(Card.AuthMethodListContainer, { children: Object.entries(options).map(([group, options2]) => /* @__PURE__ */ jsx(
1101
1335
  Card.AuthMethodListItem,
1102
1336
  {
1103
- group: option,
1104
- onClick: () => handleClick(option)
1337
+ group,
1338
+ title: options2.title,
1339
+ onClick: () => handleClick(group, options2)
1105
1340
  },
1106
- option
1341
+ group
1107
1342
  )) });
1108
1343
  }
1109
1344
  function OryFormGroups({ groups }) {
@@ -1144,14 +1379,29 @@ function OryFormSectionInner({
1144
1379
  }
1145
1380
  );
1146
1381
  }
1382
+ function OryConsentCard() {
1383
+ const { Form, Card } = useComponents();
1384
+ const flow = useOryFlow();
1385
+ return /* @__PURE__ */ jsxs(OryCard, { children: [
1386
+ /* @__PURE__ */ jsx(OryCardHeader, {}),
1387
+ /* @__PURE__ */ jsx(OryCardContent, { children: /* @__PURE__ */ jsxs(OryForm, { children: [
1388
+ /* @__PURE__ */ jsx(Card.Divider, {}),
1389
+ /* @__PURE__ */ jsx(Form.Group, { children: flow.flow.ui.nodes.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k)) }),
1390
+ /* @__PURE__ */ jsx(Card.Divider, {}),
1391
+ /* @__PURE__ */ jsx(OryCardFooter, {})
1392
+ ] }) })
1393
+ ] });
1394
+ }
1147
1395
  function OryFormGroupDivider() {
1148
1396
  const { Card } = useComponents();
1149
1397
  const {
1150
1398
  flow: { ui }
1151
1399
  } = useOryFlow();
1152
- const filteredNodes = ui.nodes.filter((node) => node.group === "oidc");
1400
+ const filteredNodes = ui.nodes.filter(
1401
+ (node) => node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml
1402
+ );
1153
1403
  const otherNodes = ui.nodes.filter(
1154
- (node) => node.group !== "oidc" && node.group !== "default"
1404
+ (node) => !(node.group === UiNodeGroupEnum.Oidc || node.group === UiNodeGroupEnum.Saml) && node.group !== "default"
1155
1405
  );
1156
1406
  if (filteredNodes.length > 0 && otherNodes.length > 0) {
1157
1407
  return /* @__PURE__ */ jsx(Card.Divider, {});
@@ -1177,7 +1427,7 @@ function OrySettingsOidc({ nodes }) {
1177
1427
  onClick: () => {
1178
1428
  if (node.attributes.node_type === "input") {
1179
1429
  setValue("link", node.attributes.value);
1180
- setValue("method", "oidc");
1430
+ setValue("method", node.group);
1181
1431
  }
1182
1432
  }
1183
1433
  }));
@@ -1186,7 +1436,7 @@ function OrySettingsOidc({ nodes }) {
1186
1436
  onClick: () => {
1187
1437
  if (node.attributes.node_type === "input") {
1188
1438
  setValue("unlink", node.attributes.value);
1189
- setValue("method", "oidc");
1439
+ setValue("method", node.group);
1190
1440
  }
1191
1441
  }
1192
1442
  }));
@@ -1495,16 +1745,19 @@ function SettingsSectionContent({ group, nodes }) {
1495
1745
  const { Card } = useComponents();
1496
1746
  const intl = useIntl();
1497
1747
  const { flow } = useOryFlow();
1498
- const uniqueGroups = useNodesGroups(flow.ui.nodes);
1748
+ const groupedNodes = useNodesGroups(flow.ui.nodes, {
1749
+ // Script nodes are already handled by the parent component.
1750
+ omit: ["script"]
1751
+ });
1499
1752
  if (group === UiNodeGroupEnum.Totp) {
1500
1753
  return /* @__PURE__ */ jsxs(
1501
1754
  OryFormSection,
1502
1755
  {
1503
- nodes: uniqueGroups.groups.totp,
1756
+ nodes: groupedNodes.groups.totp,
1504
1757
  "data-testid": "ory/screen/settings/group/totp",
1505
1758
  children: [
1506
- /* @__PURE__ */ jsx(OrySettingsTotp, { nodes: (_a = uniqueGroups.groups.totp) != null ? _a : [] }),
1507
- (_b = uniqueGroups.groups.default) == null ? void 0 : _b.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1759
+ /* @__PURE__ */ jsx(OrySettingsTotp, { nodes: (_a = groupedNodes.groups.totp) != null ? _a : [] }),
1760
+ (_b = groupedNodes.groups.default) == null ? void 0 : _b.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1508
1761
  ]
1509
1762
  }
1510
1763
  );
@@ -1513,16 +1766,16 @@ function SettingsSectionContent({ group, nodes }) {
1513
1766
  return /* @__PURE__ */ jsxs(
1514
1767
  OryFormSection,
1515
1768
  {
1516
- nodes: uniqueGroups.groups.lookup_secret,
1769
+ nodes: groupedNodes.groups.lookup_secret,
1517
1770
  "data-testid": "ory/screen/settings/group/lookup_secret",
1518
1771
  children: [
1519
1772
  /* @__PURE__ */ jsx(
1520
1773
  OrySettingsRecoveryCodes,
1521
1774
  {
1522
- nodes: (_c = uniqueGroups.groups.lookup_secret) != null ? _c : []
1775
+ nodes: (_c = groupedNodes.groups.lookup_secret) != null ? _c : []
1523
1776
  }
1524
1777
  ),
1525
- (_d = uniqueGroups.groups.default) == null ? void 0 : _d.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1778
+ (_d = groupedNodes.groups.default) == null ? void 0 : _d.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1526
1779
  ]
1527
1780
  }
1528
1781
  );
@@ -1531,11 +1784,11 @@ function SettingsSectionContent({ group, nodes }) {
1531
1784
  return /* @__PURE__ */ jsxs(
1532
1785
  OryFormSection,
1533
1786
  {
1534
- nodes: uniqueGroups.groups.oidc,
1787
+ nodes: groupedNodes.groups.oidc,
1535
1788
  "data-testid": "ory/screen/settings/group/oidc",
1536
1789
  children: [
1537
- /* @__PURE__ */ jsx(OrySettingsOidc, { nodes: (_e = uniqueGroups.groups.oidc) != null ? _e : [] }),
1538
- (_f = uniqueGroups.groups.default) == null ? void 0 : _f.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1790
+ /* @__PURE__ */ jsx(OrySettingsOidc, { nodes: (_e = groupedNodes.groups.oidc) != null ? _e : [] }),
1791
+ (_f = groupedNodes.groups.default) == null ? void 0 : _f.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1539
1792
  ]
1540
1793
  }
1541
1794
  );
@@ -1544,11 +1797,11 @@ function SettingsSectionContent({ group, nodes }) {
1544
1797
  return /* @__PURE__ */ jsxs(
1545
1798
  OryFormSection,
1546
1799
  {
1547
- nodes: uniqueGroups.groups.webauthn,
1800
+ nodes: groupedNodes.groups.webauthn,
1548
1801
  "data-testid": "ory/screen/settings/group/webauthn",
1549
1802
  children: [
1550
- /* @__PURE__ */ jsx(OrySettingsWebauthn, { nodes: (_g = uniqueGroups.groups.webauthn) != null ? _g : [] }),
1551
- (_h = uniqueGroups.groups.default) == null ? void 0 : _h.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1803
+ /* @__PURE__ */ jsx(OrySettingsWebauthn, { nodes: (_g = groupedNodes.groups.webauthn) != null ? _g : [] }),
1804
+ (_h = groupedNodes.groups.default) == null ? void 0 : _h.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1552
1805
  ]
1553
1806
  }
1554
1807
  );
@@ -1557,11 +1810,11 @@ function SettingsSectionContent({ group, nodes }) {
1557
1810
  return /* @__PURE__ */ jsxs(
1558
1811
  OryFormSection,
1559
1812
  {
1560
- nodes: uniqueGroups.groups.passkey,
1813
+ nodes: groupedNodes.groups.passkey,
1561
1814
  "data-testid": "ory/screen/settings/group/passkey",
1562
1815
  children: [
1563
- /* @__PURE__ */ jsx(OrySettingsPasskey, { nodes: (_i = uniqueGroups.groups.passkey) != null ? _i : [] }),
1564
- (_j = uniqueGroups.groups.default) == null ? void 0 : _j.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1816
+ /* @__PURE__ */ jsx(OrySettingsPasskey, { nodes: (_i = groupedNodes.groups.passkey) != null ? _i : [] }),
1817
+ (_j = groupedNodes.groups.default) == null ? void 0 : _j.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
1565
1818
  ]
1566
1819
  }
1567
1820
  );
@@ -1582,7 +1835,7 @@ function SettingsSectionContent({ group, nodes }) {
1582
1835
  id: `settings.${group}.description`
1583
1836
  }),
1584
1837
  children: [
1585
- (_k = uniqueGroups.groups.default) == null ? void 0 : _k.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k)),
1838
+ (_k = groupedNodes.groups.default) == null ? void 0 : _k.map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k)),
1586
1839
  nodes.filter(
1587
1840
  (node) => "type" in node.attributes && node.attributes.type !== "submit"
1588
1841
  ).map((node, k) => /* @__PURE__ */ jsx(Node, { node }, k))
@@ -1596,16 +1849,16 @@ function SettingsSectionContent({ group, nodes }) {
1596
1849
  }
1597
1850
  );
1598
1851
  }
1599
- var getScriptNode = (nodes) => nodes.find(
1600
- (node) => "id" in node.attributes && node.attributes.id === "webauthn_script"
1852
+ var onlyScriptNodes = (nodes) => nodes.filter(
1853
+ (node) => isUiNodeScriptAttributes(node.attributes) && node.attributes.id === "webauthn_script"
1601
1854
  );
1602
1855
  function OrySettingsCard() {
1603
1856
  const { flow } = useOryFlow();
1604
- const uniqueGroups = useNodesGroups(flow.ui.nodes);
1605
- const scriptNode = getScriptNode(flow.ui.nodes);
1857
+ const uniqueGroups = useNodesGroups(flow.ui.nodes, { omit: ["script"] });
1858
+ const scriptNodes = onlyScriptNodes(flow.ui.nodes);
1606
1859
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1607
1860
  /* @__PURE__ */ jsx(OryCardValidationMessages, {}),
1608
- scriptNode && /* @__PURE__ */ jsx(Node, { node: scriptNode }),
1861
+ scriptNodes.map((n) => /* @__PURE__ */ jsx(Node, { node: n })),
1609
1862
  uniqueGroups.entries.map(([group, nodes]) => {
1610
1863
  if (group === UiNodeGroupEnum.Default) {
1611
1864
  return null;
@@ -1701,9 +1954,9 @@ var en_default = {
1701
1954
  "identities.messages.1010005": "Verify",
1702
1955
  "identities.messages.1010006": "Authentication code",
1703
1956
  "identities.messages.1010007": "Backup recovery code",
1704
- "identities.messages.1010008": "Sign in with hardware key",
1705
- "identities.messages.1010009": "Use Authenticator",
1706
- "identities.messages.1010010": "Use backup recovery code",
1957
+ "identities.messages.1010008": "Continue with hardware key",
1958
+ "identities.messages.1010009": "Continue",
1959
+ "identities.messages.1010010": "Continue",
1707
1960
  "identities.messages.1010011": "Sign in with hardware key",
1708
1961
  "identities.messages.1010012": "Prepare your WebAuthn device (e.g. security key, biometrics scanner, ...) and press continue.",
1709
1962
  "identities.messages.1010013": "Continue",
@@ -1840,9 +2093,17 @@ var en_default = {
1840
2093
  "login.subtitle-oauth2": "To authenticate {clientName}",
1841
2094
  "login.title": "Sign in",
1842
2095
  "login.subtitle": "Sign in with {parts}",
1843
- "login.title-aal2": "Two-Factor Authentication",
2096
+ "login.title-aal2": "Second factor authentication",
2097
+ "login.subtitle-aal2": "Choose a way to complete your second factor authentication",
2098
+ "login.code.subtitle": "A verification code will be sent by email",
2099
+ "login.webauthn.subtitle": "Please prepare your WebAuthN device",
2100
+ "login.totp.subtitle": "Please enter the code generated by your Authenticator App",
2101
+ "login.lookup_secret.subtitle": "Please enter one of your 8-digit backup recovery codes",
1844
2102
  "login.title-refresh": "Reauthenticate",
1845
2103
  "login.subtitle-refresh": "Confirm your identity with {parts}",
2104
+ "login.2fa.go-back": "Something isn't working?",
2105
+ "login.2fa.go-back.link": "Go back",
2106
+ "login.2fa.method.go-back": "Choose another method",
1846
2107
  "logout.accept-button": "Yes",
1847
2108
  "logout.reject-button": "No",
1848
2109
  "logout.title": "Do you wish to log out?",
@@ -1891,10 +2152,14 @@ var en_default = {
1891
2152
  "two-step.password.description": "Enter your password associated with your account",
1892
2153
  "two-step.code.title": "Email code",
1893
2154
  "two-step.code.description": "A verification code will be sent to your email",
1894
- "two-step.webauthn.title": "Security Key",
2155
+ "two-step.webauthn.title": "Security key",
1895
2156
  "two-step.webauthn.description": "Use your security key to authenticate",
1896
2157
  "two-step.passkey.title": "Passkey (recommended)",
1897
2158
  "two-step.passkey.description": "Use your device's for fingerprint or face recognition",
2159
+ "two-step.totp.title": "Use your Authenticator App (TOTP)",
2160
+ "two-step.totp.description": "Use a 6-digit one-time code from your authenticator app",
2161
+ "two-step.lookup_secret.title": "Backup recovery code",
2162
+ "two-step.lookup_secret.description": "Use up one of your 8-digit backup codes to authenticate",
1898
2163
  "identities.messages.1010020": "",
1899
2164
  "input.placeholder": "Enter your {placeholder}",
1900
2165
  "card.header.parts.oidc": "a social provider",
@@ -1928,7 +2193,27 @@ var en_default = {
1928
2193
  "property.phone": "phone",
1929
2194
  "property.username": "username",
1930
2195
  "property.identifier": "identifier",
1931
- "property.code": "code"
2196
+ "property.code": "code",
2197
+ "consent.title": "Authorize {party}",
2198
+ "consent.subtitle": "A third party application wants to access information associated with your account {identifier}.",
2199
+ "consent.scope.openid.title": "Identity",
2200
+ "consent.scope.openid.description": "Allows the application to verify your identity. This is required for authentication and a trusted login experience.",
2201
+ "consent.scope.offline_access.title": "Offline Access",
2202
+ "consent.scope.offline_access.description": "Allows this application to keep you signed in even when you're not actively using it.",
2203
+ "consent.scope.profile.title": "Profile Information",
2204
+ "consent.scope.profile.description": "Allows access to your basic profile details, including your username, first name, and last name.",
2205
+ "consent.scope.email.title": "Email Address",
2206
+ "consent.scope.email.description": "Retrieve your email address and its verification status.",
2207
+ "consent.scope.address.title": "Physical Address",
2208
+ "consent.scope.address.description": "Access your postal address.",
2209
+ "consent.scope.phone.title": "Phone Number",
2210
+ "consent.scope.phone.description": "Retrieve your phone number and its verification status.",
2211
+ "error.title.what-happened": "What happened?",
2212
+ "error.title.what-can-i-do": "What can I do?",
2213
+ "error.instructions": "Please try again in a few minutes or contact the website operator.",
2214
+ "error.footer.text": "When reporting this error, please include the following information:",
2215
+ "error.footer.copy": "Copy",
2216
+ "error.action.go-back": "Go back"
1932
2217
  };
1933
2218
 
1934
2219
  // src/locales/de.json
@@ -1954,9 +2239,9 @@ var de_default = {
1954
2239
  "identities.messages.1010005": "Verifizieren",
1955
2240
  "identities.messages.1010006": "Authentifizierungscode",
1956
2241
  "identities.messages.1010007": "Backup-Wiederherstellungscode",
1957
- "identities.messages.1010008": "Sicherheitsschl\xFCssel verwenden",
1958
- "identities.messages.1010009": "Authentifizierungs-App verwenden",
1959
- "identities.messages.1010010": "Backup-Wiederherstellungscode verwenden",
2242
+ "identities.messages.1010008": "Mit Sicherheitsschl\xFCssel fortfahren",
2243
+ "identities.messages.1010009": "Weiter",
2244
+ "identities.messages.1010010": "Weiter",
1960
2245
  "identities.messages.1010011": "Mit Sicherheitsschl\xFCssel fortfahren",
1961
2246
  "identities.messages.1010012": "Bereiten Sie Ihr WebAuthn-Ger\xE4t vor (z. B. Sicherheitsschl\xFCssel, biometrischer Scanner, ...) und dr\xFCcken Sie auf Weiter.",
1962
2247
  "identities.messages.1010013": "Weiter",
@@ -2072,8 +2357,16 @@ var de_default = {
2072
2357
  "login.registration-label": "Sie haben noch kein Konto?",
2073
2358
  "login.subtitle-oauth2": "Zur Authentifizierung bei {clientName}",
2074
2359
  "login.title": "Anmelden",
2075
- "login.title-aal2": "Zwei-Faktor-Authentifizierung",
2360
+ "login.title-aal2": "Zweitfaktor-Authentifizierung",
2361
+ "login.subtitle-aal2": "W\xE4hlen Sie eine Methode zur Best\xE4tigung Ihrer Zwei-Faktor-Authentifizierung",
2362
+ "login.code.subtitle": "Ein Best\xE4tigungscode wird per E-Mail gesendet",
2363
+ "login.webauthn.subtitle": "Bitte bereiten Sie Ihr WebAuthN-Ger\xE4t vor",
2364
+ "login.totp.subtitle": "Bitte geben Sie den Code aus Ihrer Authenticator-App ein",
2365
+ "login.lookup_secret.subtitle": "Bitte geben Sie einen Ihrer 8-stelligen Backup-Wiederherstellungscodes ein",
2076
2366
  "login.title-refresh": "Best\xE4tigen Sie, dass Sie es sind",
2367
+ "login.2fa.go-back": "Funktioniert etwas nicht?",
2368
+ "login.2fa.go-back.link": "Zur\xFCck",
2369
+ "login.2fa.method.go-back": "Eine andere Methode w\xE4hlen",
2077
2370
  "logout.accept-button": "Ja",
2078
2371
  "logout.reject-button": "Nein",
2079
2372
  "logout.title": "M\xF6chten Sie sich abmelden?",
@@ -2091,11 +2384,15 @@ var de_default = {
2091
2384
  "two-step.code.description": "Ein Best\xE4tigungscode wird an Ihre E-Mail gesendet.",
2092
2385
  "two-step.code.title": "E-Mail-Code",
2093
2386
  "two-step.passkey.description": "Verwenden Sie die Fingerabdruck- oder Gesichtserkennung Ihres Ger\xE4ts",
2094
- "two-step.passkey.title": "Passwort (empfohlen)",
2387
+ "two-step.passkey.title": "Passkey (empfohlen)",
2095
2388
  "two-step.password.description": "Geben Sie Ihr Passwort ein, das mit Ihrem Konto verkn\xFCpft ist",
2096
2389
  "two-step.password.title": "Passwort",
2097
- "two-step.webauthn.description": "Verwenden Sie Ihren Sicherheitsschl\xFCssel zur Authentifizierung",
2098
2390
  "two-step.webauthn.title": "Sicherheitsschl\xFCssel",
2391
+ "two-step.webauthn.description": "Verwenden Sie Ihren Sicherheitsschl\xFCssel zur Authentifizierung",
2392
+ "two-step.totp.title": "Verwenden Sie Ihre Authenticator-App (TOTP)",
2393
+ "two-step.totp.description": "Verwenden Sie einen 6-stelligen Einmal-Code aus Ihrer Authenticator-App",
2394
+ "two-step.lookup_secret.title": "Backup-Wiederherstellungscode",
2395
+ "two-step.lookup_secret.description": "Verwenden Sie einen Ihrer 8-stelligen Backup-Codes, um sich zu authentifizieren",
2099
2396
  "identities.messages.1070014": "Login- und Link-Zugangsdaten",
2100
2397
  "identities.messages.1070015": "Bitte schlie\xDFen Sie die Captcha-Challenge ab, um fortzufahren.",
2101
2398
  "identities.messages.4000038": "Die Captcha-\xDCberpr\xFCfung ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
@@ -2103,20 +2400,20 @@ var de_default = {
2103
2400
  "login.cancel-label": "Nicht das richtige Konto?",
2104
2401
  "identities.messages.1010023": "Code an {address} senden",
2105
2402
  "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.",
2106
- "identities.messages.1010017": "",
2107
- "identities.messages.1010018": "",
2108
- "identities.messages.1010019": "",
2403
+ "identities.messages.1010017": "Anmelden und verbinden",
2404
+ "identities.messages.1010018": "Mit {provider} best\xE4tigen",
2405
+ "identities.messages.1010019": "Code senden um fortzufahren",
2109
2406
  "identities.messages.1010020": "",
2110
- "identities.messages.1010021": "",
2111
- "identities.messages.1010022": "",
2112
- "identities.messages.1040007": "",
2113
- "identities.messages.1040008": "",
2114
- "identities.messages.1040009": "",
2407
+ "identities.messages.1010021": "Mit Paskey anmelden",
2408
+ "identities.messages.1010022": "Mit Passwort anmelden",
2409
+ "identities.messages.1040007": "Mit Passkey registrieren",
2410
+ "identities.messages.1040008": "Zur\xFCck",
2411
+ "identities.messages.1040009": "Bitte w\xE4hlen Sie eine Authentifizierungsmethode, um fortzufahren.",
2115
2412
  "identities.messages.1050019": "Passkey hinzuf\xFCgen",
2116
- "identities.messages.1050020": "",
2117
- "identities.messages.4000037": "",
2118
- "identities.messages.4010009": "",
2119
- "identities.messages.4010010": "",
2413
+ "identities.messages.1050020": 'Passkey "{display_name}" entfernen',
2414
+ "identities.messages.4000037": "F\xFCr die eingegebenen Daten existiert kein Account",
2415
+ "identities.messages.4010009": "Die Authentifizierungsmethode stimmt nicht mit der vorherigen Authentifizierungsmethode \xFCberein. Bitte versuchen Sie es erneut.",
2416
+ "identities.messages.4010010": "Die eingegebene Adresse stimmt nicht mit der Adresse \xFCberein, die Sie bei der Registrierung angegeben haben. Bitte versuchen Sie es erneut.",
2120
2417
  "input.placeholder": "{placeholder} eingeben",
2121
2418
  "card.header.parts.code": "einem Code per E-Mail",
2122
2419
  "card.header.parts.identifier-first": "Ihr {identifierLabel}",
@@ -2181,7 +2478,27 @@ var de_default = {
2181
2478
  "property.password": "Passwort",
2182
2479
  "property.phone": "Telefon",
2183
2480
  "property.code": "Code",
2184
- "property.username": "Benutzername"
2481
+ "property.username": "Benutzername",
2482
+ "consent.title": "Autorisieren {party}",
2483
+ "consent.subtitle": "Eine Drittanbieteranwendung m\xF6chte auf Informationen zugreifen, die mit Ihrem Konto {identifier} verkn\xFCpft sind.",
2484
+ "consent.scope.openid.title": "Identit\xE4t",
2485
+ "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.",
2486
+ "consent.scope.offline_access.title": "Offline-Zugriff",
2487
+ "consent.scope.offline_access.description": "Erm\xF6glicht dieser Anwendung, Sie angemeldet zu lassen, auch wenn Sie sie nicht aktiv nutzen.",
2488
+ "consent.scope.profile.title": "Profilinformationen",
2489
+ "consent.scope.profile.description": "Erm\xF6glicht den Zugriff auf Ihre grundlegenden Profildetails, einschlie\xDFlich Ihres Benutzernamens, Vornamens und Nachnamens.",
2490
+ "consent.scope.email.title": "E-Mail-Adresse",
2491
+ "consent.scope.email.description": "Erm\xF6glicht den Abruf Ihrer E-Mail-Adresse und deren \xDCberpr\xFCfungsstatus.",
2492
+ "consent.scope.address.title": "Physische Adresse",
2493
+ "consent.scope.address.description": "Erm\xF6glicht den Zugriff auf Ihre Postanschrift.",
2494
+ "consent.scope.phone.title": "Telefonnummer",
2495
+ "consent.scope.phone.description": "Erm\xF6glicht den Abruf Ihrer Telefonnummer und deren \xDCberpr\xFCfungsstatus.",
2496
+ "error.title.what-happened": "Was ist passiert?",
2497
+ "error.footer.copy": "Kopieren",
2498
+ "error.footer.text": "Bitte f\xFCgen Sie bei der Meldung dieses Fehlers die folgenden Informationen hinzu:",
2499
+ "error.instructions": "Bitte versuchen Sie es in wenigen Minuten erneut oder wenden Sie sich an den Website-Betreiber.",
2500
+ "error.title.what-can-i-do": "Was kann ich tun?",
2501
+ "error.action.go-back": "Zur\xFCck"
2185
2502
  };
2186
2503
 
2187
2504
  // src/locales/es.json
@@ -2197,7 +2514,6 @@ var es_default = {
2197
2514
  "error.back-button": "Regresar",
2198
2515
  "error.description": "Ocurri\xF3 un error con el siguiente mensaje:",
2199
2516
  "error.support-email-link": "Si el problema persiste, por favor contacte a <a>{contactSupportEmail}</a>",
2200
- "error.title": "Ocurri\xF3 un error",
2201
2517
  "error.title-internal-server-error": "Error Interno del Servidor",
2202
2518
  "error.title-not-found": "404 - P\xE1gina no encontrada",
2203
2519
  "identities.messages.1010001": "Iniciar sesi\xF3n",
@@ -2207,9 +2523,9 @@ var es_default = {
2207
2523
  "identities.messages.1010005": "Verificar",
2208
2524
  "identities.messages.1010006": "C\xF3digo de autenticaci\xF3n",
2209
2525
  "identities.messages.1010007": "C\xF3digo de recuperaci\xF3n de respaldo",
2210
- "identities.messages.1010008": "Usar llave de seguridad",
2211
- "identities.messages.1010009": "Usar Autenticador",
2212
- "identities.messages.1010010": "Usar c\xF3digo de recuperaci\xF3n de respaldo",
2526
+ "identities.messages.1010008": "Continuar con la llave de hardware",
2527
+ "identities.messages.1010009": "Continuar",
2528
+ "identities.messages.1010010": "Continuar",
2213
2529
  "identities.messages.1010011": "Continuar con llave de seguridad",
2214
2530
  "identities.messages.1010012": "Prepare su dispositivo WebAuthn (por ejemplo, llave de seguridad, esc\xE1ner biom\xE9trico, ...) y presione continuar.",
2215
2531
  "identities.messages.1010013": "Continuar",
@@ -2325,8 +2641,16 @@ var es_default = {
2325
2641
  "login.registration-label": "\xBFNo tiene una cuenta?",
2326
2642
  "login.subtitle-oauth2": "Para autenticar a {clientName}",
2327
2643
  "login.title": "Iniciar sesi\xF3n",
2328
- "login.title-aal2": "Autenticaci\xF3n de Dos Factores",
2644
+ "login.title-aal2": "Autenticaci\xF3n de dos factores",
2645
+ "login.subtitle-aal2": "Elija una forma de completar su autenticaci\xF3n de segundo factor",
2646
+ "login.code.subtitle": "Se enviar\xE1 un c\xF3digo de verificaci\xF3n por correo electr\xF3nico",
2647
+ "login.webauthn.subtitle": "Por favor, prepare su dispositivo WebAuthN",
2648
+ "login.totp.subtitle": "Ingrese el c\xF3digo generado por su aplicaci\xF3n de autenticaci\xF3n",
2649
+ "login.lookup_secret.subtitle": "Ingrese uno de sus c\xF3digos de recuperaci\xF3n de respaldo de 8 d\xEDgitos",
2329
2650
  "login.title-refresh": "Confirme que es usted",
2651
+ "login.2fa.go-back": "\xBFAlgo no funciona?",
2652
+ "login.2fa.go-back.link": "Volver",
2653
+ "login.2fa.method.go-back": "Elegir otro m\xE9todo",
2330
2654
  "logout.accept-button": "S\xED",
2331
2655
  "logout.reject-button": "No",
2332
2656
  "logout.title": "\xBFDesea cerrar sesi\xF3n?",
@@ -2358,47 +2682,12 @@ var es_default = {
2358
2682
  "two-step.passkey.title": "Clave de acceso (recomendada)",
2359
2683
  "two-step.password.description": "Ingrese la contrase\xF1a asociada con su cuenta",
2360
2684
  "two-step.password.title": "Contrase\xF1a",
2361
- "two-step.webauthn.description": "Utiliza tu llave de seguridad para autenticarte",
2362
2685
  "two-step.webauthn.title": "Clave de Seguridad",
2363
- "identities.messages.1010016": "",
2364
- "identities.messages.1010017": "",
2365
- "identities.messages.1010018": "",
2366
- "identities.messages.1010019": "",
2367
- "identities.messages.1010020": "",
2368
- "identities.messages.1010021": "",
2369
- "identities.messages.1010022": "",
2370
- "identities.messages.1010023": "",
2371
- "identities.messages.1040007": "",
2372
- "identities.messages.1040008": "",
2373
- "identities.messages.1040009": "",
2374
- "identities.messages.1050019": "",
2375
- "identities.messages.1050020": "",
2376
- "identities.messages.1070014": "",
2377
- "identities.messages.1070015": "",
2378
- "identities.messages.4000037": "",
2379
- "identities.messages.4000038": "",
2380
- "identities.messages.4010009": "",
2381
- "identities.messages.4010010": "",
2382
- "login.cancel-button": "",
2383
- "login.cancel-label": "",
2384
- "input.placeholder": "",
2385
- "card.header.description.login": "",
2386
- "card.header.description.registration": "",
2387
- "card.header.parts.code": "",
2388
- "card.header.parts.identifier-first": "",
2389
- "card.header.parts.oidc": "",
2390
- "card.header.parts.passkey": "",
2391
- "card.header.parts.password.login": "",
2392
- "card.header.parts.password.registration": "",
2393
- "card.header.parts.webauthn": "",
2394
- "forms.label.forgot-password": "",
2395
- "login.subtitle": "",
2396
- "login.subtitle-refresh": "",
2397
- "misc.or": "",
2398
- "recovery.subtitle": "",
2399
- "registration.subtitle": "",
2400
- "settings.subtitle": "",
2401
- "verification.subtitle": "",
2686
+ "two-step.webauthn.description": "Utilice su llave de seguridad para autenticase",
2687
+ "two-step.totp.title": "Utilice su aplicaci\xF3n de autenticaci\xF3n (TOTP)",
2688
+ "two-step.totp.description": "Utilice un c\xF3digo de un solo uso de 6 d\xEDgitos de su aplicaci\xF3n de autenticaci\xF3n",
2689
+ "two-step.lookup_secret.title": "C\xF3digo de recuperaci\xF3n de respaldo",
2690
+ "two-step.lookup_secret.description": "Utilice uno de sus c\xF3digos de respaldo de 8 d\xEDgitos para autenticarse",
2402
2691
  "settings.totp.info.linked": "Actualmente tienes una aplicaci\xF3n de autenticaci\xF3n conectada.",
2403
2692
  "settings.totp.info.not-linked": "Para habilitar, escanea el c\xF3digo QR con tu autenticador e ingresa el c\xF3digo.",
2404
2693
  "settings.totp.title": "Aplicaci\xF3n Autenticadora",
@@ -2416,25 +2705,85 @@ var es_default = {
2416
2705
  "settings.profile.title": "Configuraci\xF3n de Perfil",
2417
2706
  "settings.webauthn.description": "Administra la configuraci\xF3n de tu token de hardware",
2418
2707
  "settings.webauthn.title": "Gestionar Tokens de Hardware",
2419
- "settings.oidc.info": "",
2420
- "settings.passkey.info": "",
2421
- "settings.title-lookup-secret": "",
2422
- "settings.title-navigation": "",
2423
- "settings.title-oidc": "",
2424
- "settings.title-passkey": "",
2425
- "settings.title-password": "",
2426
- "settings.title-profile": "",
2427
- "settings.title-totp": "",
2428
- "settings.title-webauthn": "",
2429
- "settings.webauthn.info": "",
2430
- "card.footer.select-another-method": "",
2431
- "account-linking.title": "",
2432
- "property.code": "",
2433
- "property.email": "",
2434
- "property.identifier": "",
2435
- "property.password": "",
2436
- "property.phone": "",
2437
- "property.username": ""
2708
+ "consent.title": "Autorizar {party}",
2709
+ "consent.subtitle": "Una aplicaci\xF3n de terceros quiere acceder a la informaci\xF3n asociada a su cuenta {identifier}.",
2710
+ "consent.scope.openid.title": "Identidad",
2711
+ "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.",
2712
+ "consent.scope.offline_access.title": "Acceso sin conexi\xF3n",
2713
+ "consent.scope.offline_access.description": "Permite que esta aplicaci\xF3n le mantenga conectado incluso cuando no la est\xE9 utilizando activamente.",
2714
+ "consent.scope.profile.title": "Informaci\xF3n del perfil",
2715
+ "consent.scope.profile.description": "Permite el acceso a los detalles b\xE1sicos de su perfil, incluyendo su nombre de usuario, nombre y apellido.",
2716
+ "consent.scope.email.title": "Direcci\xF3n de correo electr\xF3nico",
2717
+ "consent.scope.email.description": "Recupere su direcci\xF3n de correo electr\xF3nico y su estado de verificaci\xF3n.",
2718
+ "consent.scope.address.title": "Direcci\xF3n f\xEDsica",
2719
+ "consent.scope.address.description": "Acceda a su direcci\xF3n postal.",
2720
+ "consent.scope.phone.title": "N\xFAmero de tel\xE9fono",
2721
+ "consent.scope.phone.description": "Recupere su n\xFAmero de tel\xE9fono y su estado de verificaci\xF3n.",
2722
+ "error.title": "Ocurri\xF3 un error",
2723
+ "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.',
2724
+ "identities.messages.1010017": "Iniciar sesi\xF3n y vincular",
2725
+ "identities.messages.1010018": "Confirmar con {provider}",
2726
+ "identities.messages.1010019": "Solicitar c\xF3digo para continuar",
2727
+ "identities.messages.1010021": "Iniciar sesi\xF3n con clave de acceso",
2728
+ "identities.messages.1010022": "Iniciar sesi\xF3n con contrase\xF1a",
2729
+ "identities.messages.1010023": "Enviar c\xF3digo a {address}",
2730
+ "identities.messages.1040007": "Registrarse con clave de acceso",
2731
+ "identities.messages.1040008": "Atr\xE1s",
2732
+ "identities.messages.1040009": "Por favor, elige una credencial para autenticarte.",
2733
+ "identities.messages.1050019": "Agregar clave de acceso",
2734
+ "identities.messages.1070014": "Iniciar sesi\xF3n y vincular credencial",
2735
+ "identities.messages.1070015": "Por favor, completa el desaf\xEDo captcha para continuar.",
2736
+ "identities.messages.4000037": "Esta cuenta no existe o no tiene ning\xFAn m\xE9todo de inicio de sesi\xF3n configurado.",
2737
+ "identities.messages.4000038": "Fall\xF3 la verificaci\xF3n de Captcha, por favor intenta de nuevo.",
2738
+ "identities.messages.4010009": "Las credenciales vinculadas no coinciden.",
2739
+ "identities.messages.4010010": "La direcci\xF3n que ingresaste no coincide con ninguna direcci\xF3n conocida en la cuenta actual.",
2740
+ "login.cancel-button": "Cancelar",
2741
+ "login.cancel-label": "\xBFNo es la cuenta correcta?",
2742
+ "login.subtitle": "Iniciar sesi\xF3n con {parts}",
2743
+ "login.subtitle-refresh": "Confirma tu identidad con {parts}",
2744
+ "recovery.subtitle": "Ingresa la direcci\xF3n de correo electr\xF3nico asociada con tu cuenta para recibir un c\xF3digo de acceso \xFAnico",
2745
+ "registration.subtitle": "Registrarse con {parts}",
2746
+ "settings.subtitle": "Actualiza la configuraci\xF3n de tu cuenta",
2747
+ "settings.title-lookup-secret": "Administrar c\xF3digos de recuperaci\xF3n de respaldo 2FA",
2748
+ "settings.title-navigation": "Configuraci\xF3n de la cuenta",
2749
+ "settings.title-oidc": "Inicio de sesi\xF3n social",
2750
+ "settings.title-password": "Cambiar contrase\xF1a",
2751
+ "settings.title-profile": "Configuraci\xF3n del perfil",
2752
+ "settings.title-totp": "Administrar la aplicaci\xF3n de autenticaci\xF3n 2FA TOTP",
2753
+ "settings.title-webauthn": "Administrar tokens de hardware",
2754
+ "settings.title-passkey": "Administrar claves de acceso",
2755
+ "verification.subtitle": "Ingresa la direcci\xF3n de correo electr\xF3nico asociada con tu cuenta para verificarla",
2756
+ "input.placeholder": "Ingresa tu {placeholder}",
2757
+ "card.header.parts.oidc": "un proveedor social",
2758
+ "card.header.parts.password.registration": "tu {identifierLabel} y una contrase\xF1a",
2759
+ "card.header.parts.password.login": "tu {identifierLabel} y contrase\xF1a",
2760
+ "card.header.parts.code": "un c\xF3digo enviado a tu correo electr\xF3nico",
2761
+ "card.header.parts.passkey": "una clave de acceso",
2762
+ "card.header.parts.webauthn": "una clave de seguridad",
2763
+ "card.header.parts.identifier-first": "tu {identifierLabel}",
2764
+ "card.header.description.login": "Iniciar sesi\xF3n con {identifierLabel}",
2765
+ "card.header.description.registration": "Registrarse con {identifierLabel}",
2766
+ "misc.or": "o",
2767
+ "forms.label.forgot-password": "\xBFOlvidaste tu contrase\xF1a?",
2768
+ "settings.oidc.info": "Las cuentas conectadas de estos proveedores se pueden utilizar para iniciar sesi\xF3n en tu cuenta",
2769
+ "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",
2770
+ "settings.passkey.info": "Administra la configuraci\xF3n de tus claves de acceso",
2771
+ "card.footer.select-another-method": "Seleccionar otro m\xE9todo",
2772
+ "account-linking.title": "Vincular cuenta",
2773
+ "property.password": "contrase\xF1a",
2774
+ "property.email": "correo electr\xF3nico",
2775
+ "property.phone": "tel\xE9fono",
2776
+ "property.username": "nombre de usuario",
2777
+ "property.identifier": "identificador",
2778
+ "property.code": "c\xF3digo",
2779
+ "error.title.what-happened": "\xBFQu\xE9 pas\xF3?",
2780
+ "error.title.what-can-i-do": "\xBFQu\xE9 puedo hacer?",
2781
+ "error.instructions": "Por favor, int\xE9ntalo de nuevo en unos minutos o contacta al operador del sitio web.",
2782
+ "error.footer.text": "Al informar este error, incluye la siguiente informaci\xF3n:",
2783
+ "error.footer.copy": "Copiar",
2784
+ "error.action.go-back": "Regresar",
2785
+ "identities.messages.1010020": "",
2786
+ "identities.messages.1050020": 'Eliminar passkey "{display_name}"'
2438
2787
  };
2439
2788
 
2440
2789
  // src/locales/fr.json
@@ -2460,9 +2809,9 @@ var fr_default = {
2460
2809
  "identities.messages.1010005": "V\xE9rifier",
2461
2810
  "identities.messages.1010006": "Code d'authentification",
2462
2811
  "identities.messages.1010007": "Code de r\xE9cup\xE9ration de secours",
2463
- "identities.messages.1010008": "Utiliser une cl\xE9 de s\xE9curit\xE9",
2464
- "identities.messages.1010009": "Utiliser un authentificateur",
2465
- "identities.messages.1010010": "Utiliser un code de r\xE9cup\xE9ration de secours",
2812
+ "identities.messages.1010008": "Continuer avec la cl\xE9 mat\xE9rielle",
2813
+ "identities.messages.1010009": "Continuer",
2814
+ "identities.messages.1010010": "Continuer",
2466
2815
  "identities.messages.1010011": "Continuer avec la cl\xE9 de s\xE9curit\xE9",
2467
2816
  "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.",
2468
2817
  "identities.messages.1010013": "Continuer",
@@ -2579,7 +2928,15 @@ var fr_default = {
2579
2928
  "login.subtitle-oauth2": "Pour vous authentifier sur {clientName}",
2580
2929
  "login.title": "Se connecter",
2581
2930
  "login.title-aal2": "Authentification \xE0 deux facteurs",
2931
+ "login.subtitle-aal2": "Choisissez une m\xE9thode pour compl\xE9ter votre authentification \xE0 deux facteurs",
2932
+ "login.code.subtitle": "Un code de v\xE9rification sera envoy\xE9 par e-mail",
2933
+ "login.webauthn.subtitle": "Veuillez pr\xE9parer votre dispositif WebAuthN",
2934
+ "login.totp.subtitle": "Veuillez saisir le code g\xE9n\xE9r\xE9 par votre application d'authentification",
2935
+ "login.lookup_secret.subtitle": "Veuillez saisir l'un de vos codes de r\xE9cup\xE9ration de secours \xE0 8 chiffres",
2582
2936
  "login.title-refresh": "Confirmez que c'est bien vous",
2937
+ "login.2fa.go-back": "Quelque chose ne fonctionne pas ?",
2938
+ "login.2fa.go-back.link": "Retour",
2939
+ "login.2fa.method.go-back": "Choisir une autre m\xE9thode",
2583
2940
  "logout.accept-button": "Oui",
2584
2941
  "logout.reject-button": "Non",
2585
2942
  "logout.title": "Souhaitez-vous vous d\xE9connecter ?",
@@ -2611,83 +2968,107 @@ var fr_default = {
2611
2968
  "two-step.passkey.title": "Cl\xE9 de passe (recommand\xE9e)",
2612
2969
  "two-step.password.description": "Entrez votre mot de passe associ\xE9 \xE0 votre compte",
2613
2970
  "two-step.password.title": "Mot de passe",
2614
- "two-step.webauthn.description": "Utilisez votre cl\xE9 de s\xE9curit\xE9 pour vous authentifier",
2615
2971
  "two-step.webauthn.title": "Cl\xE9 de S\xE9curit\xE9",
2616
- "identities.messages.1010023": "",
2617
- "identities.messages.1070015": "",
2618
- "identities.messages.4000038": "",
2619
- "login.cancel-button": "",
2620
- "login.cancel-label": "",
2621
- "identities.messages.1010016": "",
2622
- "identities.messages.1010017": "",
2623
- "identities.messages.1010018": "",
2624
- "identities.messages.1010019": "",
2625
- "identities.messages.1010020": "",
2626
- "identities.messages.1010021": "",
2627
- "identities.messages.1010022": "",
2628
- "identities.messages.1040007": "",
2629
- "identities.messages.1040008": "",
2630
- "identities.messages.1040009": "",
2631
- "identities.messages.1050019": "",
2632
- "identities.messages.1050020": "",
2633
- "identities.messages.1070014": "",
2634
- "identities.messages.4000037": "",
2635
- "identities.messages.4010009": "",
2636
- "identities.messages.4010010": "",
2637
- "input.placeholder": "",
2638
- "card.header.description.login": "",
2639
- "card.header.description.registration": "",
2640
- "card.header.parts.code": "",
2641
- "card.header.parts.identifier-first": "",
2642
- "card.header.parts.oidc": "",
2643
- "card.header.parts.passkey": "",
2644
- "card.header.parts.password.login": "",
2645
- "card.header.parts.password.registration": "",
2646
- "card.header.parts.webauthn": "",
2647
- "forms.label.forgot-password": "",
2648
- "login.subtitle": "",
2649
- "login.subtitle-refresh": "",
2650
- "misc.or": "",
2651
- "recovery.subtitle": "",
2652
- "registration.subtitle": "",
2653
- "settings.subtitle": "",
2654
- "verification.subtitle": "",
2972
+ "two-step.webauthn.description": "Utilisez votre cl\xE9 de s\xE9curit\xE9 pour vous authentifier",
2973
+ "two-step.totp.title": "Utilisez votre application d'authentification (TOTP)",
2974
+ "two-step.totp.description": "Utilisez un code \xE0 usage unique \xE0 6 chiffres provenant de votre application d'authentification",
2975
+ "two-step.lookup_secret.title": "Code de r\xE9cup\xE9ration de secours",
2976
+ "two-step.lookup_secret.description": "Utilisez l'un de vos codes de secours \xE0 8 chiffres pour vous authentifier",
2655
2977
  "settings.totp.info.linked": "Vous avez actuellement une application d'authentification connect\xE9e.",
2656
2978
  "settings.totp.info.not-linked": "Pour activer, scannez le QR code avec votre authentificateur et entrez le code.",
2657
2979
  "settings.totp.title": "Application d'authentification",
2658
2980
  "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.",
2659
- "settings.lookup_secret.description": "",
2660
- "settings.lookup_secret.title": "",
2661
- "settings.navigation.title": "",
2662
- "settings.oidc.description": "",
2663
- "settings.oidc.info": "",
2664
- "settings.oidc.title": "",
2665
- "settings.passkey.description": "",
2666
- "settings.passkey.info": "",
2667
- "settings.passkey.title": "",
2668
- "settings.password.description": "",
2669
- "settings.password.title": "",
2670
- "settings.profile.description": "",
2671
- "settings.profile.title": "",
2672
- "settings.title-lookup-secret": "",
2673
- "settings.title-navigation": "",
2674
- "settings.title-oidc": "",
2675
- "settings.title-passkey": "",
2676
- "settings.title-password": "",
2677
- "settings.title-profile": "",
2678
- "settings.title-totp": "",
2679
- "settings.title-webauthn": "",
2680
- "settings.webauthn.description": "",
2681
- "settings.webauthn.info": "",
2682
- "settings.webauthn.title": "",
2683
- "card.footer.select-another-method": "",
2684
- "account-linking.title": "",
2685
- "property.code": "",
2686
- "property.email": "",
2687
- "property.identifier": "",
2688
- "property.password": "",
2689
- "property.phone": "",
2690
- "property.username": ""
2981
+ "consent.title": "Autoriser {party}",
2982
+ "consent.subtitle": "Une application tierce souhaite acc\xE9der aux informations associ\xE9es \xE0 votre compte {identifier}.",
2983
+ "consent.scope.openid.title": "Identit\xE9",
2984
+ "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.",
2985
+ "consent.scope.offline_access.title": "Acc\xE8s hors ligne",
2986
+ "consent.scope.offline_access.description": "Permet \xE0 cette application de vous maintenir connect\xE9 m\xEAme lorsque vous ne l'utilisez pas activement.",
2987
+ "consent.scope.profile.title": "Informations de profil",
2988
+ "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.",
2989
+ "consent.scope.email.title": "Adresse e-mail",
2990
+ "consent.scope.email.description": "R\xE9cup\xE8re votre adresse e-mail et son statut de v\xE9rification.",
2991
+ "consent.scope.address.title": "Adresse physique",
2992
+ "consent.scope.address.description": "Acc\xE8de \xE0 votre adresse postale.",
2993
+ "consent.scope.phone.title": "Num\xE9ro de t\xE9l\xE9phone",
2994
+ "consent.scope.phone.description": "R\xE9cup\xE8re votre num\xE9ro de t\xE9l\xE9phone et son statut de v\xE9rification.",
2995
+ "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.",
2996
+ "identities.messages.1010017": "Se connecter et lier",
2997
+ "identities.messages.1010018": "Confirmer avec {provider}",
2998
+ "identities.messages.1010019": "Demander un code pour continuer",
2999
+ "identities.messages.1010021": "Se connecter avec une cl\xE9 d'acc\xE8s",
3000
+ "identities.messages.1010022": "Se connecter avec un mot de passe",
3001
+ "identities.messages.1010023": "Envoyer le code \xE0 {address}",
3002
+ "identities.messages.1040007": "S'inscrire avec une cl\xE9 d'acc\xE8s",
3003
+ "identities.messages.1040008": "Retour",
3004
+ "identities.messages.1040009": "Veuillez choisir une identification pour vous authentifier.",
3005
+ "identities.messages.1050019": "Ajouter une cl\xE9 d'acc\xE8s",
3006
+ "identities.messages.1050020": "Supprimer la cl\xE9 d'acc\xE8s \xAB {display_name} \xBB",
3007
+ "identities.messages.1070014": "Se connecter et lier l'identification",
3008
+ "identities.messages.1070015": "Veuillez compl\xE9ter le d\xE9fi captcha pour continuer.",
3009
+ "identities.messages.4000037": "Ce compte n'existe pas ou n'a aucune m\xE9thode de connexion configur\xE9e.",
3010
+ "identities.messages.4000038": "La v\xE9rification Captcha a \xE9chou\xE9, veuillez r\xE9essayer.",
3011
+ "identities.messages.4010009": "Les identifications li\xE9es ne correspondent pas.",
3012
+ "identities.messages.4010010": "L'adresse que vous avez saisie ne correspond \xE0 aucune adresse connue dans le compte actuel.",
3013
+ "login.cancel-button": "Annuler",
3014
+ "login.cancel-label": "Ce n'est pas le bon compte\xA0?",
3015
+ "login.subtitle": "Se connecter avec {parts}",
3016
+ "login.subtitle-refresh": "Confirmez votre identit\xE9 avec {parts}",
3017
+ "recovery.subtitle": "Saisissez l'adresse e-mail associ\xE9e \xE0 votre compte pour recevoir un code d'acc\xE8s unique",
3018
+ "registration.subtitle": "S'inscrire avec {parts}",
3019
+ "settings.subtitle": "Mettre \xE0 jour les param\xE8tres de votre compte",
3020
+ "settings.title-lookup-secret": "G\xE9rer les codes de r\xE9cup\xE9ration de sauvegarde 2FA",
3021
+ "settings.title-navigation": "Param\xE8tres du compte",
3022
+ "settings.title-oidc": "Connexion via les r\xE9seaux sociaux",
3023
+ "settings.title-password": "Changer le mot de passe",
3024
+ "settings.title-profile": "Param\xE8tres du profil",
3025
+ "settings.title-totp": "G\xE9rer l'application d'authentification 2FA TOTP",
3026
+ "settings.title-webauthn": "G\xE9rer les jetons mat\xE9riels",
3027
+ "settings.title-passkey": "G\xE9rer les cl\xE9s d'acc\xE8s",
3028
+ "settings.navigation.title": "Param\xE8tres du compte",
3029
+ "settings.password.title": "Changer le mot de passe",
3030
+ "settings.password.description": "Modifier votre mot de passe",
3031
+ "settings.profile.title": "Param\xE8tres du profil",
3032
+ "settings.profile.description": "Mettre \xE0 jour les informations de votre profil",
3033
+ "settings.webauthn.title": "G\xE9rer les jetons mat\xE9riels",
3034
+ "settings.webauthn.description": "G\xE9rer les param\xE8tres de votre jeton mat\xE9riel",
3035
+ "verification.subtitle": "Saisissez l'adresse e-mail associ\xE9e \xE0 votre compte pour la v\xE9rifier",
3036
+ "input.placeholder": "Saisissez votre {placeholder}",
3037
+ "card.header.parts.oidc": "un fournisseur de r\xE9seaux sociaux",
3038
+ "card.header.parts.password.registration": "votre {identifierLabel} et un mot de passe",
3039
+ "card.header.parts.password.login": "votre {identifierLabel} et votre mot de passe",
3040
+ "card.header.parts.code": "un code envoy\xE9 \xE0 votre adresse e-mail",
3041
+ "card.header.parts.passkey": "une cl\xE9 d'acc\xE8s",
3042
+ "card.header.parts.webauthn": "une cl\xE9 de s\xE9curit\xE9",
3043
+ "card.header.parts.identifier-first": "votre {identifierLabel}",
3044
+ "card.header.description.login": "Se connecter avec {identifierLabel}",
3045
+ "card.header.description.registration": "S'inscrire avec {identifierLabel}",
3046
+ "misc.or": "ou",
3047
+ "forms.label.forgot-password": "Mot de passe oubli\xE9?",
3048
+ "settings.lookup_secret.title": "Codes de r\xE9cup\xE9ration de sauvegarde (second facteur)",
3049
+ "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.",
3050
+ "settings.oidc.title": "Comptes connect\xE9s",
3051
+ "settings.oidc.description": "Connectez un fournisseur de connexion sociale \xE0 votre compte.",
3052
+ "settings.oidc.info": "Les comptes connect\xE9s de ces fournisseurs peuvent \xEAtre utilis\xE9s pour vous connecter \xE0 votre compte",
3053
+ "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",
3054
+ "settings.passkey.title": "G\xE9rer les cl\xE9s d'acc\xE8s",
3055
+ "settings.passkey.description": "G\xE9rer les param\xE8tres de vos cl\xE9s d'acc\xE8s",
3056
+ "settings.passkey.info": "G\xE9rer les param\xE8tres de vos cl\xE9s d'acc\xE8s",
3057
+ "card.footer.select-another-method": "S\xE9lectionner une autre m\xE9thode",
3058
+ "account-linking.title": "Lier le compte",
3059
+ "property.password": "mot de passe",
3060
+ "property.email": "e-mail",
3061
+ "property.phone": "t\xE9l\xE9phone",
3062
+ "property.username": "nom d'utilisateur",
3063
+ "property.identifier": "identifiant",
3064
+ "property.code": "code",
3065
+ "error.title.what-happened": "Que s'est-il pass\xE9?",
3066
+ "error.title.what-can-i-do": "Que puis-je faire?",
3067
+ "error.instructions": "Veuillez r\xE9essayer dans quelques minutes ou contacter l'op\xE9rateur du site Web.",
3068
+ "error.footer.text": "Lorsque vous signalez cette erreur, veuillez inclure les informations suivantes:",
3069
+ "error.footer.copy": "Copier",
3070
+ "error.action.go-back": "Retour",
3071
+ "identities.messages.1010020": ""
2691
3072
  };
2692
3073
 
2693
3074
  // src/locales/nl.json
@@ -2713,9 +3094,9 @@ var nl_default = {
2713
3094
  "identities.messages.1010005": "Verifi\xEBren",
2714
3095
  "identities.messages.1010006": "Verificatiecode",
2715
3096
  "identities.messages.1010007": "Back-up herstelcode",
2716
- "identities.messages.1010008": "Beveiligingssleutel gebruiken",
2717
- "identities.messages.1010009": "Authenticator gebruiken",
2718
- "identities.messages.1010010": "Back-up herstelcode gebruiken",
3097
+ "identities.messages.1010008": "Ga verder met hardware-sleutel",
3098
+ "identities.messages.1010009": "Doorgaan",
3099
+ "identities.messages.1010010": "Doorgaan",
2719
3100
  "identities.messages.1010011": "Doorgaan met beveiligingssleutel",
2720
3101
  "identities.messages.1010012": "Bereid uw WebAuthn-apparaat voor (bijv. beveiligingssleutel, biometrische scanner, ...) en druk op doorgaan.",
2721
3102
  "identities.messages.1010013": "Doorgaan",
@@ -2831,8 +3212,16 @@ var nl_default = {
2831
3212
  "login.registration-label": "Heb je nog geen account?",
2832
3213
  "login.subtitle-oauth2": "Om te authenticeren bij {clientName}",
2833
3214
  "login.title": "Inloggen",
2834
- "login.title-aal2": "Twee-Factor Authenticatie",
3215
+ "login.title-aal2": "Tweefactorauthenticatie",
3216
+ "login.subtitle-aal2": "Kies een manier om uw tweefactorauthenticatie te voltooien",
3217
+ "login.code.subtitle": "Er wordt een verificatiecode per e-mail verzonden",
3218
+ "login.webauthn.subtitle": "Bereid uw WebAuthN-apparaat voor",
3219
+ "login.totp.subtitle": "Voer de code in die door uw Authenticator-app is gegenereerd",
3220
+ "login.lookup_secret.subtitle": "Voer een van uw 8-cijferige back-up herstelcodes in",
2835
3221
  "login.title-refresh": "Bevestig dat jij het bent",
3222
+ "login.2fa.go-back": "Werkt er iets niet?",
3223
+ "login.2fa.go-back.link": "Ga terug",
3224
+ "login.2fa.method.go-back": "Kies een andere methode",
2836
3225
  "logout.accept-button": "Ja",
2837
3226
  "logout.reject-button": "Nee",
2838
3227
  "logout.title": "Wil je uitloggen?",
@@ -2864,8 +3253,12 @@ var nl_default = {
2864
3253
  "two-step.passkey.title": "Toegangscode (aanbevolen)",
2865
3254
  "two-step.password.description": "Voer uw wachtwoord in dat is gekoppeld aan uw account",
2866
3255
  "two-step.password.title": "Wachtwoord",
2867
- "two-step.webauthn.description": "Gebruik uw beveiligingssleutel om te verifi\xEBren",
2868
3256
  "two-step.webauthn.title": "Beveiligingssleutel",
3257
+ "two-step.webauthn.description": "Gebruik uw beveiligingssleutel om te verifi\xEBren",
3258
+ "two-step.totp.title": "Gebruik uw Authenticator-app (TOTP)",
3259
+ "two-step.totp.description": "Gebruik een 6-cijferige eenmalige code van uw authenticator-app",
3260
+ "two-step.lookup_secret.title": "Herstelcode",
3261
+ "two-step.lookup_secret.description": "Gebruik een van uw 8-cijferige back-upcodes om te authenticeren",
2869
3262
  "identities.messages.1010023": "",
2870
3263
  "identities.messages.1070014": "",
2871
3264
  "identities.messages.1070015": "",
@@ -2940,7 +3333,27 @@ var nl_default = {
2940
3333
  "property.identifier": "",
2941
3334
  "property.password": "",
2942
3335
  "property.phone": "",
2943
- "property.username": ""
3336
+ "property.username": "",
3337
+ "consent.title": "Autoriseren {party}",
3338
+ "consent.subtitle": "Een derde partij applicatie wil toegang tot informatie die aan uw account {identifier} is gekoppeld.",
3339
+ "consent.scope.openid.title": "Identiteit",
3340
+ "consent.scope.openid.description": "Stelt de applicatie in staat uw identiteit te verifi\xEBren. Dit is vereist voor authenticatie en een betrouwbare inlogervaring.",
3341
+ "consent.scope.offline_access.title": "Offline toegang",
3342
+ "consent.scope.offline_access.description": "Stelt deze applicatie in staat u ingelogd te houden, zelfs wanneer u deze niet actief gebruikt.",
3343
+ "consent.scope.profile.title": "Profielinformatie",
3344
+ "consent.scope.profile.description": "Geeft toegang tot uw basisprofielgegevens, inclusief uw gebruikersnaam, voornaam en achternaam.",
3345
+ "consent.scope.email.title": "E-mailadres",
3346
+ "consent.scope.email.description": "Haal uw e-mailadres en de verificatiestatus ervan op.",
3347
+ "consent.scope.address.title": "Fysiek adres",
3348
+ "consent.scope.address.description": "Toegang tot uw postadres.",
3349
+ "consent.scope.phone.title": "Telefoonnummer",
3350
+ "consent.scope.phone.description": "Haal uw telefoonnummer en de verificatiestatus ervan op.",
3351
+ "error.action.go-back": "",
3352
+ "error.footer.copy": "",
3353
+ "error.footer.text": "",
3354
+ "error.title.what-can-i-do": "",
3355
+ "error.title.what-happened": "",
3356
+ "error.instructions": ""
2944
3357
  };
2945
3358
 
2946
3359
  // src/locales/pl.json
@@ -2966,9 +3379,9 @@ var pl_default = {
2966
3379
  "identities.messages.1010005": "Zweryifkuj",
2967
3380
  "identities.messages.1010006": "Kod autentykacyjny",
2968
3381
  "identities.messages.1010007": "Zapasowe kody odzyskiwania",
2969
- "identities.messages.1010008": "U\u017Cyj klucza bezpiecze\u0144stwa",
2970
- "identities.messages.1010009": "U\u017Cyj Autentykatora",
2971
- "identities.messages.1010010": "U\u017Cyj zapasowych kod\xF3w odzyskiwania",
3382
+ "identities.messages.1010008": "Kontynuuj z kluczem sprz\u0119towym",
3383
+ "identities.messages.1010009": "Kontynuuj",
3384
+ "identities.messages.1010010": "Kontynuuj",
2972
3385
  "identities.messages.1010011": "Kontynuuj za pomoc\u0105 klucza bezpiecze\u0144stwa",
2973
3386
  "identities.messages.1010012": "Przygotuj swoje urz\u0105dzenie WebAuthn (np. klucz bezpiecze\u0144stwa, czytnik biometryczny, ...) a nast\u0119pnie kliknij kontynuuj.",
2974
3387
  "identities.messages.1010013": "Kontynuuj",
@@ -3084,8 +3497,16 @@ var pl_default = {
3084
3497
  "login.registration-label": "Nie posiadasz konta?",
3085
3498
  "login.subtitle-oauth2": "Do autentykacji {clientName}",
3086
3499
  "login.title": "Zaloguj si\u0119",
3087
- "login.title-aal2": "Autentykacja Dwu-Etapowa",
3500
+ "login.title-aal2": "Uwierzytelnianie dwusk\u0142adnikowe",
3501
+ "login.subtitle-aal2": "Wybierz spos\xF3b, aby zako\u0144czy\u0107 uwierzytelnianie dwusk\u0142adnikowe",
3502
+ "login.code.subtitle": "Kod weryfikacyjny zostanie wys\u0142any e-mailem",
3503
+ "login.webauthn.subtitle": "Prosz\u0119 przygotowa\u0107 urz\u0105dzenie WebAuthN",
3504
+ "login.totp.subtitle": "Prosz\u0119 wprowadzi\u0107 kod wygenerowany przez Twoj\u0105 aplikacj\u0119 uwierzytelniaj\u0105c\u0105",
3505
+ "login.lookup_secret.subtitle": "Prosz\u0119 wprowadzi\u0107 jeden z Twoich 8-cyfrowych kod\xF3w odzyskiwania zapasowego",
3088
3506
  "login.title-refresh": "Potwierd\u017A \u017Ce to Ty",
3507
+ "login.2fa.go-back": "Co\u015B nie dzia\u0142a?",
3508
+ "login.2fa.go-back.link": "Wr\xF3\u0107",
3509
+ "login.2fa.method.go-back": "Wybierz inn\u0105 metod\u0119",
3089
3510
  "logout.accept-button": "Tak",
3090
3511
  "logout.reject-button": "Nie",
3091
3512
  "logout.title": "Czy chcesz si\u0119 wylogowa\u0107?",
@@ -3117,8 +3538,12 @@ var pl_default = {
3117
3538
  "two-step.passkey.title": "Klucz dost\u0119pu (zalecany)",
3118
3539
  "two-step.password.description": "Wprowad\u017A has\u0142o powi\u0105zane z twoim kontem",
3119
3540
  "two-step.password.title": "Has\u0142o",
3120
- "two-step.webauthn.description": "U\u017Cyj swojego klucza bezpiecze\u0144stwa do uwierzytelnienia",
3121
3541
  "two-step.webauthn.title": "Klucz bezpiecze\u0144stwa",
3542
+ "two-step.webauthn.description": "U\u017Cyj swojego klucza bezpiecze\u0144stwa do uwierzytelnienia",
3543
+ "two-step.totp.title": "U\u017Cyj swojej aplikacji uwierzytelniaj\u0105cej (TOTP)",
3544
+ "two-step.totp.description": "U\u017Cyj 6-cyfrowego jednorazowego kodu z Twojej aplikacji uwierzytelniaj\u0105cej",
3545
+ "two-step.lookup_secret.title": "Kod odzyskiwania zapasowego",
3546
+ "two-step.lookup_secret.description": "U\u017Cyj jednego z Twoich 8-cyfrowych kod\xF3w zapasowych, aby si\u0119 uwierzytelni\u0107",
3122
3547
  "identities.messages.1010016": "",
3123
3548
  "identities.messages.1010017": "",
3124
3549
  "identities.messages.1010018": "",
@@ -3193,7 +3618,27 @@ var pl_default = {
3193
3618
  "property.password": "",
3194
3619
  "property.phone": "",
3195
3620
  "property.username": "",
3196
- "property.identifier": ""
3621
+ "property.identifier": "",
3622
+ "consent.title": "Autoryzuj {party}",
3623
+ "consent.subtitle": "Aplikacja trzeciej strony chce uzyska\u0107 dost\u0119p do informacji powi\u0105zanych z Twoim kontem {identifier}.",
3624
+ "consent.scope.openid.title": "To\u017Csamo\u015B\u0107",
3625
+ "consent.scope.openid.description": "Pozwala aplikacji zweryfikowa\u0107 Twoj\u0105 to\u017Csamo\u015B\u0107. Jest to wymagane do uwierzytelniania i zapewnienia zaufanej sesji logowania.",
3626
+ "consent.scope.offline_access.title": "Dost\u0119p offline",
3627
+ "consent.scope.offline_access.description": "Pozwala aplikacji utrzyma\u0107 Twoje logowanie, nawet gdy nie korzystasz z niej aktywnie.",
3628
+ "consent.scope.profile.title": "Informacje profilowe",
3629
+ "consent.scope.profile.description": "Pozwala na dost\u0119p do podstawowych danych profilowych, w tym nazwy u\u017Cytkownika, imienia i nazwiska.",
3630
+ "consent.scope.email.title": "Adres e-mail",
3631
+ "consent.scope.email.description": "Pobierz sw\xF3j adres e-mail oraz status jego weryfikacji.",
3632
+ "consent.scope.address.title": "Adres fizyczny",
3633
+ "consent.scope.address.description": "Dost\u0119p do Twojego adresu pocztowego.",
3634
+ "consent.scope.phone.title": "Numer telefonu",
3635
+ "consent.scope.phone.description": "Pobierz sw\xF3j numer telefonu oraz status jego weryfikacji.",
3636
+ "error.action.go-back": "",
3637
+ "error.footer.copy": "",
3638
+ "error.footer.text": "",
3639
+ "error.title.what-can-i-do": "",
3640
+ "error.title.what-happened": "",
3641
+ "error.instructions": ""
3197
3642
  };
3198
3643
 
3199
3644
  // src/locales/pt.json
@@ -3219,9 +3664,9 @@ var pt_default = {
3219
3664
  "identities.messages.1010005": "Verificar",
3220
3665
  "identities.messages.1010006": "C\xF3digo de Autentica\xE7\xE3o",
3221
3666
  "identities.messages.1010007": "C\xF3digo de Recupera\xE7\xE3o de Backup",
3222
- "identities.messages.1010008": "Usar chave de seguran\xE7a",
3223
- "identities.messages.1010009": "Usar o Autenticador",
3224
- "identities.messages.1010010": "Usar c\xF3digo de recupera\xE7\xE3o de backup",
3667
+ "identities.messages.1010008": "Continuar com chave de hardware",
3668
+ "identities.messages.1010009": "Continuar",
3669
+ "identities.messages.1010010": "Continuar",
3225
3670
  "identities.messages.1010011": "Continuar com a chave de seguran\xE7a",
3226
3671
  "identities.messages.1010012": "Prepare o seu dispositivo WebAuthn (por exemplo, chave de seguran\xE7a, scanner biom\xE9trico, ...) e pressione continuar.",
3227
3672
  "identities.messages.1010013": "Continuar",
@@ -3337,8 +3782,16 @@ var pt_default = {
3337
3782
  "login.registration-label": "N\xE3o tem uma conta?",
3338
3783
  "login.subtitle-oauth2": "Para autenticar {clientName}",
3339
3784
  "login.title": "Entrar",
3340
- "login.title-aal2": "Autentica\xE7\xE3o de Dois Fatores",
3785
+ "login.title-aal2": "Autentica\xE7\xE3o de dois fatores",
3786
+ "login.subtitle-aal2": "Escolha uma forma de completar sua autentica\xE7\xE3o de segundo fator",
3787
+ "login.code.subtitle": "Um c\xF3digo de verifica\xE7\xE3o ser\xE1 enviado por e-mail",
3788
+ "login.webauthn.subtitle": "Por favor, prepare seu dispositivo WebAuthN",
3789
+ "login.totp.subtitle": "Digite o c\xF3digo gerado pelo seu aplicativo autenticador",
3790
+ "login.lookup_secret.subtitle": "Digite um dos seus c\xF3digos de recupera\xE7\xE3o de 8 d\xEDgitos",
3341
3791
  "login.title-refresh": "Confirme que \xE9 voc\xEA",
3792
+ "login.2fa.go-back": "Algo n\xE3o est\xE1 funcionando?",
3793
+ "login.2fa.go-back.link": "Voltar",
3794
+ "login.2fa.method.go-back": "Escolher outro m\xE9todo",
3342
3795
  "logout.accept-button": "Sim",
3343
3796
  "logout.reject-button": "N\xE3o",
3344
3797
  "logout.title": "Deseja sair?",
@@ -3370,8 +3823,12 @@ var pt_default = {
3370
3823
  "two-step.passkey.title": "Chave de acesso (recomendado)",
3371
3824
  "two-step.password.description": "Insira a sua senha associada \xE0 sua conta",
3372
3825
  "two-step.password.title": "Senha",
3373
- "two-step.webauthn.description": "Use sua chave de seguran\xE7a para autenticar",
3374
3826
  "two-step.webauthn.title": "Chave de Seguran\xE7a",
3827
+ "two-step.webauthn.description": "Use sua chave de seguran\xE7a para autenticar",
3828
+ "two-step.totp.title": "Use seu aplicativo autenticador (TOTP)",
3829
+ "two-step.totp.description": "Use um c\xF3digo \xFAnico de 6 d\xEDgitos do seu aplicativo autenticador",
3830
+ "two-step.lookup_secret.title": "C\xF3digo de recupera\xE7\xE3o de backup",
3831
+ "two-step.lookup_secret.description": "Use um dos seus c\xF3digos de backup de 8 d\xEDgitos para autenticar",
3375
3832
  "identities.messages.1010016": "",
3376
3833
  "identities.messages.1010017": "",
3377
3834
  "identities.messages.1010018": "",
@@ -3446,7 +3903,27 @@ var pt_default = {
3446
3903
  "property.identifier": "",
3447
3904
  "property.password": "",
3448
3905
  "property.phone": "",
3449
- "property.username": ""
3906
+ "property.username": "",
3907
+ "consent.title": "Autorizar {party}",
3908
+ "consent.subtitle": "Um aplicativo de terceiros deseja acessar as informa\xE7\xF5es associadas \xE0 sua conta {identifier}.",
3909
+ "consent.scope.openid.title": "Identidade",
3910
+ "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.",
3911
+ "consent.scope.offline_access.title": "Acesso Offline",
3912
+ "consent.scope.offline_access.description": "Permite que este aplicativo mantenha voc\xEA conectado mesmo quando n\xE3o estiver usando-o ativamente.",
3913
+ "consent.scope.profile.title": "Informa\xE7\xF5es do Perfil",
3914
+ "consent.scope.profile.description": "Permite o acesso aos detalhes b\xE1sicos do seu perfil, incluindo seu nome de usu\xE1rio, primeiro nome e sobrenome.",
3915
+ "consent.scope.email.title": "Endere\xE7o de E-mail",
3916
+ "consent.scope.email.description": "Recupere seu endere\xE7o de e-mail e seu status de verifica\xE7\xE3o.",
3917
+ "consent.scope.address.title": "Endere\xE7o F\xEDsico",
3918
+ "consent.scope.address.description": "Acesse seu endere\xE7o postal.",
3919
+ "consent.scope.phone.title": "N\xFAmero de Telefone",
3920
+ "consent.scope.phone.description": "Recupere seu n\xFAmero de telefone e seu status de verifica\xE7\xE3o.",
3921
+ "error.action.go-back": "",
3922
+ "error.footer.copy": "",
3923
+ "error.footer.text": "",
3924
+ "error.title.what-can-i-do": "",
3925
+ "error.title.what-happened": "",
3926
+ "error.instructions": ""
3450
3927
  };
3451
3928
 
3452
3929
  // src/locales/sv.json
@@ -3472,9 +3949,9 @@ var sv_default = {
3472
3949
  "identities.messages.1010005": "Verifiera",
3473
3950
  "identities.messages.1010006": "Autentiseringskod",
3474
3951
  "identities.messages.1010007": "\xC5terst\xE4llningskod f\xF6r backup",
3475
- "identities.messages.1010008": "Anv\xE4nd s\xE4kerhetsnyckel",
3476
- "identities.messages.1010009": "Anv\xE4nd autentiserings-app",
3477
- "identities.messages.1010010": "Anv\xE4nd reserv\xE5terst\xE4llningskod",
3952
+ "identities.messages.1010008": "Forts\xE4tt med s\xE4kerhetsnyckel",
3953
+ "identities.messages.1010009": "Forts\xE4tt",
3954
+ "identities.messages.1010010": "Forts\xE4tt",
3478
3955
  "identities.messages.1010011": "Forts\xE4tt med s\xE4kerhetsnyckel",
3479
3956
  "identities.messages.1010012": "F\xF6rbered din WebAuthn-enhet (t.ex. s\xE4kerhetsnyckel, biometriska skanner, ...) och tryck p\xE5 forts\xE4tt.",
3480
3957
  "identities.messages.1010013": "Forts\xE4tt",
@@ -3609,7 +4086,15 @@ var sv_default = {
3609
4086
  "login.subtitle-oauth2": "Att autentisera {clientName}",
3610
4087
  "login.title": "Logga in",
3611
4088
  "login.title-aal2": "Tv\xE5faktorsautentisering",
4089
+ "login.subtitle-aal2": "V\xE4lj ett s\xE4tt att slutf\xF6ra din tv\xE5faktorsautentisering",
4090
+ "login.code.subtitle": "En verifieringskod kommer att skickas via e-post",
4091
+ "login.webauthn.subtitle": "F\xF6rbered din WebAuthN-enhet",
4092
+ "login.totp.subtitle": "Ange koden som genererats av din autentiseringsapp",
4093
+ "login.lookup_secret.subtitle": "Ange en av dina 8-siffriga \xE5terst\xE4llningskoder",
3612
4094
  "login.title-refresh": "Bekr\xE4fta att det \xE4r du",
4095
+ "login.2fa.go-back": "N\xE5got fungerar inte?",
4096
+ "login.2fa.go-back.link": "G\xE5 tillbaka",
4097
+ "login.2fa.method.go-back": "V\xE4lj en annan metod",
3613
4098
  "logout.accept-button": "Ja",
3614
4099
  "logout.reject-button": "Nej",
3615
4100
  "logout.title": "Vill du logga ut?",
@@ -3641,8 +4126,12 @@ var sv_default = {
3641
4126
  "two-step.passkey.title": "Passerkod (rekommenderad)",
3642
4127
  "two-step.password.description": "Ange ditt l\xF6senord kopplat till ditt konto",
3643
4128
  "two-step.password.title": "L\xF6senord",
3644
- "two-step.webauthn.description": "Anv\xE4nd din s\xE4kerhetsnyckel f\xF6r att autentisera",
3645
4129
  "two-step.webauthn.title": "S\xE4kerhetsnyckel",
4130
+ "two-step.webauthn.description": "Anv\xE4nd din s\xE4kerhetsnyckel f\xF6r att autentisera",
4131
+ "two-step.totp.title": "Anv\xE4nd din autentiseringsapp (TOTP)",
4132
+ "two-step.totp.description": "Anv\xE4nd en 6-siffrig eng\xE5ngskod fr\xE5n din autentiseringsapp",
4133
+ "two-step.lookup_secret.title": "Reserv\xE5terst\xE4llningskod",
4134
+ "two-step.lookup_secret.description": "Anv\xE4nd en av dina 8-siffriga reservkoder f\xF6r att autentisera",
3646
4135
  "identities.messages.4000037": "Detta konto finns inte eller har ingen inloggningsmetod konfigurerad.",
3647
4136
  "identities.messages.4000038": "Captcha-verifiering misslyckades, f\xF6rs\xF6k igen.",
3648
4137
  "identities.messages.1010020": "",
@@ -3699,7 +4188,27 @@ var sv_default = {
3699
4188
  "property.phone": "telefon",
3700
4189
  "property.username": "anv\xE4ndarnamn",
3701
4190
  "property.identifier": "identifier",
3702
- "property.code": "kod"
4191
+ "property.code": "kod",
4192
+ "consent.title": "Auktorisera {party}",
4193
+ "consent.subtitle": "En tredjepartsapplikation vill f\xE5 tillg\xE5ng till information kopplad till ditt konto {identifier}.",
4194
+ "consent.scope.openid.title": "Identitet",
4195
+ "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.",
4196
+ "consent.scope.offline_access.title": "Offline-\xE5tkomst",
4197
+ "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.",
4198
+ "consent.scope.profile.title": "Profilinformation",
4199
+ "consent.scope.profile.description": "Ger tillg\xE5ng till dina grundl\xE4ggande profiluppgifter, inklusive ditt anv\xE4ndarnamn, f\xF6rnamn och efternamn.",
4200
+ "consent.scope.email.title": "E-postadress",
4201
+ "consent.scope.email.description": "H\xE4mta din e-postadress och dess verifieringsstatus.",
4202
+ "consent.scope.address.title": "Fysisk adress",
4203
+ "consent.scope.address.description": "F\xE5 \xE5tkomst till din postadress.",
4204
+ "consent.scope.phone.title": "Telefonnummer",
4205
+ "consent.scope.phone.description": "H\xE4mta ditt telefonnummer och dess verifieringsstatus.",
4206
+ "error.action.go-back": "",
4207
+ "error.footer.copy": "",
4208
+ "error.footer.text": "",
4209
+ "error.title.what-can-i-do": "",
4210
+ "error.title.what-happened": "",
4211
+ "error.instructions": ""
3703
4212
  };
3704
4213
 
3705
4214
  // src/locales/index.ts
@@ -3714,6 +4223,6 @@ var OryLocales = {
3714
4223
  sv: sv_default
3715
4224
  };
3716
4225
 
3717
- export { HeadlessPageHeader, OryCard, OryCardContent, OryCardFooter, OryCardHeader, OryCardValidationMessages, OryForm, OryFormGroupDivider, OryFormGroups, OryFormOidcButtons, OryFormSection, OryFormSocialButtonsForm, OryLocales, OryProvider, OrySettingsCard, OryTwoStepCard, messageTestId, uiTextToFormattedMessage, useComponents, useNodeSorter, useOryFlow };
4226
+ export { HeadlessPageHeader, OryCard, OryCardContent, OryCardFooter, OryCardHeader, OryCardValidationMessages, OryConsentCard, OryForm, OryFormGroupDivider, OryFormGroups, OryFormOidcButtons, OryFormSection, OryFormSocialButtonsForm, OryLocales, OryProvider, OrySettingsCard, OryTwoStepCard, messageTestId, uiTextToFormattedMessage, useComponents, useNodeSorter, useOryFlow };
3718
4227
  //# sourceMappingURL=index.mjs.map
3719
4228
  //# sourceMappingURL=index.mjs.map