@ory/elements-react 1.0.0-next.40 → 1.0.0-next.43

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.
@@ -41,7 +41,6 @@ function DefaultCardContent({ children }) {
41
41
  // src/theme/default/components/card/footer.tsx
42
42
  import { FlowType } from "@ory/client-fetch";
43
43
  import { useComponents, useOryFlow } from "@ory/elements-react";
44
- import { useFormContext } from "react-hook-form";
45
44
  import { useIntl } from "react-intl";
46
45
 
47
46
  // src/theme/default/utils/url.ts
@@ -89,6 +88,10 @@ function appendRefresh(url, refresh) {
89
88
  }
90
89
 
91
90
  // src/util/ui/index.ts
91
+ import {
92
+ isUiNodeInputAttributes as isUiNodeInputAttributes2,
93
+ isUiNodeScriptAttributes
94
+ } from "@ory/client-fetch";
92
95
  import { UiNodeGroupEnum as UiNodeGroupEnum2 } from "@ory/client-fetch";
93
96
  import { useMemo } from "react";
94
97
 
@@ -146,6 +149,13 @@ var findNode = (nodes, opt) => nodes.find((n) => {
146
149
  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);
147
150
  });
148
151
 
152
+ // src/util/nodes.ts
153
+ function findScreenSelectionButton(nodes) {
154
+ return nodes.find(
155
+ (node) => node.attributes.node_type === "input" && node.attributes.type === "submit" && node.attributes.name === "screen"
156
+ );
157
+ }
158
+
149
159
  // src/theme/default/components/card/footer.tsx
150
160
  import { Fragment, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
151
161
  function DefaultCardFooter() {
@@ -239,60 +249,45 @@ function LoginCardFooter() {
239
249
  ] })
240
250
  ] });
241
251
  }
