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