@wise/dynamic-flow-client-internal 5.9.2 → 5.11.0

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/build/main.mjs CHANGED
@@ -126,7 +126,7 @@ import { useMemo as useMemo2 } from "react";
126
126
  // src/dynamicFlow/telemetry/app-version.ts
127
127
  var appVersion = (
128
128
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
129
- typeof process !== "undefined" ? "5.9.2" : "0.0.0"
129
+ typeof process !== "undefined" ? "5.11.0" : "0.0.0"
130
130
  );
131
131
 
132
132
  // src/dynamicFlow/telemetry/getLogEvent.ts
@@ -291,6 +291,11 @@ function AddressValidationButtonComponent(props) {
291
291
  setSpinny(false);
292
292
  }
293
293
  }, [stepLoadingState]);
294
+ const onBlur = () => {
295
+ if (stepLoadingState === "idle") {
296
+ setSpinny(false);
297
+ }
298
+ };
294
299
  return /* @__PURE__ */ jsxs("div", { className: `d-flex flex-column ${getMargin(margin)}`, children: [
295
300
  /* @__PURE__ */ jsx3(
296
301
  Button,
@@ -305,6 +310,7 @@ function AddressValidationButtonComponent(props) {
305
310
  setSpinny(true);
306
311
  onClick();
307
312
  },
313
+ onBlur,
308
314
  children: title
309
315
  }
310
316
  ),
@@ -671,6 +677,11 @@ function ButtonComponent(props) {
671
677
  setSpinny(false);
672
678
  }
673
679
  }, [stepLoadingState]);
680
+ const onBlur = () => {
681
+ if (stepLoadingState === "idle") {
682
+ setSpinny(false);
683
+ }
684
+ };
674
685
  const loading = spinny && stepLoadingState !== "idle";
