@ory/elements-react 1.0.0-rc.1 → 1.0.0-rc.2

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/CHANGELOG.md CHANGED
@@ -1,3 +1,35 @@
1
+ ## 1.0.0-rc.2 (2025-04-30)
2
+
3
+ ### 🚀 Features
4
+
5
+ - method translation for totp, code, webauthn ([#500](https://github.com/ory/elements/pull/500))
6
+ - add all missing stories ([#480](https://github.com/ory/elements/pull/480))
7
+ - preview deployments for example apps ([#488](https://github.com/ory/elements/pull/488))
8
+ - add back button to settings page ([#464](https://github.com/ory/elements/pull/464))
9
+
10
+ ### 🩹 Fixes
11
+
12
+ - ⚠️ align configuration types to Ory Network APIs ([#423](https://github.com/ory/elements/pull/423))
13
+ - sort captcha before submit button ([#507](https://github.com/ory/elements/pull/507))
14
+ - cors credentials in default client ([#508](https://github.com/ory/elements/pull/508))
15
+ - back button should return to application ([#465](https://github.com/ory/elements/pull/465))
16
+ - adjust design of generic OIDC provider ([#492](https://github.com/ory/elements/pull/492))
17
+ - use proper id for react element arrays ([#495](https://github.com/ory/elements/pull/495))
18
+ - add test id to header messages ([#489](https://github.com/ory/elements/pull/489))
19
+ - re-add missing error message when no methods provided ([#460](https://github.com/ory/elements/pull/460))
20
+ - resend not working for registration ([#468](https://github.com/ory/elements/pull/468))
21
+ - add missing color class to registration footer ([#473](https://github.com/ory/elements/pull/473))
22
+ - resend not working for registration ([#467](https://github.com/ory/elements/pull/467))
23
+
24
+ ### ⚠️ Breaking Changes
25
+
26
+ - ⚠️ align configuration types to Ory Network APIs ([#423](https://github.com/ory/elements/pull/423))
27
+
28
+ ### ❤️ Thank You
29
+
30
+ - hackerman @aeneasr
31
+ - Jonas Hungershausen
32
+
1
33
  ## 1.0.0-rc.1 (2025-04-21)
2
34
 
3
35
  ### 🩹 Fixes
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { UiNodeInputAttributes, UiNode, UiNodeAnchorAttributes, UiNodeTextAttributes, UiNodeImageAttributes, UiNodeGroupEnum, UiText, ConfigurationParameters, FlowType, LoginFlow, RegistrationFlow, RecoveryFlow, VerificationFlow, SettingsFlow, UiContainer, OAuth2ConsentRequest, Session, FlowError, UpdateLoginFlowBody, UpdateRegistrationFlowBody, UpdateVerificationFlowBody, UpdateRecoveryFlowBody, UpdateSettingsFlowBody, OnRedirectHandler } from '@ory/client-fetch';
1
+ import { UiNodeInputAttributes, UiNode, UiNodeAnchorAttributes, UiNodeTextAttributes, UiNodeImageAttributes, UiNodeGroupEnum, UiText, ConfigurationParameters, AccountExperienceConfiguration, FlowType, LoginFlow, RegistrationFlow, RecoveryFlow, VerificationFlow, SettingsFlow, UiContainer, OAuth2ConsentRequest, Session, FlowError, UpdateLoginFlowBody, UpdateRegistrationFlowBody, UpdateVerificationFlowBody, UpdateRecoveryFlowBody, UpdateSettingsFlowBody, OnRedirectHandler } from '@ory/client-fetch';
2
2
  import { ComponentPropsWithoutRef, FormEventHandler, MouseEventHandler, PropsWithChildren, DetailedHTMLProps, HTMLAttributes, ComponentType, Dispatch } from 'react';
3
3
  import * as class_variance_authority_types from 'class-variance-authority/types';
4
4
  import { VariantProps } from 'class-variance-authority';
@@ -394,33 +394,60 @@ type IntlContextProps = {
394
394
  };
395
395
 
396
396
  type IntlConfig = IntlContextProps;
397
+ /**
398
+ * The configuration for Ory Elements.
399
+ *
400
+ * This configuration is used to customize the behavior and appearance of Ory Elements.
401
+ *
402
+ * By setting UI urls, you can override the default URLs for the login, registration, recovery, and verification flows.
403
+ *
404
+ * You can also set the name of the application, the logo URL, and the SDK configuration.
405
+ * By default, the name and logo are displayed in the card's header.
406
+ */
397
407
  type OryClientConfiguration = {
398
- /**
399
- * The name of the application the user is logging in to.
400
- */
401
- name: string;
402
408
  /**
403
409
  * An optional logo URL to display in the UI instead of the name.
410
+ * @deprecated Use `project.logo_light_url` instead.
404
411
  */
405
412
  logoUrl?: string;
406
- stylesheet?: string;
407
- favicon?: string;
413
+ /**
414
+ * The SDK configuration.
415
+ * This configuration is used to set the URL of the Ory SDK and any additional options used for the SDK client.
416
+ */
408
417
  sdk: {
409
418
  url: string;
410
419
  options?: Partial<ConfigurationParameters>;
411
420
  };
412
- project: {
413
- registration_enabled: boolean;
414
- verification_enabled: boolean;
415
- recovery_enabled: boolean;
416
- recovery_ui_url: string;
417
- registration_ui_url: string;
418
- verification_ui_url: string;
419
- login_ui_url: string;
420
- default_redirect_url?: string;
421
- };
421
+ /**
422
+ * The internationalization configuration.
423
+ * This configuration is used to set the locale and any additional options used for the i18n library.
424
+ * The locale is used to determine the language of the UI.
425
+ * The default locale is "en".
426
+ */
422
427
  intl?: IntlConfig;
423
- };
428
+ } & ({
429
+ /**
430
+ * The name of the application the user is logging in to.
431
+ * @deprecated Use `project.name` instead.
432
+ */
433
+ name: string;
434
+ /**
435
+ * The configuration for the project.
436
+ */
437
+ project: Omit<AccountExperienceConfiguration, "name"> & {
438
+ name?: string;
439
+ };
440
+ } | {
441
+ /**
442
+ * The name of the application the user is logging in to.
443
+ * @deprecated Use `project.name` instead.
444
+ */
445
+ name?: string;
446
+ /**
447
+ * The configuration for the project.
448
+ */
449
+ project: AccountExperienceConfiguration;
450
+ });
424
451
 
425
452
  /**
426
453
  * A generic flow container, containing a flowType, the flow itself and the config object
@@ -486,6 +513,7 @@ type ConsentFlow = {
486
513
  ui: UiContainer;
487
514
  consent_request: OAuth2ConsentRequest;
488
515
  session: Session;
516
+ return_to?: string;
489
517
  };
490
518
  type ConsentFlowContainer = OryFlow<FlowType.OAuth2Consent, ConsentFlow>;
491
519
  /**
@@ -561,7 +589,9 @@ type OnSubmitHandlerProps<T extends UpdateLoginFlowBody | UpdateRegistrationFlow
561
589
  * @param message - the UiText message to generate a test id for
562
590
  * @returns a unique, stable test id for the message
563
591
  */
564
- declare function messageTestId(message: UiText): {
592
+ declare function messageTestId(message: {
593
+ id: number | string;
594
+ }): {
565
595
  "data-testid": string;
566
596
  };
567
597
 
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { UiNodeInputAttributes, UiNode, UiNodeAnchorAttributes, UiNodeTextAttributes, UiNodeImageAttributes, UiNodeGroupEnum, UiText, ConfigurationParameters, FlowType, LoginFlow, RegistrationFlow, RecoveryFlow, VerificationFlow, SettingsFlow, UiContainer, OAuth2ConsentRequest, Session, FlowError, UpdateLoginFlowBody, UpdateRegistrationFlowBody, UpdateVerificationFlowBody, UpdateRecoveryFlowBody, UpdateSettingsFlowBody, OnRedirectHandler } from '@ory/client-fetch';
1
+ import { UiNodeInputAttributes, UiNode, UiNodeAnchorAttributes, UiNodeTextAttributes, UiNodeImageAttributes, UiNodeGroupEnum, UiText, ConfigurationParameters, AccountExperienceConfiguration, FlowType, LoginFlow, RegistrationFlow, RecoveryFlow, VerificationFlow, SettingsFlow, UiContainer, OAuth2ConsentRequest, Session, FlowError, UpdateLoginFlowBody, UpdateRegistrationFlowBody, UpdateVerificationFlowBody, UpdateRecoveryFlowBody, UpdateSettingsFlowBody, OnRedirectHandler } from '@ory/client-fetch';
2
2
  import { ComponentPropsWithoutRef, FormEventHandler, MouseEventHandler, PropsWithChildren, DetailedHTMLProps, HTMLAttributes, ComponentType, Dispatch } from 'react';
3
3
  import * as class_variance_authority_types from 'class-variance-authority/types';
4
4
  import { VariantProps } from 'class-variance-authority';
@@ -394,33 +394,60 @@ type IntlContextProps = {
394
394
  };
395
395
 
396
396
  type IntlConfig = IntlContextProps;
397
+ /**
398
+ * The configuration for Ory Elements.
399
+ *
400
+ * This configuration is used to customize the behavior and appearance of Ory Elements.
401
+ *
402
+ * By setting UI urls, you can override the default URLs for the login, registration, recovery, and verification flows.
403
+ *
404
+ * You can also set the name of the application, the logo URL, and the SDK configuration.
405
+ * By default, the name and logo are displayed in the card's header.
406
+ */
397
407
  type OryClientConfiguration = {
398
- /**
399
- * The name of the application the user is logging in to.
400
- */
401
- name: string;
402
408
  /**
403
409
  * An optional logo URL to display in the UI instead of the name.
410
+ * @deprecated Use `project.logo_light_url` instead.
404
411
  */
405
412
  logoUrl?: string;
406
- stylesheet?: string;
407
- favicon?: string;
413
+ /**
414
+ * The SDK configuration.
415
+ * This configuration is used to set the URL of the Ory SDK and any additional options used for the SDK client.
416
+ */
408
417
  sdk: {
409
418
  url: string;
410
419
  options?: Partial<ConfigurationParameters>;
411
420
  };
412
- project: {
413
- registration_enabled: boolean;
414
- verification_enabled: boolean;
415
- recovery_enabled: boolean;
416
- recovery_ui_url: string;
417
- registration_ui_url: string;
418
- verification_ui_url: string;
419
- login_ui_url: string;
420
- default_redirect_url?: string;
421
- };
421
+ /**
422
+ * The internationalization configuration.
423
+ * This configuration is used to set the locale and any additional options used for the i18n library.
424
+ * The locale is used to determine the language of the UI.
425
+ * The default locale is "en".
426
+ */
422
427
  intl?: IntlConfig;
423
- };
428
+ } & ({
429
+ /**
430
+ * The name of the application the user is logging in to.
431
+ * @deprecated Use `project.name` instead.
432
+ */
433
+ name: string;
434
+ /**
435
+ * The configuration for the project.
436
+ */
437
+ project: Omit<AccountExperienceConfiguration, "name"> & {
438
+ name?: string;
439
+ };
440
+ } | {
441
+ /**
442
+ * The name of the application the user is logging in to.
443
+ * @deprecated Use `project.name` instead.
444
+ */
445
+ name?: string;
446
+ /**
447
+ * The configuration for the project.
448
+ */
449
+ project: AccountExperienceConfiguration;
450
+ });
424
451
 
425
452
  /**
426
453
  * A generic flow container, containing a flowType, the flow itself and the config object
@@ -486,6 +513,7 @@ type ConsentFlow = {
486
513
  ui: UiContainer;
487
514
  consent_request: OAuth2ConsentRequest;
488
515
  session: Session;
516
+ return_to?: string;
489
517
  };
490
518
  type ConsentFlowContainer = OryFlow<FlowType.OAuth2Consent, ConsentFlow>;
491
519
  /**
@@ -561,7 +589,9 @@ type OnSubmitHandlerProps<T extends UpdateLoginFlowBody | UpdateRegistrationFlow
561
589
  * @param message - the UiText message to generate a test id for
562
590
  * @returns a unique, stable test id for the message
563
591
  */
564
- declare function messageTestId(message: UiText): {
592
+ declare function messageTestId(message: {
593
+ id: number | string;
594
+ }): {
565
595
  "data-testid": string;
566
596
  };
567
597
 
package/dist/index.js CHANGED
@@ -50,13 +50,18 @@ var defaultNodeOrder = [
50
50
  ];
51
51
  function defaultNodeSorter(a, b) {
52
52
  var _a, _b;
53
+ const aIsCaptcha = a.group === "captcha";
54
+ const bIsCaptcha = b.group === "captcha";
55
+ const aIsSubmit = clientFetch.isUiNodeInputAttributes(a.attributes) && a.attributes.type === "submit";
56
+ const bIsSubmit = clientFetch.isUiNodeInputAttributes(b.attributes) && b.attributes.type === "submit";
57
+ if (aIsCaptcha && bIsSubmit) {
58
+ return -1;
59
+ }
60
+ if (bIsCaptcha && aIsSubmit) {
61
+ return 1;
62
+ }
53
63
  const aGroupWeight = (_a = defaultNodeOrder.indexOf(a.group)) != null ? _a : 999;
54
64
  const bGroupWeight = (_b = defaultNodeOrder.indexOf(b.group)) != null ? _b : 999;
55
- if (b.group === "captcha" && clientFetch.isUiNodeInputAttributes(a.attributes) && a.attributes.type === "submit") {
56
- return aGroupWeight - (bGroupWeight - 2);
57
- } else if (a.group === "captcha" && clientFetch.isUiNodeInputAttributes(b.attributes) && b.attributes.type === "submit") {
58
- return aGroupWeight - 2 - bGroupWeight;
59
- }
60
65
  return aGroupWeight - bGroupWeight;
61
66
  }
62
67
  var defaultGroupOrder = [
@@ -565,6 +570,7 @@ function frontendClient(sdkUrl, opts = {}) {
565
570
  const config = new clientFetch.Configuration({
566
571
  ...opts,
567
572
  basePath: sdkUrl,
573
+ credentials: "include",
568
574
  headers: {
569
575
  Accept: "application/json",
570
576
  ...opts.headers
@@ -1180,7 +1186,7 @@ function OryFormOidcButtons() {
1180
1186
  if (filteredNodes.length === 0) {
1181
1187
  return null;
1182
1188
  }
1183
- return /* @__PURE__ */ jsxRuntime.jsx(Form.OidcRoot, { nodes: filteredNodes, children: filteredNodes.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(
1189
+ return /* @__PURE__ */ jsxRuntime.jsx(Form.OidcRoot, { nodes: filteredNodes, children: filteredNodes.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
1184
1190
  Node2.OidcButton,
1185
1191
  {
1186
1192
  node,
@@ -1193,7 +1199,7 @@ function OryFormOidcButtons() {
1193
1199
  setValue("method", node.group);
1194
1200
  }
1195
1201
  },
1196
- k
1202
+ clientFetch.getNodeId(node)
1197
1203
  )) });
1198
1204
  }
1199
1205
  function OryFormSocialButtonsForm() {
@@ -1410,8 +1416,8 @@ function OryFormGroups({ groups }) {
1410
1416
  const { flowType } = useOryFlow();
1411
1417
  const { Form } = useComponents();
1412
1418
  const nodes = ui.nodes.filter((node) => groups.indexOf(node.group) > -1).sort((a, b) => nodeSorter(a, b, { flowType }));
1413
- return /* @__PURE__ */ jsxRuntime.jsx(Form.Group, { children: nodes.map((node, k) => {
1414
- return /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k);
1419
+ return /* @__PURE__ */ jsxRuntime.jsx(Form.Group, { children: nodes.map((node) => {
1420
+ return /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node));
1415
1421
  }) });
1416
1422
  }
1417
1423
  function OryFormSection({
@@ -1447,7 +1453,7 @@ function OryConsentCard() {
1447
1453
  /* @__PURE__ */ jsxRuntime.jsx(OryCardHeader, {}),
1448
1454
  /* @__PURE__ */ jsxRuntime.jsx(OryCardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs(OryForm, { children: [
1449
1455
  /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
1450
- /* @__PURE__ */ jsxRuntime.jsx(Form.Group, { children: flow.flow.ui.nodes.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k)) }),
1456
+ /* @__PURE__ */ jsxRuntime.jsx(Form.Group, { children: flow.flow.ui.nodes.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node))) }),
1451
1457
  /* @__PURE__ */ jsxRuntime.jsx(Card.Divider, {}),
1452
1458
  /* @__PURE__ */ jsxRuntime.jsx(OryCardFooter, {})
1453
1459
  ] }) })
@@ -1818,7 +1824,7 @@ function SettingsSectionContent({ group, nodes }) {
1818
1824
  "data-testid": "ory/screen/settings/group/totp",
1819
1825
  children: [
1820
1826
  /* @__PURE__ */ jsxRuntime.jsx(OrySettingsTotp, { nodes: (_a = groupedNodes.groups.totp) != null ? _a : [] }),
1821
- (_b = groupedNodes.groups.default) == null ? void 0 : _b.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1827
+ (_b = groupedNodes.groups.default) == null ? void 0 : _b.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1822
1828
  ]
1823
1829
  }
1824
1830
  );
@@ -1836,7 +1842,7 @@ function SettingsSectionContent({ group, nodes }) {
1836
1842
  nodes: (_c = groupedNodes.groups.lookup_secret) != null ? _c : []
1837
1843
  }
1838
1844
  ),
1839
- (_d = groupedNodes.groups.default) == null ? void 0 : _d.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1845
+ (_d = groupedNodes.groups.default) == null ? void 0 : _d.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1840
1846
  ]
1841
1847
  }
1842
1848
  );
@@ -1849,7 +1855,7 @@ function SettingsSectionContent({ group, nodes }) {
1849
1855
  "data-testid": "ory/screen/settings/group/oidc",
1850
1856
  children: [
1851
1857
  /* @__PURE__ */ jsxRuntime.jsx(OrySettingsOidc, { nodes: (_e = groupedNodes.groups.oidc) != null ? _e : [] }),
1852
- (_f = groupedNodes.groups.default) == null ? void 0 : _f.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1858
+ (_f = groupedNodes.groups.default) == null ? void 0 : _f.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1853
1859
  ]
1854
1860
  }
1855
1861
  );
@@ -1862,7 +1868,7 @@ function SettingsSectionContent({ group, nodes }) {
1862
1868
  "data-testid": "ory/screen/settings/group/webauthn",
1863
1869
  children: [
1864
1870
  /* @__PURE__ */ jsxRuntime.jsx(OrySettingsWebauthn, { nodes: (_g = groupedNodes.groups.webauthn) != null ? _g : [] }),
1865
- (_h = groupedNodes.groups.default) == null ? void 0 : _h.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1871
+ (_h = groupedNodes.groups.default) == null ? void 0 : _h.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1866
1872
  ]
1867
1873
  }
1868
1874
  );
@@ -1875,7 +1881,7 @@ function SettingsSectionContent({ group, nodes }) {
1875
1881
  "data-testid": "ory/screen/settings/group/passkey",
1876
1882
  children: [
1877
1883
  /* @__PURE__ */ jsxRuntime.jsx(OrySettingsPasskey, { nodes: (_i = groupedNodes.groups.passkey) != null ? _i : [] }),
1878
- (_j = groupedNodes.groups.default) == null ? void 0 : _j.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1884
+ (_j = groupedNodes.groups.default) == null ? void 0 : _j.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1879
1885
  ]
1880
1886
  }
1881
1887
  );
@@ -1896,16 +1902,16 @@ function SettingsSectionContent({ group, nodes }) {
1896
1902
  id: `settings.${group}.description`
1897
1903
  }),
1898
1904
  children: [
1899
- (_k = groupedNodes.groups.default) == null ? void 0 : _k.map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k)),
1905
+ (_k = groupedNodes.groups.default) == null ? void 0 : _k.map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node))),
1900
1906
  nodes.filter(
1901
1907
  (node) => "type" in node.attributes && node.attributes.type !== "submit"
1902
- ).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k))
1908
+ ).map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node)))
1903
1909
  ]
1904
1910
  }
1905
1911
  ),
1906
1912
  /* @__PURE__ */ jsxRuntime.jsx(Card.SettingsSectionFooter, { children: nodes.filter(
1907
1913
  (node) => "type" in node.attributes && node.attributes.type === "submit"
1908
- ).map((node, k) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, k)) })
1914
+ ).map((node) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node }, clientFetch.getNodeId(node))) })
1909
1915
  ]
1910
1916
  }
1911
1917
  );
@@ -1919,7 +1925,7 @@ function OrySettingsCard() {
1919
1925
  const scriptNodes = onlyScriptNodes(flow.ui.nodes);
1920
1926
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1921
1927
  /* @__PURE__ */ jsxRuntime.jsx(OryCardValidationMessages, {}),
1922
- scriptNodes.map((n) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node: n })),
1928
+ scriptNodes.map((n) => /* @__PURE__ */ jsxRuntime.jsx(Node, { node: n }, clientFetch.getNodeId(n))),
1923
1929
  uniqueGroups.entries.map(([group, nodes]) => {
1924
1930
  if (group === clientFetch.UiNodeGroupEnum.Default) {
1925
1931
  return null;
@@ -2226,9 +2232,11 @@ var en_default = {
2226
2232
  "card.header.parts.oidc": "a social provider",
2227
2233
  "card.header.parts.password.registration": "your {identifierLabel} and a password",
2228
2234
  "card.header.parts.password.login": "your {identifierLabel} and password",
2229
- "card.header.parts.code": "a code sent to your email",
2235
+ "card.header.parts.code": "a code sent to you",
2230
2236
  "card.header.parts.passkey": "a Passkey",
2231
2237
  "card.header.parts.webauthn": "a security key",
2238
+ "card.header.parts.totp": "your authenticator app",
2239
+ "card.header.parts.lookup_secret": "a backup recovery code",
2232
2240
  "card.header.parts.identifier-first": "your {identifierLabel}",
2233
2241
  "card.header.description.login": "Sign in with {identifierLabel}",
2234
2242
  "card.header.description.registration": "Sign up with {identifierLabel}",
@@ -2476,13 +2484,15 @@ var de_default = {
2476
2484
  "identities.messages.4010009": "Die Authentifizierungsmethode stimmt nicht mit der vorherigen Authentifizierungsmethode \xFCberein. Bitte versuchen Sie es erneut.",
2477
2485
  "identities.messages.4010010": "Die eingegebene Adresse stimmt nicht mit der Adresse \xFCberein, die Sie bei der Registrierung angegeben haben. Bitte versuchen Sie es erneut.",
2478
2486
  "input.placeholder": "{placeholder} eingeben",
2479
- "card.header.parts.code": "einem Code per E-Mail",
2487
+ "card.header.parts.code": "ein an Sie gesendeter Code",
2480
2488
  "card.header.parts.identifier-first": "Ihr {identifierLabel}",
2481
2489
  "card.header.parts.oidc": "ein sozialer Anbieter",
2482
2490
  "card.header.parts.passkey": "ein Passkey",
2483
2491
  "card.header.parts.password.login": "Ihrer {identifierLabel} und Ihrem Passwort",
2484
2492
  "card.header.parts.password.registration": "Ihrer {identifierLabel} und einem Passwort",
2485
2493
  "card.header.parts.webauthn": "ein Sicherheitsschl\xFCssel",
2494
+ "card.header.parts.totp": "deine Authentifikator-App",
2495
+ "card.header.parts.lookup_secret": "ein Backup-Wiederherstellungscode",
2486
2496
  "recovery.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um einen einmaligen Zugangscode zu erhalten",
2487
2497
  "verification.subtitle": "Geben Sie die mit Ihrem Konto verkn\xFCpfte E-Mail-Adresse ein, um es zu best\xE4tigen",
2488
2498
  "card.header.description.login": "Melden Sie sich mit {identifierLabel} an",
@@ -2821,6 +2831,8 @@ var es_default = {
2821
2831
  "card.header.parts.code": "un c\xF3digo enviado a tu correo electr\xF3nico",
2822
2832
  "card.header.parts.passkey": "una clave de acceso",
2823
2833
  "card.header.parts.webauthn": "una clave de seguridad",
2834
+ "card.header.parts.totp": "su aplicaci\xF3n de autenticaci\xF3n",
2835
+ "card.header.parts.lookup_secret": "un c\xF3digo de recuperaci\xF3n de copia de seguridad",
2824
2836
  "card.header.parts.identifier-first": "tu {identifierLabel}",
2825
2837
  "card.header.description.login": "Iniciar sesi\xF3n con {identifierLabel}",
2826
2838
  "card.header.description.registration": "Registrarse con {identifierLabel}",
@@ -3098,10 +3110,12 @@ var fr_default = {
3098
3110
  "card.header.parts.oidc": "un fournisseur de r\xE9seaux sociaux",
3099
3111
  "card.header.parts.password.registration": "votre {identifierLabel} et un mot de passe",
3100
3112
  "card.header.parts.password.login": "votre {identifierLabel} et votre mot de passe",
3101
- "card.header.parts.code": "un code envoy\xE9 \xE0 votre adresse e-mail",
3102
3113
  "card.header.parts.passkey": "une cl\xE9 d'acc\xE8s",
3103
3114
  "card.header.parts.webauthn": "une cl\xE9 de s\xE9curit\xE9",
3104
3115
  "card.header.parts.identifier-first": "votre {identifierLabel}",
3116
+ "card.header.parts.code": "un code qui vous a \xE9t\xE9 envoy\xE9",
3117
+ "card.header.parts.totp": "votre application d'authentification",
3118
+ "card.header.parts.lookup_secret": "un code de r\xE9cup\xE9ration de secours",
3105
3119
  "card.header.description.login": "Se connecter avec {identifierLabel}",
3106
3120
  "card.header.description.registration": "S'inscrire avec {identifierLabel}",
3107
3121
  "misc.or": "ou",
@@ -3344,7 +3358,9 @@ var nl_default = {
3344
3358
  "input.placeholder": "",
3345
3359
  "card.header.description.login": "",
3346
3360
  "card.header.description.registration": "",
3347
- "card.header.parts.code": "",
3361
+ "card.header.parts.code": "een code die naar je is verzonden",
3362
+ "card.header.parts.totp": "je authenticator-app",
3363
+ "card.header.parts.lookup_secret": "een backup herstelcode",
3348
3364
  "card.header.parts.identifier-first": "",
3349
3365
  "card.header.parts.oidc": "",
3350
3366
  "card.header.parts.passkey": "",
@@ -3629,13 +3645,15 @@ var pl_default = {
3629
3645
  "input.placeholder": "",
3630
3646
  "card.header.description.login": "",
3631
3647
  "card.header.description.registration": "",
3632
- "card.header.parts.code": "",
3633
3648
  "card.header.parts.identifier-first": "",
3634
3649
  "card.header.parts.oidc": "",
3635
3650
  "card.header.parts.passkey": "",
3636
3651
  "card.header.parts.password.login": "",
3637
3652
  "card.header.parts.password.registration": "",
3638
3653
  "card.header.parts.webauthn": "",
3654
+ "card.header.parts.code": "kod wys\u0142any do Ciebie",
3655
+ "card.header.parts.totp": "Twoja aplikacja uwierzytelniaj\u0105ca",
3656
+ "card.header.parts.lookup_secret": "kod odzyskiwania kopii zapasowej",
3639
3657
  "forms.label.forgot-password": "",
3640
3658
  "login.subtitle": "",
3641
3659
  "login.subtitle-refresh": "",
@@ -3914,7 +3932,9 @@ var pt_default = {
3914
3932
  "input.placeholder": "",
3915
3933
  "card.header.description.login": "",
3916
3934
  "card.header.description.registration": "",
3917
- "card.header.parts.code": "",
3935
+ "card.header.parts.code": "um c\xF3digo enviado para voc\xEA",
3936
+ "card.header.parts.totp": "seu aplicativo autenticador",
3937
+ "card.header.parts.lookup_secret": "um c\xF3digo de recupera\xE7\xE3o de backup",
3918
3938
  "card.header.parts.identifier-first": "",
3919
3939
  "card.header.parts.oidc": "",
3920
3940
  "card.header.parts.passkey": "",
@@ -4199,7 +4219,9 @@ var sv_default = {
4199
4219
  "input.placeholder": "Ange din {placeholder}",
4200
4220
  "card.header.description.login": "Logga in med {identifierLabel}",
4201
4221
  "card.header.description.registration": "Registrera dig med {identifierLabel}",
4202
- "card.header.parts.code": "en kod skickad till din e-post",
4222
+ "card.header.parts.code": "en kod skickad till dig",
4223
+ "card.header.parts.totp": "din autentiseringsapp",
4224
+ "card.header.parts.lookup_secret": "en s\xE4kerhetskopieringskod",
4203
4225
  "card.header.parts.identifier-first": "din {identifierLabel}",
4204
4226
  "card.header.parts.oidc": "en social leverant\xF6r",
4205
4227
  "card.header.parts.passkey": "en Passkey",