242
- function findScreenSelectionButton(nodes) {
243
- return nodes.find(
244
- (node) => node.attributes.node_type === "input" && node.attributes.type === "submit" && node.attributes.name === "screen"
245
- );
246
- }
247
252
  function RegistrationCardFooter() {
248
253
  const intl = useIntl();
249
254
  const { config, flow, formState } = useOryFlow();
250
- const { setValue } = useFormContext();
251
- if (formState.current === "select_method") {
252
- return null;
253
- }
254
255
  const screenSelectionNode = findScreenSelectionButton(flow.ui.nodes);
255
- function handleScreenSelection() {
256
- setValue("method", "profile");
257
- if (screenSelectionNode) {
258
- setValue(
259
- screenSelectionNode.attributes.name,
260
- screenSelectionNode.attributes.value
261
- );
262
- }
256
+ switch (formState.current) {
257
+ case "method_active":
258
+ return /* @__PURE__ */ jsx5("span", { className: "font-normal leading-normal antialiased", children: screenSelectionNode && /* @__PURE__ */ jsx5(
259
+ "a",
260
+ {
261
+ className: "font-medium text-button-link-brand-brand hover:text-button-link-brand-brand-hover",
262
+ href: "",
263
+ children: intl.formatMessage({
264
+ id: "card.footer.select-another-method",
265
+ defaultMessage: "Select another method"
266
+ })
267
+ }
268
+ ) });
269
+ case "select_method":
270
+ default:
271
+ return /* @__PURE__ */ jsxs4("span", { className: "font-normal leading-normal antialiased", children: [
272
+ intl.formatMessage({
273
+ id: "registration.login-label",
274
+ defaultMessage: "Already have an account?"
275
+ }),
276
+ " ",
277
+ /* @__PURE__ */ jsx5(
278
+ "a",
279
+ {
280
+ className: "text-button-link-brand-brand transition-colors hover:text-button-link-brand-brand-hover underline",
281
+ href: initFlowUrl(config.sdk.url, "login", flow),
282
+ "data-testid": "ory/screen/registration/action/login",
283
+ children: intl.formatMessage({
284
+ id: "registration.login-button",
285
+ defaultMessage: "Sign in"
286
+ })
287
+ }
288
+ )
289
+ ] });
263
290
  }
264
- return /* @__PURE__ */ jsx5("span", { className: "font-normal leading-normal antialiased", children: formState.current === "method_active" ? /* @__PURE__ */ jsx5(Fragment, { children: screenSelectionNode && /* @__PURE__ */ jsx5(
265
- "button",
266
- {
267
- className: "font-medium text-button-link-brand-brand hover:text-button-link-brand-brand-hover",
268
- type: "submit",
269
- name: screenSelectionNode.attributes.name,
270
- value: screenSelectionNode.attributes.value,
271
- onClick: handleScreenSelection,
272
- children: intl.formatMessage({
273
- id: "card.footer.select-another-method",
274
- defaultMessage: "Select another method"
275
- })
276
- }
277
- ) }) : /* @__PURE__ */ jsxs4(Fragment, { children: [
278
- intl.formatMessage({
279
- id: "registration.login-label",
280
- defaultMessage: "Already have an account?"
281
- }),
282
- " ",
283
- /* @__PURE__ */ jsx5(
284
- "a",
285
- {
286
- className: "text-button-link-brand-brand transition-colors hover:text-button-link-brand-brand-hover underline",
287
- href: initFlowUrl(config.sdk.url, "login", flow),
288
- "data-testid": "ory/screen/registration/action/login",
289
- children: intl.formatMessage({
290
- id: "registration.login-button",
291
- defaultMessage: "Sign in"
292
- })
293
- }
294
- )
295
- ] }) });
296
291
  }
297
292
  function RecoveryCardFooter() {
298
293
  return null;
@@ -352,7 +347,7 @@ import { useComponents as useComponents2, useOryFlow as useOryFlow3 } from "@ory
352
347
  // src/theme/default/utils/constructCardHeader.ts
353
348
  import {
354
349
  FlowType as FlowType2,
355
- isUiNodeInputAttributes as isUiNodeInputAttributes2
350
+ isUiNodeInputAttributes as isUiNodeInputAttributes3
356
351
  } from "@ory/client-fetch";
357
352
  import { useIntl as useIntl2 } from "react-intl";
358
353
  function joinWithCommaOr(list, orText = "or") {
@@ -480,7 +475,7 @@ function useCardHeaderText(container, opts) {
480
475
  }
481
476
  if (nodes.find((node) => node.group === "identifier_first")) {
482
477
  const identifier = nodes.find(
483
- (node) => isUiNodeInputAttributes2(node.attributes) && node.attributes.name.startsWith("identifier") && node.attributes.type !== "hidden"
478
+ (node) => isUiNodeInputAttributes3(node.attributes) && node.attributes.name.startsWith("identifier") && node.attributes.type !== "hidden"
484
479
  );
485
480
  if (identifier) {
486
481
  parts.push(
@@ -581,7 +576,10 @@ function useCardHeaderText(container, opts) {
581
576
  }
582
577
 
583
578
  // src/theme/default/components/card/current-identifier-button.tsx
584
- import { FlowType as FlowType3 } from "@ory/client-fetch";
579
+ import {
580
+ FlowType as FlowType3,
581
+ isUiNodeInputAttributes as isUiNodeInputAttributes4
582
+ } from "@ory/client-fetch";
585
583
  import { useOryFlow as useOryFlow2 } from "@ory/elements-react";
586
584
 
587
585
  // src/theme/default/assets/icons/arrow-left.svg
@@ -603,9 +601,11 @@ function omit(obj, keys) {
603
601
  }
604
602
 
605
603
  // src/theme/default/components/card/current-identifier-button.tsx
604
+ import { useFormContext } from "react-hook-form";
606
605
  import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
607
606
  function DefaultCurrentIdentifierButton() {
608
607
  const { flow, flowType, config, formState } = useOryFlow2();
608
+ const { setValue } = useFormContext();
609
609
  const ui = flow.ui;
610
610
  if (formState.current === "provide_identifier") {
611
611
  return null;
@@ -613,26 +613,78 @@ function DefaultCurrentIdentifierButton() {
613
613
  if (flowType === FlowType3.Login && flow.requested_aal === "aal2") {
614
614
  return null;
615
615
  }
616
- const nodeBackButton = getBackButtonNode(flowType, ui.nodes);
617
- if ((nodeBackButton == null ? void 0 : nodeBackButton.attributes.node_type) !== "input" || !nodeBackButton.attributes.value) {
616
+ const nodeBackButton = getBackButtonNodeAttributes(flowType, ui.nodes);
617
+ if (!nodeBackButton) {
618
618
  return null;
619
619
  }
620
620
  const initFlowUrl2 = restartFlowUrl(
621
621
  flow,
622
622
  `${config.sdk.url}/self-service/${flowType}/browser`
623
623
  );
624
- const attributes = omit(nodeBackButton.attributes, [
624
+ const attributes = omit(nodeBackButton, [
625
625
  "autocomplete",
626
626
  "node_type",
627
627
  "maxlength"
628
628
  ]);
629
+ const screenSelectionNode = findScreenSelectionButton(flow.ui.nodes);
630
+ if (screenSelectionNode) {
631
+ return /* @__PURE__ */ jsxs5("form", { action: flow.ui.action, method: flow.ui.method, children: [
632
+ flow.ui.nodes.filter((n) => {
633
+ if (isUiNodeInputAttributes4(n.attributes)) {
634
+ return n.attributes.type === "hidden";
635
+ }
636
+ return false;
637
+ }).map((n) => {
638
+ const attrs = n.attributes;
639
+ return /* @__PURE__ */ jsx7(
640
+ "input",
641
+ {
642
+ type: "hidden",
643
+ name: attrs.name,
644
+ value: attrs.value
645
+ },
646
+ attrs.name
647
+ );
648
+ }),
649
+ /* @__PURE__ */ jsx7(
650
+ "button",
651
+ {
652
+ className: "group inline-flex max-w-full cursor-pointer items-center gap-1 self-start rounded-identifier border px-[11px] py-[5px] transition-colors border-button-identifier-border-border-default bg-button-identifier-background-default hover:border-button-identifier-border-border-hover hover:bg-button-identifier-background-hover",
653
+ ...attributes,
654
+ type: "submit",
655
+ onClick: () => {
656
+ setValue(
657
+ screenSelectionNode.attributes.name,
658
+ screenSelectionNode.attributes.value
659
+ );
660
+ setValue("method", "profile");
661
+ },
662
+ name: screenSelectionNode.attributes.name,
663
+ value: screenSelectionNode.attributes.value,
664
+ title: `Adjust ${nodeBackButton == null ? void 0 : nodeBackButton.value}`,
665
+ "data-testid": "ory/screen/login/action/restart",
666
+ children: /* @__PURE__ */ jsxs5("span", { className: "inline-flex min-h-5 items-center gap-2 overflow-hidden text-ellipsis", children: [
667
+ /* @__PURE__ */ jsx7(
668
+ arrow_left_default,
669
+ {
670
+ size: 16,
671
+ stroke: "1",
672
+ className: "shrink-0 text-button-identifier-foreground-default group-hover:text-button-identifier-foreground-hover"
673
+ }
674
+ ),
675
+ /* @__PURE__ */ jsx7("span", { className: "overflow-hidden text-ellipsis text-nowrap text-sm font-medium text-button-identifier-foreground-default group-hover:text-button-identifier-foreground-hover", children: nodeBackButton == null ? void 0 : nodeBackButton.value })
676
+ ] })
677
+ }
678
+ )
679
+ ] });
680
+ }
629
681
  return /* @__PURE__ */ jsx7(
630
682
  "a",
631
683
  {
632
684
  className: "group inline-flex max-w-full cursor-pointer items-center gap-1 self-start rounded-identifier border px-[11px] py-[5px] transition-colors border-button-identifier-border-border-default bg-button-identifier-background-default hover:border-button-identifier-border-border-hover hover:bg-button-identifier-background-hover",
633
685
  ...attributes,
634
686
  href: initFlowUrl2,
635
- title: `Adjust ${nodeBackButton == null ? void 0 : nodeBackButton.attributes.value}`,
687
+ title: `Adjust ${nodeBackButton == null ? void 0 : nodeBackButton.value}`,
636
688
  "data-testid": "ory/screen/login/action/restart",
637
689
  children: /* @__PURE__ */ jsxs5("span", { className: "inline-flex min-h-5 items-center gap-2 overflow-hidden text-ellipsis", children: [
638
690
  /* @__PURE__ */ jsx7(
@@ -643,30 +695,34 @@ function DefaultCurrentIdentifierButton() {
643
695
  className: "shrink-0 text-button-identifier-foreground-default group-hover:text-button-identifier-foreground-hover"
644
696
  }
645
697
  ),
646
- /* @__PURE__ */ jsx7("span", { className: "overflow-hidden text-ellipsis text-nowrap text-sm font-medium text-button-identifier-foreground-default group-hover:text-button-identifier-foreground-hover", children: nodeBackButton == null ? void 0 : nodeBackButton.attributes.value })
698
+ /* @__PURE__ */ jsx7("span", { className: "overflow-hidden text-ellipsis text-nowrap text-sm font-medium text-button-identifier-foreground-default group-hover:text-button-identifier-foreground-hover", children: nodeBackButton == null ? void 0 : nodeBackButton.value })
647
699
  ] })
648
700
  }
649
701
  );
650
702
  }
651
- function getBackButtonNode(flowType, nodes) {
652
- let nodeBackButton;
703
+ function getBackButtonNodeAttributes(flowType, nodes) {
704
+ var _a, _b;
705
+ let nodeBackButtonAttributes;
653
706
  switch (flowType) {
654
707
  case FlowType3.Login:
655
- nodeBackButton = nodes.find(
656
- (node) => "name" in node.attributes && node.attributes.name === "identifier" && ["default", "identifier_first"].includes(node.group)
657
- );
708
+ nodeBackButtonAttributes = (_a = nodes.find(
709
+ (node) => isUiNodeInputAttributes4(node.attributes) && node.attributes.name === "identifier" && ["default", "identifier_first"].includes(node.group)
710
+ )) == null ? void 0 : _a.attributes;
658
711
  break;
659
712
  case FlowType3.Registration:
660
- nodeBackButton = guessRegistrationBackButton(nodes);
713
+ nodeBackButtonAttributes = guessRegistrationBackButton(nodes);
661
714
  break;
662
715
  case FlowType3.Recovery:
663
716
  case FlowType3.Verification:
664
- nodeBackButton = nodes.find(
665
- (n) => "name" in n.attributes && n.attributes.name === "email"
666
- );
717
+ nodeBackButtonAttributes = (_b = nodes.find(
718
+ (n) => isUiNodeInputAttributes4(n.attributes) && n.attributes.name === "email"
719
+ )) == null ? void 0 : _b.attributes;
667
720
  break;
668
721
  }
669
- return nodeBackButton;
722
+ if ((nodeBackButtonAttributes == null ? void 0 : nodeBackButtonAttributes.node_type) !== "input" || !(nodeBackButtonAttributes == null ? void 0 : nodeBackButtonAttributes.value)) {
723
+ return void 0;
724
+ }
725
+ return nodeBackButtonAttributes;
670
726
  }
671
727
  var backButtonCandiates = [
672
728
  "traits.email",
@@ -674,9 +730,10 @@ var backButtonCandiates = [
674
730
  "traits.phone_number"
675
731
  ];
676
732
  function guessRegistrationBackButton(uiNodes) {
677
- return uiNodes.find(
678
- (node) => "name" in node.attributes && backButtonCandiates.includes(node.attributes.name) && node.group === "default"
679
- );
733
+ var _a;
734
+ return (_a = uiNodes.find(
735
+ (node) => isUiNodeInputAttributes4(node.attributes) && backButtonCandiates.includes(node.attributes.name) && node.group === "default"
736
+ )) == null ? void 0 : _a.attributes;
680
737
  }
681
738
 
682
739
  // src/theme/default/components/card/header.tsx
@@ -1024,6 +1081,7 @@ function DefaultButtonSocial({
1024
1081
  setClicked(false);
1025
1082
  }
1026
1083
  }, [isSubmitting, setClicked]);
1084
+ const label = node.meta.label ? uiTextToFormattedMessage(node.meta.label, intl) : "";
1027
1085
  return /* @__PURE__ */ jsxs19(
1028
1086
  "button",
1029
1087
  {
@@ -1036,10 +1094,11 @@ function DefaultButtonSocial({
1036
1094
  onClick: localOnClick,
1037
1095
  "data-loading": clicked,
1038
1096
  disabled: isSubmitting,
1097
+ "aria-label": label,
1039
1098
  children: [
1040
1099
  /* @__PURE__ */ jsx27("span", { className: "size-5 relative", children: !clicked ? Logo ? /* @__PURE__ */ jsx27(Logo, { size: 20 }) : /* @__PURE__ */ jsx27("span", { className: "flex aspect-square items-center justify-center rounded-[999px] border text-xs", children: provider.slice(0, 2) }) : /* @__PURE__ */ jsx27(Spinner, { className: "size-5" }) }),
1041
1100
  showLabel && node.meta.label ? /* @__PURE__ */ jsxs19(Fragment2, { children: [
1042
- /* @__PURE__ */ jsx27("span", { className: "grow text-center font-medium leading-none text-button-social-foreground-default", children: uiTextToFormattedMessage(node.meta.label, intl) }),
1101
+ /* @__PURE__ */ jsx27("span", { className: "grow text-center font-medium leading-none text-button-social-foreground-default", children: label }),
1043
1102
  /* @__PURE__ */ jsx27("span", { className: "size-5 block" })
1044
1103
  ] }) : null
1045
1104
  ]
@@ -1543,9 +1602,26 @@ var DefaultCheckbox = ({
1543
1602
  // src/theme/default/components/form/group-container.tsx
1544
1603
  import { useOryFlow as useOryFlow7 } from "@ory/elements-react";
1545
1604
  import { FlowType as FlowType5 } from "@ory/client-fetch";
1605
+
1606
+ // src/util/childCounter.ts
1607
+ import { Children, isValidElement } from "react";
1608
+ function countRenderableChildren(children) {
1609
+ return Children.toArray(children).filter((c) => {
1610
+ if (isValidElement(c)) {
1611
+ return true;
1612
+ }
1613
+ return false;
1614
+ }).length;
1615
+ }
1616
+
1617
+ // src/theme/default/components/form/group-container.tsx
1546
1618
  import { jsx as jsx40 } from "react/jsx-runtime";
1547
1619
  function DefaultGroupContainer({ children }) {
1548
1620
  const { flowType } = useOryFlow7();
1621
+ const count = countRenderableChildren(children);
1622
+ if (count === 0) {
1623
+ return null;
1624
+ }
1549
1625
  return /* @__PURE__ */ jsx40(
1550
1626
  "div",
1551
1627
  {
@@ -1566,8 +1642,9 @@ function DefaultHorizontalDivider() {
1566
1642
 
1567
1643
  // src/theme/default/components/form/image.tsx
1568
1644
  import { jsx as jsx42 } from "react/jsx-runtime";
1569
- function DefaultImage({ attributes }) {
1570
- return /* @__PURE__ */ jsx42("figure", { children: /* @__PURE__ */ jsx42("img", { ...attributes }) });
1645
+ function DefaultImage({ attributes, node }) {
1646
+ var _a;
1647
+ return /* @__PURE__ */ jsx42("figure", { children: /* @__PURE__ */ jsx42("img", { ...attributes, alt: ((_a = node.meta.label) == null ? void 0 : _a.text) || "" }) });
1571
1648
  }
1572
1649
 
1573
1650
  // src/theme/default/components/form/input.tsx
@@ -1699,6 +1776,7 @@ function PasswordToggle({
1699
1776
  onClick: handleClick,
1700
1777
  className: "absolute right-0 h-full w-12 flex items-center justify-center",
1701
1778
  type: "button",
1779
+ "aria-label": "Toggle password visibility",
1702
1780
  children: shown ? /* @__PURE__ */ jsx45(eye_off_default, {}) : /* @__PURE__ */ jsx45(eye_default, {})
1703
1781
  }
1704
1782
  );
@@ -2176,7 +2254,7 @@ var UserMenu = ({ session }) => {
2176
2254
  const initials = getUserInitials(session);
2177
2255
  const logoutFlow = useClientLogout(config);
2178
2256
  return /* @__PURE__ */ jsxs30(DropdownMenu, { children: [
2179
- /* @__PURE__ */ jsx57(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx57(UserAvatar, { initials }) }),
2257
+ /* @__PURE__ */ jsx57(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx57(UserAvatar, { initials, title: "User Menu" }) }),
2180
2258
  /* @__PURE__ */ jsxs30(DropdownMenuContent, { children: [
2181
2259
  /* @__PURE__ */ jsxs30(DropdownMenuLabel2, { className: "flex gap-3 px-5 py-4.5", children: [
2182
2260
  /* @__PURE__ */ jsx57(UserAvatar, { disabled: true, initials }),
@@ -2715,7 +2793,7 @@ function DefaultAuthMethodListContainer({
2715
2793
  }
2716
2794
 
2717
2795
  // src/theme/default/components/form/captcha.tsx
2718
- import { isUiNodeInputAttributes as isUiNodeInputAttributes3 } from "@ory/client-fetch";
2796
+ import { isUiNodeInputAttributes as isUiNodeInputAttributes5 } from "@ory/client-fetch";
2719
2797
  import { Turnstile } from "@marsidev/react-turnstile";
2720
2798
  import { useRef as useRef2 } from "react";
2721
2799
  import { useFormContext as useFormContext13 } from "react-hook-form";
@@ -2724,14 +2802,14 @@ var DefaultCaptcha = ({ node }) => {
2724
2802
  const { setValue } = useFormContext13();
2725
2803
  const ref = useRef2();
2726
2804
  const nodes = [];
2727
- if (isUiNodeInputAttributes3(node.attributes)) {
2805
+ if (isUiNodeInputAttributes5(node.attributes)) {
2728
2806
  if (node.attributes.name === "transient_payload.captcha_turnstile_response") {
2729
2807
  nodes.push(
2730
2808
  /* @__PURE__ */ jsx70(DefaultInput, { node, attributes: node.attributes }, 1)
2731
2809
  );
2732
2810
  }
2733
2811
  }
2734
- if (isUiNodeInputAttributes3(node.attributes) && node.attributes.name === "captcha_turnstile_options") {
2812
+ if (isUiNodeInputAttributes5(node.attributes) && node.attributes.name === "captcha_turnstile_options") {
2735
2813
  const options = JSON.parse(node.attributes.value);
2736
2814
  nodes.push(
2737
2815
  /* @__PURE__ */ jsx70(
@@ -2924,10 +3002,10 @@ import { UiNodeGroupEnum as UiNodeGroupEnum6 } from "@ory/client-fetch";
2924
3002
  import { FormProvider, useForm } from "react-hook-form";
2925
3003
 
2926
3004
  // src/components/form/form-helpers.ts
2927
- import { isUiNodeInputAttributes as isUiNodeInputAttributes4 } from "@ory/client-fetch";
3005
+ import { isUiNodeInputAttributes as isUiNodeInputAttributes6 } from "@ory/client-fetch";
2928
3006
 
2929
3007
  // src/components/form/form-resolver.ts
2930
- import { isUiNodeInputAttributes as isUiNodeInputAttributes5 } from "@ory/client-fetch";
3008
+ import { isUiNodeInputAttributes as isUiNodeInputAttributes7 } from "@ory/client-fetch";
2931
3009
 
2932
3010
  // src/components/form/form-provider.tsx
2933
3011
  import { jsx as jsx78 } from "react/jsx-runtime";
@@ -2943,8 +3021,8 @@ import { jsx as jsx81 } from "react/jsx-runtime";
2943
3021
 
2944
3022
  // src/components/card/card-two-step.tsx
2945
3023
  import {
2946
- isUiNodeInputAttributes as isUiNodeInputAttributes8,
2947
- isUiNodeScriptAttributes as isUiNodeScriptAttributes3,
3024
+ isUiNodeInputAttributes as isUiNodeInputAttributes10,
3025
+ isUiNodeScriptAttributes as isUiNodeScriptAttributes4,
2948
3026
  UiNodeGroupEnum as UiNodeGroupEnum11,
2949
3027
  UiNodeInputAttributesTypeEnum as UiNodeInputAttributesTypeEnum2
2950
3028
  } from "@ory/client-fetch";
@@ -2955,8 +3033,8 @@ import {
2955
3033
  FlowType as FlowType17,
2956
3034
  isUiNodeAnchorAttributes,
2957
3035
  isUiNodeImageAttributes,
2958
- isUiNodeInputAttributes as isUiNodeInputAttributes6,
2959
- isUiNodeScriptAttributes
3036
+ isUiNodeInputAttributes as isUiNodeInputAttributes8,
3037
+ isUiNodeScriptAttributes as isUiNodeScriptAttributes2
2960
3038
  } from "@ory/client-fetch";
2961
3039
  import { useFormContext as useFormContext15 } from "react-hook-form";
2962
3040
  import { useIntl as useIntl14 } from "react-intl";
@@ -3028,8 +3106,8 @@ import { jsx as jsx84 } from "react/jsx-runtime";
3028
3106
  import {
3029
3107
  isUiNodeAnchorAttributes as isUiNodeAnchorAttributes2,
3030
3108
  isUiNodeImageAttributes as isUiNodeImageAttributes2,
3031
- isUiNodeInputAttributes as isUiNodeInputAttributes7,
3032
- isUiNodeScriptAttributes as isUiNodeScriptAttributes2,
3109
+ isUiNodeInputAttributes as isUiNodeInputAttributes9,
3110
+ isUiNodeScriptAttributes as isUiNodeScriptAttributes3,
3033
3111
  isUiNodeTextAttributes,
3034
3112
  UiNodeGroupEnum as UiNodeGroupEnum9
3035
3113
  } from "@ory/client-fetch";
@@ -3043,7 +3121,7 @@ import { useFormContext as useFormContext17 } from "react-hook-form";
3043
3121
  import { jsx as jsx86 } from "react/jsx-runtime";
3044
3122
 
3045
3123
  // src/components/card/card-two-step.tsx
3046
- import { Fragment as Fragment7, jsx as jsx87, jsxs as jsxs38 } from "react/jsx-runtime";
3124
+ import { jsx as jsx87, jsxs as jsxs38 } from "react/jsx-runtime";
3047
3125
 
3048
3126
  // src/components/form/groups.tsx
3049
3127
  import { jsx as jsx88 } from "react/jsx-runtime";
@@ -3063,36 +3141,39 @@ import { jsx as jsx91 } from "react/jsx-runtime";
3063
3141
  import { jsx as jsx92 } from "react/jsx-runtime";
3064
3142
 
3065
3143
  // src/components/settings/settings-card.tsx
3066
- import { UiNodeGroupEnum as UiNodeGroupEnum13 } from "@ory/client-fetch";
3144
+ import {
3145
+ isUiNodeScriptAttributes as isUiNodeScriptAttributes5,
3146
+ UiNodeGroupEnum as UiNodeGroupEnum13
3147
+ } from "@ory/client-fetch";
3067
3148
  import { useIntl as useIntl20 } from "react-intl";
3068
3149
 
3069
3150
  // src/components/settings/oidc-settings.tsx
3070
3151
  import { useIntl as useIntl15 } from "react-intl";
3071
3152
  import { useFormContext as useFormContext20 } from "react-hook-form";
3072
- import { Fragment as Fragment8, jsx as jsx93, jsxs as jsxs40 } from "react/jsx-runtime";
3153
+ import { Fragment as Fragment7, jsx as jsx93, jsxs as jsxs40 } from "react/jsx-runtime";
3073
3154
 
3074
3155
  // src/components/settings/passkey-settings.tsx
3075
3156
  import { useFormContext as useFormContext21 } from "react-hook-form";
3076
3157
  import { useIntl as useIntl16 } from "react-intl";
3077
- import { Fragment as Fragment9, jsx as jsx94, jsxs as jsxs41 } from "react/jsx-runtime";
3158
+ import { Fragment as Fragment8, jsx as jsx94, jsxs as jsxs41 } from "react/jsx-runtime";
3078
3159
 
3079
3160
  // src/components/settings/recovery-codes-settings.tsx
3080
3161
  import { useIntl as useIntl17 } from "react-intl";
3081
3162
  import { useFormContext as useFormContext22 } from "react-hook-form";
3082
- import { Fragment as Fragment10, jsx as jsx95, jsxs as jsxs42 } from "react/jsx-runtime";
3163
+ import { Fragment as Fragment9, jsx as jsx95, jsxs as jsxs42 } from "react/jsx-runtime";
3083
3164
 
3084
3165
  // src/components/settings/totp-settings.tsx
3085
3166
  import { useFormContext as useFormContext23 } from "react-hook-form";
3086
3167
  import { useIntl as useIntl18 } from "react-intl";
3087
- import { Fragment as Fragment11, jsx as jsx96, jsxs as jsxs43 } from "react/jsx-runtime";
3168
+ import { Fragment as Fragment10, jsx as jsx96, jsxs as jsxs43 } from "react/jsx-runtime";
3088
3169
 
3089
3170
  // src/components/settings/webauthn-settings.tsx
3090
3171
  import { useFormContext as useFormContext24 } from "react-hook-form";
3091
3172
  import { useIntl as useIntl19 } from "react-intl";
3092
- import { Fragment as Fragment12, jsx as jsx97, jsxs as jsxs44 } from "react/jsx-runtime";
3173
+ import { Fragment as Fragment11, jsx as jsx97, jsxs as jsxs44 } from "react/jsx-runtime";
3093
3174
 
3094
3175
  // src/components/settings/settings-card.tsx
3095
- import { Fragment as Fragment13, jsx as jsx98, jsxs as jsxs45 } from "react/jsx-runtime";
3176
+ import { Fragment as Fragment12, jsx as jsx98, jsxs as jsxs45 } from "react/jsx-runtime";
3096
3177
 
3097
3178
  // src/locales/en.json
3098
3179
  var en_default = {
@@ -3547,7 +3628,7 @@ var de_default = {
3547
3628
  "two-step.code.description": "Ein Best\xE4tigungscode wird an Ihre E-Mail gesendet.",
3548
3629
  "two-step.code.title": "E-Mail-Code",
3549
3630
  "two-step.passkey.description": "Verwenden Sie die Fingerabdruck- oder Gesichtserkennung Ihres Ger\xE4ts",
3550
- "two-step.passkey.title": "Passwort (empfohlen)",
3631
+ "two-step.passkey.title": "Passkey (empfohlen)",
3551
3632
  "two-step.password.description": "Geben Sie Ihr Passwort ein, das mit Ihrem Konto verkn\xFCpft ist",
3552
3633
  "two-step.password.title": "Passwort",
3553
3634
  "two-step.webauthn.title": "Sicherheitsschl\xFCssel",
@@ -5648,7 +5729,7 @@ import {
5648
5729
  OryProvider as OryProvider4,
5649
5730
  OrySettingsCard
5650
5731
  } from "@ory/elements-react";
5651
- import { Fragment as Fragment14, jsx as jsx104, jsxs as jsxs47 } from "react/jsx-runtime";
5732
+ import { Fragment as Fragment13, jsx as jsx104, jsxs as jsxs47 } from "react/jsx-runtime";
5652
5733
  function Settings({
5653
5734
  flow,
5654
5735
  config,
@@ -5663,7 +5744,7 @@ function Settings({
5663
5744
  flow,
5664
5745
  flowType: FlowType21.Settings,
5665
5746
  components,
5666
- children: children != null ? children : /* @__PURE__ */ jsxs47(Fragment14, { children: [
5747
+ children: children != null ? children : /* @__PURE__ */ jsxs47(Fragment13, { children: [
5667
5748
  /* @__PURE__ */ jsx104(HeadlessPageHeader, {}),
5668
5749
  /* @__PURE__ */ jsx104(OrySettingsCard, {})
5669
5750
  ] })