675
686
  const buttonProps = {
676
687
  v2: true,
@@ -685,6 +696,7 @@ function ButtonComponent(props) {
685
696
  loading,
686
697
  size: control === "small" ? "sm" : mapLegacyButtonSize(size),
687
698
  sentiment: getSentiment(context),
699
+ onBlur,
688
700
  onClick: () => {
689
701
  setSpinny(true);
690
702
  onClick();
@@ -1341,26 +1353,18 @@ var ExternalConfirmationRenderer = {
1341
1353
  };
1342
1354
  function ExternalConfirmationRendererComponent({
1343
1355
  url,
1344
- status,
1345
- onSuccess,
1346
- onFailure,
1356
+ visible,
1357
+ open,
1347
1358
  onCancel
1348
1359
  }) {
1349
1360
  const { formatMessage } = useIntl5();
1350
1361
  useEffect3(() => {
1351
- if (url && status === "initial") {
1352
- const w = window.open(url, "_blank");
1353
- if (w) {
1354
- onSuccess();
1355
- } else {
1356
- onFailure();
1357
- }
1358
- }
1362
+ open();
1359
1363
  }, []);
1360
1364
  return /* @__PURE__ */ jsx31(
1361
1365
  Modal,
1362
1366
  {
1363
- open: status === "failure",
1367
+ open: visible,
1364
1368
  title: formatMessage(external_confirmation_messages_default.title),
1365
1369
  body: /* @__PURE__ */ jsxs6(Fragment4, { children: [
1366
1370
  /* @__PURE__ */ jsx31(Markdown2, { config: { link: { target: "_blank" } }, className: "text-xs-center m-b-5", children: formatMessage(external_confirmation_messages_default.description, { origin: getOrigin(url) }) }),
@@ -1374,8 +1378,7 @@ function ExternalConfirmationRendererComponent({
1374
1378
  priority: "primary",
1375
1379
  size: "md",
1376
1380
  onClick: () => {
1377
- window.open(url);
1378
- onCancel();
1381
+ open();
1379
1382
  },
1380
1383
  children: formatMessage(external_confirmation_messages_default.open)
1381
1384
  }
@@ -3522,64 +3525,122 @@ function TopBar({ back, toolbar }) {
3522
3525
  ] }) : null;
3523
3526
  }
3524
3527
 
3528
+ // ../renderers/src/step/StepFooter.tsx
3529
+ import { Button as Button8 } from "@transferwise/components";
3530
+ import { useEffect as useEffect9, useRef, useState as useState11 } from "react";
3531
+ import { useIntl as useIntl15 } from "react-intl";
3532
+
3533
+ // ../renderers/src/messages/step.messages.ts
3534
+ import { defineMessages as defineMessages12 } from "react-intl";
3535
+ var step_messages_default = defineMessages12({
3536
+ scrollToBottom: {
3537
+ id: "df.wise.step.scrollToBottom",
3538
+ defaultMessage: "Scroll to bottom",
3539
+ description: "Label for a button that appears when the content of a step is too long and the user needs to scroll to the bottom to see all the content."
3540
+ }
3541
+ });
3542
+
3543
+ // ../renderers/src/step/StepFooter.tsx
3544
+ import { Fragment as Fragment13, jsx as jsx78, jsxs as jsxs28 } from "react/jsx-runtime";
3545
+ var SCROLL_TO_BOTTOM = "scroll-to-bottom";
3546
+ var StepFooter = ({ footer, tags }) => {
3547
+ if (tags == null ? void 0 : tags.includes(SCROLL_TO_BOTTOM)) {
3548
+ return /* @__PURE__ */ jsx78(FooterWithScrollButton, { footer });
3549
+ }
3550
+ return /* @__PURE__ */ jsx78(DefaultFooter, { footer });
3551
+ };
3552
+ var DefaultFooter = ({ footer }) => {
3553
+ const hasFooter = footer && Array.isArray(footer) && footer.length > 0;
3554
+ return hasFooter ? /* @__PURE__ */ jsx78("div", { className: "df-step-fixed__footer", children: footer }) : void 0;
3555
+ };
3556
+ var FooterWithScrollButton = ({ footer }) => {
3557
+ const { formatMessage } = useIntl15();
3558
+ const endOfLayoutRef = useRef(null);
3559
+ const isElementVisible = useIsElementVisible(endOfLayoutRef);
3560
+ const scrollButton = /* @__PURE__ */ jsx78(
3561
+ Button8,
3562
+ {
3563
+ className: "m-b-1",
3564
+ v2: true,
3565
+ block: true,
3566
+ priority: "tertiary",
3567
+ onClick: () => {
3568
+ var _a;
3569
+ (_a = endOfLayoutRef.current) == null ? void 0 : _a.scrollIntoView({ behavior: "smooth" });
3570
+ },
3571
+ children: formatMessage(step_messages_default.scrollToBottom)
3572
+ }
3573
+ );
3574
+ const hasStepFooterContent = footer && Array.isArray(footer) && footer.length > 0;
3575
+ if (isElementVisible && !hasStepFooterContent) {
3576
+ return /* @__PURE__ */ jsx78("div", { ref: endOfLayoutRef, "aria-hidden": "true" });
3577
+ }
3578
+ return /* @__PURE__ */ jsxs28(Fragment13, { children: [
3579
+ /* @__PURE__ */ jsx78("div", { ref: endOfLayoutRef, "aria-hidden": "true" }),
3580
+ /* @__PURE__ */ jsxs28("div", { className: "df-step-fixed__footer", children: [
3581
+ !isElementVisible && scrollButton,
3582
+ footer
3583
+ ] })
3584
+ ] });
3585
+ };
3586
+ var useIsElementVisible = (elementRef) => {
3587
+ const [isVisible, setIsVisible] = useState11(false);
3588
+ useEffect9(() => {
3589
+ const element = elementRef.current;
3590
+ if (!element) return;
3591
+ const observer = new IntersectionObserver(([entry]) => {
3592
+ setIsVisible(entry.isIntersecting);
3593
+ });
3594
+ observer.observe(element);
3595
+ return () => observer.disconnect();
3596
+ }, [elementRef]);
3597
+ return isVisible;
3598
+ };
3599
+
3525
3600
  // ../renderers/src/step/SplashCelebrationStepRenderer.tsx
3526
- import { jsx as jsx78, jsxs as jsxs28 } from "react/jsx-runtime";
3601
+ import { jsx as jsx79, jsxs as jsxs29 } from "react/jsx-runtime";
3527
3602
  var SplashCelebrationStepRenderer = {
3528
3603
  canRenderType: "step",
3529
3604
  canRender: ({ control }) => control === "splash-celebration",
3530
3605
  render: SplashCelebrationStepRendererComponent
3531
3606
  };
3532
3607
  function SplashCelebrationStepRendererComponent(props) {
3533
- const { back, toolbar, children, footer, trackEvent } = props;
3534
- const hasFooter = footer && Array.isArray(footer) && footer.length > 0;
3608
+ const { back, toolbar, children, footer, tags, trackEvent } = props;
3535
3609
  useCustomTheme("forest-green", trackEvent);
3536
- return /* @__PURE__ */ jsxs28("div", { className: "splash-screen m-t-5", children: [
3537
- /* @__PURE__ */ jsx78(TopBar, { back, toolbar }),
3610
+ return /* @__PURE__ */ jsxs29("div", { className: "splash-screen m-t-5", children: [
3611
+ /* @__PURE__ */ jsx79(TopBar, { back, toolbar }),
3538
3612
  children,
3539
- hasFooter ? /* @__PURE__ */ jsx78("div", { className: "df-step-fixed__footer", children: footer }) : void 0
3613
+ /* @__PURE__ */ jsx79(StepFooter, { footer, tags })
3540
3614
  ] });
3541
3615
  }
3542
3616
 
3543
3617
  // ../renderers/src/step/SplashStepRenderer.tsx
3544
- import { jsx as jsx79, jsxs as jsxs29 } from "react/jsx-runtime";
3618
+ import { jsx as jsx80, jsxs as jsxs30 } from "react/jsx-runtime";
3545
3619
  var SplashStepRenderer = {
3546
3620
  canRenderType: "step",
3547
3621
  canRender: ({ control }) => control === "splash",
3548
3622
  render: SplashStepRendererComponent
3549
3623
  };
3550
3624
  function SplashStepRendererComponent(props) {
3551
- const { back, toolbar, children, footer } = props;
3552
- const hasFooter = footer && Array.isArray(footer) && footer.length > 0;
3553
- return /* @__PURE__ */ jsxs29("div", { className: "splash-screen m-t-5", children: [
3554
- /* @__PURE__ */ jsx79(TopBar, { back, toolbar }),
3625
+ const { back, toolbar, children, footer, tags } = props;
3626
+ return /* @__PURE__ */ jsxs30("div", { className: "splash-screen m-t-5", children: [
3627
+ /* @__PURE__ */ jsx80(TopBar, { back, toolbar }),
3555
3628
  children,
3556
- hasFooter ? /* @__PURE__ */ jsx79("div", { className: "df-step-fixed__footer", children: footer }) : void 0
3629
+ /* @__PURE__ */ jsx80(StepFooter, { footer, tags })
3557
3630
  ] });
3558
3631
  }
3559
3632
 
3560
3633
  // ../renderers/src/step/StepRenderer.tsx
3561
- import { Alert as Alert2, Title as Title2 } from "@transferwise/components";
3562
- import { Fragment as Fragment13, jsx as jsx80, jsxs as jsxs30 } from "react/jsx-runtime";
3563
- var StepRenderer = {
3564
- canRenderType: "step",
3565
- render: StepRendererComponent
3566
- };
3567
- function StepRendererComponent(props) {
3568
- const { back, description, error, title, children, toolbar, footer, tags } = props;
3569
- const hasFooter = footer && Array.isArray(footer) && footer.length > 0;
3570
- return /* @__PURE__ */ jsxs30("div", { children: [
3571
- /* @__PURE__ */ jsx80(TopBar, { back, toolbar }),
3572
- title || description ? /* @__PURE__ */ jsx80("div", { className: "m-b-4", children: /* @__PURE__ */ jsx80(Header10, { title, description, tags }) }) : void 0,
3573
- error ? /* @__PURE__ */ jsx80(Alert2, { type: "negative", className: "m-b-2", message: error }) : null,
3574
- children,
3575
- hasFooter ? /* @__PURE__ */ jsx80("div", { className: "df-step-fixed__footer", children: footer }) : void 0
3576
- ] });
3577
- }
3578
- var Header10 = ({ title, description, tags }) => {
3634
+ import { Alert as Alert2 } from "@transferwise/components";
3635
+
3636
+ // ../renderers/src/step/StepHeader.tsx
3637
+ import { Title as Title2 } from "@transferwise/components";
3638
+ import { Fragment as Fragment14, jsx as jsx81, jsxs as jsxs31 } from "react/jsx-runtime";
3639
+ var StepHeader = ({ title, description, tags }) => {
3579
3640
  const { titleType, alignmentClassName } = getHeaderStyle(tags);
3580
- return /* @__PURE__ */ jsxs30(Fragment13, { children: [
3581
- title ? /* @__PURE__ */ jsx80(Title2, { as: "h1", type: titleType, className: `${alignmentClassName} m-b-2`, children: title }) : void 0,
3582
- description ? /* @__PURE__ */ jsx80("p", { className: `${alignmentClassName} np-text-body-large`, children: description }) : void 0
3641
+ return /* @__PURE__ */ jsxs31(Fragment14, { children: [
3642
+ title ? /* @__PURE__ */ jsx81(Title2, { as: "h1", type: titleType, className: `${alignmentClassName} m-b-2`, children: title }) : void 0,
3643
+ description ? /* @__PURE__ */ jsx81("p", { className: `${alignmentClassName} np-text-body-large`, children: description }) : void 0
3583
3644
  ] });
3584
3645
  };
3585
3646
  var getHeaderStyle = (tags) => {
@@ -3589,29 +3650,46 @@ var getHeaderStyle = (tags) => {
3589
3650
  return { titleType: "title-section", alignmentClassName: "text-xs-center" };
3590
3651
  };
3591
3652
 
3653
+ // ../renderers/src/step/StepRenderer.tsx
3654
+ import { jsx as jsx82, jsxs as jsxs32 } from "react/jsx-runtime";
3655
+ var StepRenderer = {
3656
+ canRenderType: "step",
3657
+ render: StepRendererComponent
3658
+ };
3659
+ function StepRendererComponent(props) {
3660
+ const { back, description, error, title, children, toolbar, footer, tags } = props;
3661
+ return /* @__PURE__ */ jsxs32("div", { children: [
3662
+ /* @__PURE__ */ jsx82(TopBar, { back, toolbar }),
3663
+ title || description ? /* @__PURE__ */ jsx82("div", { className: "m-b-4", children: /* @__PURE__ */ jsx82(StepHeader, { title, description, tags }) }) : void 0,
3664
+ error ? /* @__PURE__ */ jsx82(Alert2, { type: "negative", className: "m-b-2", message: error }) : null,
3665
+ children,
3666
+ /* @__PURE__ */ jsx82(StepFooter, { footer, tags })
3667
+ ] });
3668
+ }
3669
+
3592
3670
  // ../renderers/src/TabsRenderer.tsx
3593
3671
  import { Chips, SegmentedControl as SegmentedControl2, Tabs as Tabs2 } from "@transferwise/components";
3594
- import { useState as useState11 } from "react";
3595
- import { jsx as jsx81, jsxs as jsxs31 } from "react/jsx-runtime";
3672
+ import { useState as useState12 } from "react";
3673
+ import { jsx as jsx83, jsxs as jsxs33 } from "react/jsx-runtime";
3596
3674
  var TabsRenderer = {
3597
3675
  canRenderType: "tabs",
3598
3676
  render: (props) => {
3599
3677
  switch (props.control) {
3600
3678
  case "segmented":
3601
3679
  if (props.tabs.length > 3) {
3602
- return /* @__PURE__ */ jsx81(TabsRendererComponent, __spreadValues({}, props));
3680
+ return /* @__PURE__ */ jsx83(TabsRendererComponent, __spreadValues({}, props));
3603
3681
  }
3604
- return /* @__PURE__ */ jsx81(SegmentedTabsRendererComponent, __spreadValues({}, props));
3682
+ return /* @__PURE__ */ jsx83(SegmentedTabsRendererComponent, __spreadValues({}, props));
3605
3683
  case "chips":
3606
- return /* @__PURE__ */ jsx81(ChipsTabsRendererComponent, __spreadValues({}, props));
3684
+ return /* @__PURE__ */ jsx83(ChipsTabsRendererComponent, __spreadValues({}, props));
3607
3685
  default:
3608
- return /* @__PURE__ */ jsx81(TabsRendererComponent, __spreadValues({}, props));
3686
+ return /* @__PURE__ */ jsx83(TabsRendererComponent, __spreadValues({}, props));
3609
3687
  }
3610
3688
  }
3611
3689
  };
3612
3690
  function TabsRendererComponent({ uid, margin, tabs }) {
3613
- const [selectedIndex, setSelectedIndex] = useState11(0);
3614
- return /* @__PURE__ */ jsx81("div", { className: getMargin(margin), children: /* @__PURE__ */ jsx81(
3691
+ const [selectedIndex, setSelectedIndex] = useState12(0);
3692
+ return /* @__PURE__ */ jsx83("div", { className: getMargin(margin), children: /* @__PURE__ */ jsx83(
3615
3693
  Tabs2,
3616
3694
  {
3617
3695
  name: uid,
@@ -3619,7 +3697,7 @@ function TabsRendererComponent({ uid, margin, tabs }) {
3619
3697
  tabs: tabs.map((option) => ({
3620
3698
  title: option.title,
3621
3699
  disabled: false,
3622
- content: /* @__PURE__ */ jsxs31("div", { className: "m-t-2", children: [
3700
+ content: /* @__PURE__ */ jsxs33("div", { className: "m-t-2", children: [
3623
3701
  " ",
3624
3702
  option.children,
3625
3703
  " "
@@ -3631,9 +3709,9 @@ function TabsRendererComponent({ uid, margin, tabs }) {
3631
3709
  }
3632
3710
  function SegmentedTabsRendererComponent({ uid, margin, tabs }) {
3633
3711
  var _a;
3634
- const [selectedIndex, setSelectedIndex] = useState11(0);
3635
- return /* @__PURE__ */ jsxs31("div", { className: getMargin(margin), children: [
3636
- /* @__PURE__ */ jsx81(
3712
+ const [selectedIndex, setSelectedIndex] = useState12(0);
3713
+ return /* @__PURE__ */ jsxs33("div", { className: getMargin(margin), children: [
3714
+ /* @__PURE__ */ jsx83(
3637
3715
  SegmentedControl2,
3638
3716
  {
3639
3717
  name: uid,
@@ -3648,14 +3726,14 @@ function SegmentedTabsRendererComponent({ uid, margin, tabs }) {
3648
3726
  onChange: (value) => setSelectedIndex(Number(value))
3649
3727
  }
3650
3728
  ),
3651
- /* @__PURE__ */ jsx81("div", { id: `${uid}-children`, className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
3729
+ /* @__PURE__ */ jsx83("div", { id: `${uid}-children`, className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
3652
3730
  ] });
3653
3731
  }
3654
3732
  function ChipsTabsRendererComponent({ margin, tabs }) {
3655
3733
  var _a;
3656
- const [selectedIndex, setSelectedIndex] = useState11(0);
3657
- return /* @__PURE__ */ jsxs31("div", { className: getMargin(margin), children: [
3658
- /* @__PURE__ */ jsx81("div", { className: "chips-container", children: /* @__PURE__ */ jsx81(
3734
+ const [selectedIndex, setSelectedIndex] = useState12(0);
3735
+ return /* @__PURE__ */ jsxs33("div", { className: getMargin(margin), children: [
3736
+ /* @__PURE__ */ jsx83("div", { className: "chips-container", children: /* @__PURE__ */ jsx83(
3659
3737
  Chips,
3660
3738
  {
3661
3739
  chips: tabs.map((tab, index) => ({ label: tab.title, value: index })),
@@ -3663,7 +3741,7 @@ function ChipsTabsRendererComponent({ margin, tabs }) {
3663
3741
  onChange: ({ selectedValue }) => setSelectedIndex(Number(selectedValue))
3664
3742
  }
3665
3743
  ) }),
3666
- /* @__PURE__ */ jsx81("div", { className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
3744
+ /* @__PURE__ */ jsx83("div", { className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
3667
3745
  ] });
3668
3746
  }
3669
3747
 
@@ -3678,7 +3756,7 @@ import {
3678
3756
  TextArea,
3679
3757
  TextareaWithDisplayFormat
3680
3758
  } from "@transferwise/components";
3681
- import { jsx as jsx82 } from "react/jsx-runtime";
3759
+ import { jsx as jsx84 } from "react/jsx-runtime";
3682
3760
  var commonKeys = [
3683
3761
  "autoComplete",
3684
3762
  "autoCapitalize",
@@ -3697,12 +3775,12 @@ function VariableTextInput(inputProps) {
3697
3775
  const commonProps = __spreadProps(__spreadValues({}, pick(inputProps, ...commonKeys)), { name: id });
3698
3776
  switch (control) {
3699
3777
  case "email":
3700
- return /* @__PURE__ */ jsx82(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "email", onChange }));
3778
+ return /* @__PURE__ */ jsx84(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "email", onChange }));
3701
3779
  case "password":
3702
- return /* @__PURE__ */ jsx82(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "password", onChange }));
3780
+ return /* @__PURE__ */ jsx84(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "password", onChange }));
3703
3781
  case "numeric": {
3704
3782
  const numericProps = __spreadProps(__spreadValues({}, commonProps), { type: "number", onWheel });
3705
- return /* @__PURE__ */ jsx82(
3783
+ return /* @__PURE__ */ jsx84(
3706
3784
  TextInput,
3707
3785
  __spreadProps(__spreadValues({}, numericProps), {
3708
3786
  onChange: (newValue) => {
@@ -3713,9 +3791,9 @@ function VariableTextInput(inputProps) {
3713
3791
  );
3714
3792
  }
3715
3793
  case "phone-number":
3716
- return /* @__PURE__ */ jsx82(PhoneNumberInput, __spreadProps(__spreadValues({ initialValue: value }, commonProps), { onChange }));
3794
+ return /* @__PURE__ */ jsx84(PhoneNumberInput, __spreadProps(__spreadValues({ initialValue: value }, commonProps), { onChange }));
3717
3795
  default: {
3718
- return /* @__PURE__ */ jsx82(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "text", onChange }));
3796
+ return /* @__PURE__ */ jsx84(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "text", onChange }));
3719
3797
  }
3720
3798
  }
3721
3799
  }
@@ -3723,11 +3801,11 @@ function TextInput(props) {
3723
3801
  const _a = props, { control, displayFormat, onChange } = _a, commonProps = __objRest(_a, ["control", "displayFormat", "onChange"]);
3724
3802
  const InputWithPattern = control === "textarea" ? TextareaWithDisplayFormat : InputWithDisplayFormat;
3725
3803
  const InputWithoutPattern = control === "textarea" ? TextArea : Input5;
3726
- return displayFormat ? /* @__PURE__ */ jsx82(InputWithPattern, __spreadProps(__spreadValues({ displayPattern: displayFormat }, commonProps), { onChange })) : /* @__PURE__ */ jsx82(InputWithoutPattern, __spreadProps(__spreadValues({}, commonProps), { onChange: (e) => onChange(e.target.value) }));
3804
+ return displayFormat ? /* @__PURE__ */ jsx84(InputWithPattern, __spreadProps(__spreadValues({ displayPattern: displayFormat }, commonProps), { onChange })) : /* @__PURE__ */ jsx84(InputWithoutPattern, __spreadProps(__spreadValues({}, commonProps), { onChange: (e) => onChange(e.target.value) }));
3727
3805
  }
3728
3806
 
3729
3807
  // ../renderers/src/TextInputRenderer.tsx
3730
- import { jsx as jsx83 } from "react/jsx-runtime";
3808
+ import { jsx as jsx85 } from "react/jsx-runtime";
3731
3809
  var TextInputRenderer = {
3732
3810
  canRenderType: "input-text",
3733
3811
  render: (props) => {
@@ -3760,7 +3838,7 @@ var TextInputRenderer = {
3760
3838
  }
3761
3839
  }
3762
3840
  });
3763
- return /* @__PURE__ */ jsx83(
3841
+ return /* @__PURE__ */ jsx85(
3764
3842
  FieldInput_default,
3765
3843
  {
3766
3844
  id,
@@ -3768,7 +3846,7 @@ var TextInputRenderer = {
3768
3846
  description,
3769
3847
  validation: validationState,
3770
3848
  help,
3771
- children: /* @__PURE__ */ jsx83(InputGroup4, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx83(VariableTextInput, __spreadValues({}, inputProps)) })
3849
+ children: /* @__PURE__ */ jsx85(InputGroup4, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx85(VariableTextInput, __spreadValues({}, inputProps)) })
3772
3850
  }
3773
3851
  );
3774
3852
  }
@@ -3782,7 +3860,7 @@ import { Status as Status2, Upload, UploadInput as UploadInput2 } from "@transfe
3782
3860
  var getRandomId = () => Math.random().toString(36).substring(2);
3783
3861
 
3784
3862
  // ../renderers/src/UploadInputRenderer.tsx
3785
- import { jsx as jsx84 } from "react/jsx-runtime";
3863
+ import { jsx as jsx86 } from "react/jsx-runtime";
3786
3864
  var UploadInputRenderer = {
3787
3865
  canRenderType: "input-upload",
3788
3866
  render: (props) => {
@@ -3798,14 +3876,14 @@ var UploadInputRenderer = {
3798
3876
  };
3799
3877
  return (
3800
3878
  // We don't pass help here as there is no sensible place to display it
3801
- /* @__PURE__ */ jsx84(
3879
+ /* @__PURE__ */ jsx86(
3802
3880
  UploadFieldInput_default,
3803
3881
  {
3804
3882
  id,
3805
3883
  label: void 0,
3806
3884
  description: void 0,
3807
3885
  validation: validationState,
3808
- children: /* @__PURE__ */ jsx84(
3886
+ children: /* @__PURE__ */ jsx86(
3809
3887
  UploadInput2,
3810
3888
  {
3811
3889
  id,
@@ -3871,7 +3949,7 @@ var LargeUploadRenderer = {
3871
3949
  };
3872
3950
  const filetypes = acceptsToFileTypes(accepts);
3873
3951
  const usAccept = filetypes === "*" ? "*" : filetypes.join(",");
3874
- return /* @__PURE__ */ jsx84(
3952
+ return /* @__PURE__ */ jsx86(
3875
3953
  FieldInput_default,
3876
3954
  {
3877
3955
  id,
@@ -3879,7 +3957,7 @@ var LargeUploadRenderer = {
3879
3957
  description,
3880
3958
  validation: validationState,
3881
3959
  help,
3882
- children: /* @__PURE__ */ jsx84(
3960
+ children: /* @__PURE__ */ jsx86(
3883
3961
  Upload,
3884
3962
  __spreadProps(__spreadValues({}, uploadProps), {
3885
3963
  usAccept,
@@ -3896,24 +3974,27 @@ var LargeUploadRenderer = {
3896
3974
 
3897
3975
  // ../renderers/src/UpsellRenderer.tsx
3898
3976
  import { Nudge } from "@transferwise/components";
3899
- import { useState as useState12 } from "react";
3900
- import { jsx as jsx85 } from "react/jsx-runtime";
3977
+ import { useState as useState13 } from "react";
3978
+ import { jsx as jsx87 } from "react/jsx-runtime";
3901
3979
  var UpsellRenderer = {
3902
3980
  canRenderType: "upsell",
3903
3981
  render: UpsellRendererComponent
3904
3982
  };
3905
3983
  function UpsellRendererComponent(props) {
3906
3984
  const { text, callToAction, media, margin, onDismiss } = props;
3907
- const [isVisible, setIsVisible] = useState12(true);
3908
- return isVisible ? /* @__PURE__ */ jsx85(
3985
+ const [isVisible, setIsVisible] = useState13(true);
3986
+ return isVisible ? /* @__PURE__ */ jsx87(
3909
3987
  Nudge,
3910
3988
  {
3911
3989
  className: getMargin(margin),
3912
3990
  mediaName: getMediaName(media),
3913
3991
  title: text,
3914
- link: callToAction.title,
3915
- href: callToAction.href,
3916
- onClick: callToAction.onClick,
3992
+ action: {
3993
+ href: callToAction.href,
3994
+ onClick: callToAction.href ? void 0 : callToAction.onClick,
3995
+ target: callToAction.href ? "_blank" : void 0,
3996
+ text: callToAction.title
3997
+ },
3917
3998
  onDismiss: onDismiss ? () => {
3918
3999
  setIsVisible(false);
3919
4000
  onDismiss();
@@ -3951,11 +4032,38 @@ var supportedMediaNames = [
3951
4032
  "wallet"
3952
4033
  ];
3953
4034
 
4035
+ // ../renderers/src/ButtonRenderer/CircularButtonRenderer.tsx
4036
+ import { CircularButton } from "@transferwise/components";
4037
+ var import_classnames7 = __toESM(require_classnames());
4038
+ import { jsx as jsx88 } from "react/jsx-runtime";
4039
+ var CircularButtonRenderer = {
4040
+ canRenderType: "button",
4041
+ canRender: ({ control }) => control === "circular",
4042
+ render: CircularButtonComponent
4043
+ };
4044
+ function CircularButtonComponent(props) {
4045
+ var _a;
4046
+ const { context, disabled, margin, media, tags, title, onClick } = props;
4047
+ const priority = tags == null ? void 0 : tags.find((tag) => tag === "primary" || tag === "secondary");
4048
+ return /* @__PURE__ */ jsx88("div", { className: (0, import_classnames7.default)(getMargin(margin), "df-button", "circular"), children: /* @__PURE__ */ jsx88(
4049
+ CircularButton,
4050
+ {
4051
+ disabled,
4052
+ priority: priority != null ? priority : "secondary",
4053
+ type: context === "negative" ? "negative" : "default",
4054
+ icon: media ? (_a = getAddonStartMedia(media)) == null ? void 0 : _a.value : void 0,
4055
+ onClick,
4056
+ children: title
4057
+ }
4058
+ ) });
4059
+ }
4060
+
3954
4061
  // ../renderers/src/getWiseRenderers.ts
3955
4062
  var getWiseRenderers = () => [
3956
4063
  AddressValidationButtonRenderer_default,
3957
4064
  AlertRenderer_default,
3958
4065
  CheckboxInputRenderer_default,
4066
+ CircularButtonRenderer,
3959
4067
  BoxRenderer_default,
3960
4068
  ButtonRenderer,
3961
4069
  ColumnsRenderer_default,
@@ -4001,11 +4109,11 @@ var getWiseRenderers = () => [
4001
4109
 
4002
4110
  // ../renderers/src/InitialLoadingStateRenderer.tsx
4003
4111
  import { Loader as Loader2 } from "@transferwise/components";
4004
- import { jsx as jsx86 } from "react/jsx-runtime";
4112
+ import { jsx as jsx89 } from "react/jsx-runtime";
4005
4113
  var InitialLoadingStateRenderer = {
4006
4114
  canRenderType: "loading-state",
4007
4115
  canRender: ({ stepLoadingState }) => stepLoadingState === "initial",
4008
- render: () => /* @__PURE__ */ jsx86(
4116
+ render: () => /* @__PURE__ */ jsx89(
4009
4117
  Loader2,
4010
4118
  {
4011
4119
  size: "md",
@@ -4016,7 +4124,7 @@ var InitialLoadingStateRenderer = {
4016
4124
  };
4017
4125
 
4018
4126
  // ../renderers/src/subflow/getSubflowRenderer.tsx
4019
- import { jsx as jsx87 } from "react/jsx-runtime";
4127
+ import { jsx as jsx90 } from "react/jsx-runtime";
4020
4128
  var getSubflowRenderer = ({
4021
4129
  Component: Component2,
4022
4130
  canRender
@@ -4025,7 +4133,7 @@ var getSubflowRenderer = ({
4025
4133
  canRenderType: "subflow",
4026
4134
  canRender,
4027
4135
  render: (props) => {
4028
- return /* @__PURE__ */ jsx87(
4136
+ return /* @__PURE__ */ jsx90(
4029
4137
  Component2,
4030
4138
  {
4031
4139
  presentation: props.presentation,
@@ -4043,11 +4151,11 @@ var getSubflowRenderer = ({
4043
4151
 
4044
4152
  // src/dynamicFlow/useOnCopy.tsx
4045
4153
  import { useCallback } from "react";
4046
- import { useIntl as useIntl15 } from "react-intl";
4154
+ import { useIntl as useIntl16 } from "react-intl";
4047
4155
 
4048
4156
  // src/dynamicFlow/messages.ts
4049
- import { defineMessages as defineMessages12 } from "react-intl";
4050
- var messages_default = defineMessages12({
4157
+ import { defineMessages as defineMessages13 } from "react-intl";
4158
+ var messages_default = defineMessages13({
4051
4159
  copied: {
4052
4160
  id: "df.wise.CopyFeedback.copy",
4053
4161
  defaultMessage: "Copied to clipboard",
@@ -4062,7 +4170,7 @@ var messages_default = defineMessages12({
4062
4170
 
4063
4171
  // src/dynamicFlow/useOnCopy.tsx
4064
4172
  var useOnCopy = () => {
4065
- const { formatMessage } = useIntl15();
4173
+ const { formatMessage } = useIntl16();
4066
4174
  const createSnackBar = useSnackBarIfAvailable();
4067
4175
  return useCallback(
4068
4176
  (copiedContent) => {
@@ -4078,9 +4186,9 @@ var useOnCopy = () => {
4078
4186
 
4079
4187
  // src/dynamicFlow/useWiseHttpClient.tsx
4080
4188
  import { useCallback as useCallback2 } from "react";
4081
- import { useIntl as useIntl16 } from "react-intl";
4189
+ import { useIntl as useIntl17 } from "react-intl";
4082
4190
  var useWiseHttpClient = (httpClient) => {
4083
- const { locale } = useIntl16();
4191
+ const { locale } = useIntl17();
4084
4192
  return useCallback2(
4085
4193
  async (input, init = {}) => {
4086
4194
  const headers = new Headers(init.headers);
@@ -4105,24 +4213,24 @@ var handleRejection = (error) => {
4105
4213
  // src/dynamicFlow/DynamicFlowModal.tsx
4106
4214
  import { useDynamicFlowModal } from "@wise/dynamic-flow-client";
4107
4215
  import { Modal as Modal5 } from "@transferwise/components";
4108
- import { jsx as jsx88 } from "react/jsx-runtime";
4216
+ import { jsx as jsx91 } from "react/jsx-runtime";
4109
4217
  function DynamicFlowModal(props) {
4110
4218
  const _a = props, { className = "" } = _a, rest = __objRest(_a, ["className"]);
4111
4219
  const dfProps = useWiseToCoreProps(rest);
4112
4220
  const df = useDynamicFlowModal(dfProps);
4113
- return /* @__PURE__ */ jsx88(
4221
+ return /* @__PURE__ */ jsx91(
4114
4222
  Modal5,
4115
4223
  __spreadProps(__spreadValues({
4116
4224
  className: `dynamic-flow-modal ${className}`,
4117
4225
  disableDimmerClickToClose: true
4118
4226
  }, df.modal), {
4119
- body: /* @__PURE__ */ jsx88("div", { className: "dynamic-flow-modal", children: df.modal.body })
4227
+ body: /* @__PURE__ */ jsx91("div", { className: "dynamic-flow-modal", children: df.modal.body })
4120
4228
  })
4121
4229
  );
4122
4230
  }
4123
4231
 
4124
4232
  // src/dynamicFlow/getMergedRenderers.tsx
4125
- import { jsx as jsx89 } from "react/jsx-runtime";
4233
+ import { jsx as jsx92 } from "react/jsx-runtime";
4126
4234
  var wiseRenderers = getWiseRenderers();
4127
4235
  var getMergedRenderers = (props) => {
4128
4236
  var _d, _e;
@@ -4136,7 +4244,7 @@ var getMergedRenderers = (props) => {
4136
4244
  method: initialRequest.method,
4137
4245
  data: initialRequest.body
4138
4246
  };
4139
- return presentation.type === "push" ? /* @__PURE__ */ jsx89(DynamicFlow, __spreadProps(__spreadValues(__spreadValues({}, restProps), rest), { features: subflowFeatures, initialAction: action })) : /* @__PURE__ */ jsx89(
4247
+ return presentation.type === "push" ? /* @__PURE__ */ jsx92(DynamicFlow, __spreadProps(__spreadValues(__spreadValues({}, restProps), rest), { features: subflowFeatures, initialAction: action })) : /* @__PURE__ */ jsx92(
4140
4248
  DynamicFlowModal,
4141
4249
  __spreadProps(__spreadValues(__spreadValues({}, restProps), rest), {
4142
4250
  features: subflowFeatures,
@@ -4177,9 +4285,17 @@ var useWiseToCoreProps = (props) => {
4177
4285
  });
4178
4286
  };
4179
4287
  var openLinkInNewTab = (url) => {
4180
- var _a;
4288
+ if (typeof window === "undefined" || typeof window.open !== "function") {
4289
+ return false;
4290
+ }
4181
4291
  try {
4182
- const w = (_a = window == null ? void 0 : window.open) == null ? void 0 : _a.call(window, url, "_blank");
4292
+ const w = window.open(url, "_blank");
4293
+ if (w) {
4294
+ try {
4295
+ w.opener = null;
4296
+ } catch (e) {
4297
+ }
4298
+ }
4183
4299
  return Boolean(w);
4184
4300
  } catch (e) {
4185
4301
  return false;
@@ -4187,12 +4303,12 @@ var openLinkInNewTab = (url) => {
4187
4303
  };
4188
4304
 
4189
4305
  // src/dynamicFlow/DynamicFlow.tsx
4190
- import { jsx as jsx90 } from "react/jsx-runtime";
4306
+ import { jsx as jsx93 } from "react/jsx-runtime";
4191
4307
  function DynamicFlow(props) {
4192
4308
  const { className = "" } = props;
4193
4309
  const dfProps = useWiseToCoreProps(props);
4194
4310
  const df = useDynamicFlow(dfProps);
4195
- return /* @__PURE__ */ jsx90("div", { className, children: df.view });
4311
+ return /* @__PURE__ */ jsx93("div", { className, children: df.view });
4196
4312
  }
4197
4313
 
4198
4314
  // src/dynamicFlow/DynamicFlowWithRef.tsx
@@ -4201,7 +4317,7 @@ import {
4201
4317
  useImperativeHandle
4202
4318
  } from "react";
4203
4319
  import { useDynamicFlow as useDynamicFlow2 } from "@wise/dynamic-flow-client";
4204
- import { jsx as jsx91 } from "react/jsx-runtime";
4320
+ import { jsx as jsx94 } from "react/jsx-runtime";
4205
4321
  var DynamicFlowWithRef = forwardRef(function DynamicFlowWithRef2(props, ref) {
4206
4322
  const { className = "" } = props;
4207
4323
  const dfProps = useWiseToCoreProps(props);
@@ -4217,14 +4333,14 @@ var DynamicFlowWithRef = forwardRef(function DynamicFlowWithRef2(props, ref) {
4217
4333
  }),
4218
4334
  [df]
4219
4335
  );
4220
- return /* @__PURE__ */ jsx91("div", { className, children: df.view });
4336
+ return /* @__PURE__ */ jsx94("div", { className, children: df.view });
4221
4337
  });
4222
4338
 
4223
4339
  // src/index.ts
4224
4340
  import { findRendererPropsByType } from "@wise/dynamic-flow-client";
4225
4341
 
4226
4342
  // src/dynamicFlow/renderers.tsx
4227
- var Header11 = Header5;
4343
+ var Header10 = Header5;
4228
4344
  var Media2 = Media;
4229
4345
  var getMargin2 = getMargin;
4230
4346
 
@@ -4274,7 +4390,8 @@ var cs_default = {
4274
4390
  "df.wise.group.all": "V\u0161e",
4275
4391
  "df.wise.group.currencies-with-account-details": "M\u011Bny s detaily \xFA\u010Dtu",
4276
4392
  "df.wise.group.popular": "Popul\xE1rn\xED",
4277
- "df.wise.group.recent": "Ned\xE1vn\xE9"
4393
+ "df.wise.group.recent": "Ned\xE1vn\xE9",
4394
+ "df.wise.step.scrollToBottom": "P\u0159ej\xEDt na konec"
4278
4395
  };
4279
4396
 
4280
4397
  // src/i18n/de.json
@@ -4320,7 +4437,8 @@ var de_default = {
4320
4437
  "df.wise.group.all": "Alle",
4321
4438
  "df.wise.group.currencies-with-account-details": "Guthaben mit Bankverbindung",
4322
4439
  "df.wise.group.popular": "Beliebt",
4323
- "df.wise.group.recent": "Neu"
4440
+ "df.wise.group.recent": "Neu",
4441
+ "df.wise.step.scrollToBottom": "Nach unten scrollen"
4324
4442
  };
4325
4443
 
4326
4444
  // src/i18n/en.json
@@ -4366,7 +4484,8 @@ var en_default = {
4366
4484
  "df.wise.group.all": "All",
4367
4485
  "df.wise.group.currencies-with-account-details": "Currencies with account details",
4368
4486
  "df.wise.group.popular": "Popular",
4369
- "df.wise.group.recent": "Recent"
4487
+ "df.wise.group.recent": "Recent",
4488
+ "df.wise.step.scrollToBottom": "Scroll to bottom"
4370
4489
  };
4371
4490
 
4372
4491
  // src/i18n/es.json
@@ -4412,7 +4531,8 @@ var es_default = {
4412
4531
  "df.wise.group.all": "Todo",
4413
4532
  "df.wise.group.currencies-with-account-details": "Divisas con datos de cuenta",
4414
4533
  "df.wise.group.popular": "Populares",
4415
- "df.wise.group.recent": "Recientes"
4534
+ "df.wise.group.recent": "Recientes",
4535
+ "df.wise.step.scrollToBottom": "Despl\xE1zate hasta abajo"
4416
4536
  };
4417
4537
 
4418
4538
  // src/i18n/fr.json
@@ -4423,7 +4543,7 @@ var fr_default = {
4423
4543
  "df.wise.ArraySchema.maxItemsError": "Veuillez ajouter {maxItems} ou moins.",
4424
4544
  "df.wise.ArraySchema.minItemsError": "Veuillez ajouter au moins {minItems}.",
4425
4545
  "df.wise.ArraySchema.removeItem": "Supprimer",
4426
- "df.wise.ButtonLayout.buttonLoadingMessage": "Patientez quelques secondes",
4546
+ "df.wise.ButtonLayout.buttonLoadingMessage": "Un instant, s'il vous pla\xEEt...",
4427
4547
  "df.wise.ControlFeedback.maxLength": "Veuillez saisir {maxLength} caract\xE8res ou moins.",
4428
4548
  "df.wise.ControlFeedback.maximum": "Veuillez saisir un nombre inf\xE9rieur ou \xE9gal \xE0 {maximum}.",
4429
4549
  "df.wise.ControlFeedback.maximumDate": "Veuillez saisir une date \xE9gale ou ant\xE9rieure au {maximum}.",
@@ -4455,10 +4575,11 @@ var fr_default = {
4455
4575
  "df.wise.filter.noResults": "Aucun r\xE9sultat",
4456
4576
  "df.wise.filter.placeholder": "Commencez \xE0 \xE9crire pour effectuer une recherche",
4457
4577
  "df.wise.filter.results": "R\xE9sultats de recherche",
4458
- "df.wise.group.all": "Toutes",
4578
+ "df.wise.group.all": "Tous",
4459
4579
  "df.wise.group.currencies-with-account-details": "Devises avec num\xE9ros de compte",
4460
4580
  "df.wise.group.popular": "Populaires",
4461
- "df.wise.group.recent": "R\xE9cents"
4581
+ "df.wise.group.recent": "R\xE9cents",
4582
+ "df.wise.step.scrollToBottom": "Faire d\xE9filer vers le bas"
4462
4583
  };
4463
4584
 
4464
4585
  // src/i18n/hu.json
@@ -4504,7 +4625,8 @@ var hu_default = {
4504
4625
  "df.wise.group.all": "\xD6sszes",
4505
4626
  "df.wise.group.currencies-with-account-details": "P\xE9nznemek sz\xE1mlaadatokkal",
4506
4627
  "df.wise.group.popular": "N\xE9pszer\u0171",
4507
- "df.wise.group.recent": "Legut\xF3bbi"
4628
+ "df.wise.group.recent": "Legut\xF3bbi",
4629
+ "df.wise.step.scrollToBottom": "G\xF6rgess legalulra"
4508
4630
  };
4509
4631
 
4510
4632
  // src/i18n/id.json
@@ -4550,7 +4672,8 @@ var id_default = {
4550
4672
  "df.wise.group.all": "Semua",
4551
4673
  "df.wise.group.currencies-with-account-details": "Mata uang dengan detail rekening",
4552
4674
  "df.wise.group.popular": "Populer",
4553
- "df.wise.group.recent": "Terbaru"
4675
+ "df.wise.group.recent": "Terbaru",
4676
+ "df.wise.step.scrollToBottom": "Gulir ke bawah"
4554
4677
  };
4555
4678
 
4556
4679
  // src/i18n/it.json
@@ -4596,7 +4719,8 @@ var it_default = {
4596
4719
  "df.wise.group.all": "Tutti",
4597
4720
  "df.wise.group.currencies-with-account-details": "Valute con estremi del conto",
4598
4721
  "df.wise.group.popular": "Popolari",
4599
- "df.wise.group.recent": "Recenti"
4722
+ "df.wise.group.recent": "Recenti",
4723
+ "df.wise.step.scrollToBottom": "Scorri in basso"
4600
4724
  };
4601
4725
 
4602
4726
  // src/i18n/ja.json
@@ -4642,7 +4766,8 @@ var ja_default = {
4642
4766
  "df.wise.group.all": "\u3059\u3079\u3066",
4643
4767
  "df.wise.group.currencies-with-account-details": "\u53E3\u5EA7\u60C5\u5831\u3092\u53D6\u5F97\u3067\u304D\u308B\u901A\u8CA8",
4644
4768
  "df.wise.group.popular": "\u4EBA\u6C17",
4645
- "df.wise.group.recent": "\u6700\u8FD1"
4769
+ "df.wise.group.recent": "\u6700\u8FD1",
4770
+ "df.wise.step.scrollToBottom": "\u4E0B\u307E\u3067\u30B9\u30AF\u30ED\u30FC\u30EB\u3059\u308B"
4646
4771
  };
4647
4772
 
4648
4773
  // src/i18n/nl.json
@@ -4688,7 +4813,8 @@ var nl_default = {
4688
4813
  "df.wise.group.all": "Alles",
4689
4814
  "df.wise.group.currencies-with-account-details": "Valuta's met rekeninggegevens",
4690
4815
  "df.wise.group.popular": "Populair",
4691
- "df.wise.group.recent": "Recent"
4816
+ "df.wise.group.recent": "Recent",
4817
+ "df.wise.step.scrollToBottom": "Scrol omlaag"
4692
4818
  };
4693
4819
 
4694
4820
  // src/i18n/pl.json
@@ -4734,7 +4860,8 @@ var pl_default = {
4734
4860
  "df.wise.group.all": "Wszystkie",
4735
4861
  "df.wise.group.currencies-with-account-details": "Waluty z danymi bankowymi",
4736
4862
  "df.wise.group.popular": "Popularne",
4737
- "df.wise.group.recent": "Ostatnie"
4863
+ "df.wise.group.recent": "Ostatnie",
4864
+ "df.wise.step.scrollToBottom": "Przewi\u0144 w d\xF3\u0142"
4738
4865
  };
4739
4866
 
4740
4867
  // src/i18n/pt.json
@@ -4780,7 +4907,8 @@ var pt_default = {
4780
4907
  "df.wise.group.all": "Todos",
4781
4908
  "df.wise.group.currencies-with-account-details": "Moedas com dados de conta",
4782
4909
  "df.wise.group.popular": "Popular",
4783
- "df.wise.group.recent": "Recente"
4910
+ "df.wise.group.recent": "Recente",
4911
+ "df.wise.step.scrollToBottom": "Descer at\xE9 o final da p\xE1gina"
4784
4912
  };
4785
4913
 
4786
4914
  // src/i18n/ro.json
@@ -4826,7 +4954,8 @@ var ro_default = {
4826
4954
  "df.wise.group.all": "Toate",
4827
4955
  "df.wise.group.currencies-with-account-details": "Monede cu detalii de cont",
4828
4956
  "df.wise.group.popular": "Populare",
4829
- "df.wise.group.recent": "Recente"
4957
+ "df.wise.group.recent": "Recente",
4958
+ "df.wise.step.scrollToBottom": "Deruleaz\u0103 \xEEn jos"
4830
4959
  };
4831
4960
 
4832
4961
  // src/i18n/ru.json
@@ -4872,7 +5001,8 @@ var ru_default = {
4872
5001
  "df.wise.group.all": "\u0412\u0441\u0435",
4873
5002
  "df.wise.group.currencies-with-account-details": "\u0412\u0430\u043B\u044E\u0442\u044B \u0441 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u0430\u043C\u0438 \u0441\u0447\u0435\u0442\u0430",
4874
5003
  "df.wise.group.popular": "\u041F\u043E\u043F\u0443\u043B\u044F\u0440\u043D\u044B\u0435",
4875
- "df.wise.group.recent": "\u041D\u0435\u0434\u0430\u0432\u043D\u0438\u0435"
5004
+ "df.wise.group.recent": "\u041D\u0435\u0434\u0430\u0432\u043D\u0438\u0435",
5005
+ "df.wise.step.scrollToBottom": "\u041F\u0440\u043E\u043B\u0438\u0441\u0442\u0430\u0439\u0442\u0435 \u0432\u043D\u0438\u0437"
4876
5006
  };
4877
5007
 
4878
5008
  // src/i18n/th.json
@@ -4918,7 +5048,8 @@ var th_default = {
4918
5048
  "df.wise.group.all": "\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14",
4919
5049
  "df.wise.group.currencies-with-account-details": "\u0E2A\u0E01\u0E38\u0E25\u0E40\u0E07\u0E34\u0E19\u0E15\u0E48\u0E32\u0E07\u0E46 \u0E1E\u0E23\u0E49\u0E2D\u0E21\u0E23\u0E32\u0E22\u0E25\u0E30\u0E40\u0E2D\u0E35\u0E22\u0E14\u0E1A\u0E31\u0E0D\u0E0A\u0E35",
4920
5050
  "df.wise.group.popular": "\u0E2A\u0E01\u0E38\u0E25\u0E22\u0E2D\u0E14\u0E19\u0E34\u0E22\u0E21",
4921
- "df.wise.group.recent": "\u0E25\u0E48\u0E32\u0E2A\u0E38\u0E14"
5051
+ "df.wise.group.recent": "\u0E25\u0E48\u0E32\u0E2A\u0E38\u0E14",
5052
+ "df.wise.step.scrollToBottom": "\u0E40\u0E25\u0E37\u0E48\u0E2D\u0E19\u0E44\u0E1B\u0E14\u0E49\u0E32\u0E19\u0E25\u0E48\u0E32\u0E07"
4922
5053
  };
4923
5054
 
4924
5055
  // src/i18n/tr.json
@@ -4964,7 +5095,8 @@ var tr_default = {
4964
5095
  "df.wise.group.all": "T\xFCm\xFC",
4965
5096
  "df.wise.group.currencies-with-account-details": "Hesap bilgileri olan bakiyeler",
4966
5097
  "df.wise.group.popular": "Pop\xFCler",
4967
- "df.wise.group.recent": "Yak\u0131n zamanl\u0131"
5098
+ "df.wise.group.recent": "Yak\u0131n zamanl\u0131",
5099
+ "df.wise.step.scrollToBottom": "A\u015Fa\u011F\u0131 kayd\u0131r"
4968
5100
  };
4969
5101
 
4970
5102
  // src/i18n/zh_CN.json
@@ -5010,7 +5142,8 @@ var zh_CN_default = {
5010
5142
  "df.wise.group.all": "\u5168\u90E8",
5011
5143
  "df.wise.group.currencies-with-account-details": "\u5E26\u6709\u8D26\u6237\u8BE6\u7EC6\u4FE1\u606F\u7684\u8D27\u5E01",
5012
5144
  "df.wise.group.popular": "\u70ED\u95E8",
5013
- "df.wise.group.recent": "\u6700\u8FD1"
5145
+ "df.wise.group.recent": "\u6700\u8FD1",
5146
+ "df.wise.step.scrollToBottom": "\u6EDA\u52A8\u5230\u5E95\u90E8"
5014
5147
  };
5015
5148
 
5016
5149
  // src/i18n/zh_HK.json
@@ -5056,7 +5189,8 @@ var zh_HK_default = {
5056
5189
  "df.wise.group.all": "\u5168\u90E8",
5057
5190
  "df.wise.group.currencies-with-account-details": "\u63D0\u4F9B\u8CEC\u6236\u8CC7\u6599\u7684\u8CA8\u5E63",
5058
5191
  "df.wise.group.popular": "\u71B1\u9580",
5059
- "df.wise.group.recent": "\u6700\u8FD1\u7684"
5192
+ "df.wise.group.recent": "\u6700\u8FD1\u7684",
5193
+ "df.wise.step.scrollToBottom": "\u6ED1\u52D5\u5230\u6700\u5E95\u90E8"
5060
5194
  };
5061
5195
 
5062
5196
  // src/i18n/index.ts
@@ -5092,7 +5226,7 @@ var i18n_default = translations;
5092
5226
  export {
5093
5227
  DynamicFlow,
5094
5228
  DynamicFlowWithRef,
5095
- Header11 as Header,
5229
+ Header10 as Header,
5096
5230
  Media2 as Media,
5097
5231
  findRendererPropsByType,
5098
5232
  getMargin2 as getMargin,