@wise/dynamic-flow-client-internal 4.31.3 → 4.32.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.
@@ -19,7 +19,7 @@
19
19
  "df.wise.CopyFeedback.copy": "Disalin ke clipboard",
20
20
  "df.wise.CopyFeedback.copyFailed": "Gagal menyalin ke clipboard",
21
21
  "df.wise.Decision.all": "Semua",
22
- "df.wise.Decision.currenciesWithAccountDetails": "Saldo dengan detail rekening",
22
+ "df.wise.Decision.currenciesWithAccountDetails": "Mata uang dengan detail rekening",
23
23
  "df.wise.Decision.filterPlaceholder": "Mulai mengetik untuk mencari",
24
24
  "df.wise.Decision.noResults": "Tidak ada hasil",
25
25
  "df.wise.Decision.popular": "Populer",
@@ -1,16 +1,16 @@
1
1
  {
2
- "df.wise.ArraySchema.addItem": "Заощаджуйте",
2
+ "df.wise.ArraySchema.addItem": "Зберегти",
3
3
  "df.wise.ArraySchema.addItemTitle": "Add Item",
4
- "df.wise.ArraySchema.editItem": "Заощаджуйте",
4
+ "df.wise.ArraySchema.editItem": "Зберегти",
5
5
  "df.wise.ArraySchema.maxItemsError": "Додайте {maxItems} або менше.",
6
6
  "df.wise.ArraySchema.minItemsError": "Додайте принаймні {minItems}.",
7
7
  "df.wise.ArraySchema.removeItem": "Вилучити",
8
8
  "df.wise.ButtonLayout.buttonLoadingMessage": "This might take a few seconds",
9
- "df.wise.ControlFeedback.maxLength": "Будь ласка, введіть {maxLength} або менше символів.",
10
- "df.wise.ControlFeedback.maximum": "Введіть число, що дорівнює {maximum}, або менше.",
9
+ "df.wise.ControlFeedback.maxLength": "Максимальна кількість символів: {maxLength}.",
10
+ "df.wise.ControlFeedback.maximum": "Введіть число, що менше або дорівнює {maximum}.",
11
11
  "df.wise.ControlFeedback.maximumDate": "Введіть дату, що припадає на {maximum}, або ранішу.",
12
12
  "df.wise.ControlFeedback.minLength": "Мінімальна кількість символів: {minLength}.",
13
- "df.wise.ControlFeedback.minimum": "Введіть число, що дорівнює {minimum}, або більше.",
13
+ "df.wise.ControlFeedback.minimum": "Введіть число, що більше або дорівнює {minimum}.",
14
14
  "df.wise.ControlFeedback.minimumDate": "Введіть дату, що припадає на {minimum}, або пізнішу.",
15
15
  "df.wise.ControlFeedback.pattern": "Введіть значення в правильному форматі.",
16
16
  "df.wise.ControlFeedback.patternDate": "Введіть дату в правильному форматі.",
@@ -27,7 +27,7 @@
27
27
  "df.wise.Decision.results": "Результати пошуку",
28
28
  "df.wise.DynamicParagraph.copied": "Скопійовано в буфер обміну",
29
29
  "df.wise.DynamicParagraph.copy": "Копіювати",
30
- "df.wise.ErrorBoundary.errorAlert": "Сталася помилка.",
30
+ "df.wise.ErrorBoundary.errorAlert": "Щось пішло не так.",
31
31
  "df.wise.ErrorBoundary.retry": "Повторити спробу",
32
32
  "df.wise.ExternalConfirmation.cancel": "Скасувати",
33
33
  "df.wise.ExternalConfirmation.description": "Підтвердьте, що ви бажаєте відкрити **{origin}** в новій вкладці браузера.",
@@ -35,9 +35,9 @@
35
35
  "df.wise.ExternalConfirmation.title": "Підтвердьте",
36
36
  "df.wise.Help.ariaLabel": "Натисніть тут, щоб дізнатися більше.",
37
37
  "df.wise.MultiSelect.summary": "{first} і ще {count}",
38
- "df.wise.MultipleFileUploadSchema.maxFileSizeError": "Вибачте, але цей файл завеликий. Будь ласка, завантажте файл меншого розміру.",
39
- "df.wise.MultipleFileUploadSchema.maxItemsError": "Будь ласка, завантажте {maxItems} або менше файлів.",
40
- "df.wise.MultipleFileUploadSchema.minItemsError": "Будь ласка, завантажте принаймні {minItems} файл(ів).",
38
+ "df.wise.MultipleFileUploadSchema.maxFileSizeError": "Вибачте, але цей файл завеликий. Завантажте менший файл.",
39
+ "df.wise.MultipleFileUploadSchema.maxItemsError": "Максимальна кількість файлів для завантаження: {maxItems}.",
40
+ "df.wise.MultipleFileUploadSchema.minItemsError": "Мінімальна кількість файлів для завантаження: {minItems}.",
41
41
  "df.wise.PersistAsyncSchema.genericError": "Щось сталося. Спробуйте ще раз.",
42
42
  "df.wise.SearchLayout.loading": "Завантаження…"
43
43
  }
package/build/main.js CHANGED
@@ -2907,58 +2907,86 @@ function SplashStepRendererComponent(props) {
2907
2907
  }
2908
2908
 
2909
2909
  // ../renderers/src/step/StepRenderer.tsx
2910
+ var import_components47 = require("@transferwise/components");
2911
+
2912
+ // ../renderers/src/step/StepError.tsx
2910
2913
  var import_components46 = require("@transferwise/components");
2914
+ var import_react17 = require("react");
2911
2915
  var import_jsx_runtime69 = require("react/jsx-runtime");
2916
+ var StepError = ({
2917
+ error,
2918
+ uid,
2919
+ stepLoadingState
2920
+ }) => {
2921
+ const alertId = `${uid}-step-alert`;
2922
+ const [previousLoadingState, setPreviousLoadingState] = (0, import_react17.useState)(stepLoadingState);
2923
+ (0, import_react17.useEffect)(() => {
2924
+ var _a;
2925
+ if (previousLoadingState === "submitting" && stepLoadingState === "idle") {
2926
+ if (error) {
2927
+ const element = document.getElementById(alertId);
2928
+ (_a = element == null ? void 0 : element.scrollIntoView) == null ? void 0 : _a.call(element, {
2929
+ behavior: "smooth"
2930
+ });
2931
+ }
2932
+ }
2933
+ setPreviousLoadingState(stepLoadingState);
2934
+ }, [alertId, error, previousLoadingState, stepLoadingState]);
2935
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { id: alertId, children: error ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_components46.Alert, { type: "negative", className: "m-b-2", message: error }) : void 0 });
2936
+ };
2937
+
2938
+ // ../renderers/src/step/StepRenderer.tsx
2939
+ var import_jsx_runtime70 = require("react/jsx-runtime");
2912
2940
  var StepRenderer = {
2913
2941
  canRenderType: "step",
2914
2942
  render: StepRendererComponent
2915
2943
  };
2916
2944
  function StepRendererComponent(props) {
2917
- const { back, description, error, title, children, toolbar, footer } = props;
2945
+ const { uid, back, description, error, title, children, toolbar, footer, stepLoadingState } = props;
2918
2946
  const hasFooter = footer && Array.isArray(footer) && footer.length > 0;
2919
- return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { children: [
2920
- /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(TopBar, { back, toolbar }),
2921
- title || description ? /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "m-b-4", children: [
2922
- title ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_components46.Title, { as: "h1", type: "title-section", className: "text-xs-center m-b-2", children: title }) : void 0,
2923
- description ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "text-xs-center np-text-body-large", children: description }) : void 0
2947
+ return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { children: [
2948
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(TopBar, { back, toolbar }),
2949
+ title || description ? /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "m-b-4", children: [
2950
+ title ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_components47.Title, { as: "h1", type: "title-section", className: "text-xs-center m-b-2", children: title }) : void 0,
2951
+ description ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("p", { className: "text-xs-center np-text-body-large", children: description }) : void 0
2924
2952
  ] }) : void 0,
2925
- error ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_components46.Alert, { type: "negative", className: "m-b-2", message: error }) : void 0,
2953
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(StepError, { error, uid, stepLoadingState }),
2926
2954
  children,
2927
- hasFooter ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "df-step-fixed__footer", children: footer }) : void 0
2955
+ hasFooter ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "df-step-fixed__footer", children: footer }) : void 0
2928
2956
  ] });
2929
2957
  }
2930
2958
 
2931
2959
  // ../renderers/src/TabsRenderer.tsx
2932
- var import_components47 = require("@transferwise/components");
2933
- var import_react17 = require("react");
2934
- var import_jsx_runtime70 = require("react/jsx-runtime");
2960
+ var import_components48 = require("@transferwise/components");
2961
+ var import_react18 = require("react");
2962
+ var import_jsx_runtime71 = require("react/jsx-runtime");
2935
2963
  var TabsRenderer = {
2936
2964
  canRenderType: "tabs",
2937
2965
  render: (props) => {
2938
2966
  switch (props.control) {
2939
2967
  case "segmented":
2940
2968
  if (props.tabs.length > 3) {
2941
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(TabsRendererComponent, __spreadValues({}, props));
2969
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(TabsRendererComponent, __spreadValues({}, props));
2942
2970
  }
2943
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(SegmentedTabsRendererComponent, __spreadValues({}, props));
2971
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(SegmentedTabsRendererComponent, __spreadValues({}, props));
2944
2972
  case "chips":
2945
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ChipsTabsRendererComponent, __spreadValues({}, props));
2973
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(ChipsTabsRendererComponent, __spreadValues({}, props));
2946
2974
  default:
2947
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(TabsRendererComponent, __spreadValues({}, props));
2975
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(TabsRendererComponent, __spreadValues({}, props));
2948
2976
  }
2949
2977
  }
2950
2978
  };
2951
2979
  function TabsRendererComponent({ uid, margin, tabs }) {
2952
- const [selectedIndex, setSelectedIndex] = (0, import_react17.useState)(0);
2953
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: getMargin(margin), children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
2954
- import_components47.Tabs,
2980
+ const [selectedIndex, setSelectedIndex] = (0, import_react18.useState)(0);
2981
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: getMargin(margin), children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
2982
+ import_components48.Tabs,
2955
2983
  {
2956
2984
  name: uid,
2957
2985
  selected: selectedIndex != null ? selectedIndex : 0,
2958
2986
  tabs: tabs.map((option) => ({
2959
2987
  title: option.title,
2960
2988
  disabled: false,
2961
- content: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "m-t-2", children: [
2989
+ content: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { className: "m-t-2", children: [
2962
2990
  " ",
2963
2991
  option.children,
2964
2992
  " "
@@ -2970,10 +2998,10 @@ function TabsRendererComponent({ uid, margin, tabs }) {
2970
2998
  }
2971
2999
  function SegmentedTabsRendererComponent({ uid, margin, tabs }) {
2972
3000
  var _a;
2973
- const [selectedIndex, setSelectedIndex] = (0, import_react17.useState)(0);
2974
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: getMargin(margin), children: [
2975
- /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
2976
- import_components47.SegmentedControl,
3001
+ const [selectedIndex, setSelectedIndex] = (0, import_react18.useState)(0);
3002
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { className: getMargin(margin), children: [
3003
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
3004
+ import_components48.SegmentedControl,
2977
3005
  {
2978
3006
  name: uid,
2979
3007
  value: String(selectedIndex),
@@ -2987,31 +3015,31 @@ function SegmentedTabsRendererComponent({ uid, margin, tabs }) {
2987
3015
  onChange: (value) => setSelectedIndex(Number(value))
2988
3016
  }
2989
3017
  ),
2990
- /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { id: `${uid}-children`, className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
3018
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { id: `${uid}-children`, className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
2991
3019
  ] });
2992
3020
  }
2993
3021
  function ChipsTabsRendererComponent({ margin, tabs }) {
2994
3022
  var _a;
2995
- const [selectedIndex, setSelectedIndex] = (0, import_react17.useState)(0);
2996
- return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: getMargin(margin), children: [
2997
- /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "chips-container", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
2998
- import_components47.Chips,
3023
+ const [selectedIndex, setSelectedIndex] = (0, import_react18.useState)(0);
3024
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { className: getMargin(margin), children: [
3025
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "chips-container", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
3026
+ import_components48.Chips,
2999
3027
  {
3000
3028
  chips: tabs.map((tab, index) => ({ label: tab.title, value: index })),
3001
3029
  selected: selectedIndex,
3002
3030
  onChange: ({ selectedValue }) => setSelectedIndex(Number(selectedValue))
3003
3031
  }
3004
3032
  ) }),
3005
- /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
3033
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
3006
3034
  ] });
3007
3035
  }
3008
3036
 
3009
3037
  // ../renderers/src/TextInputRenderer.tsx
3010
- var import_components49 = require("@transferwise/components");
3038
+ var import_components50 = require("@transferwise/components");
3011
3039
 
3012
3040
  // ../renderers/src/components/VariableTextInput.tsx
3013
- var import_components48 = require("@transferwise/components");
3014
- var import_jsx_runtime71 = require("react/jsx-runtime");
3041
+ var import_components49 = require("@transferwise/components");
3042
+ var import_jsx_runtime72 = require("react/jsx-runtime");
3015
3043
  var commonKeys = [
3016
3044
  "autoComplete",
3017
3045
  "autoCapitalize",
@@ -3030,12 +3058,12 @@ function VariableTextInput(inputProps) {
3030
3058
  const commonProps = __spreadProps(__spreadValues({}, pick(inputProps, ...commonKeys)), { name: id });
3031
3059
  switch (control) {
3032
3060
  case "email":
3033
- return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "email", onChange }));
3061
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "email", onChange }));
3034
3062
  case "password":
3035
- return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "password", onChange }));
3063
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "password", onChange }));
3036
3064
  case "numeric": {
3037
3065
  const numericProps = __spreadProps(__spreadValues({}, commonProps), { type: "number", onWheel });
3038
- return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
3066
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
3039
3067
  TextInput,
3040
3068
  __spreadProps(__spreadValues({}, numericProps), {
3041
3069
  onChange: (newValue) => {
@@ -3046,21 +3074,21 @@ function VariableTextInput(inputProps) {
3046
3074
  );
3047
3075
  }
3048
3076
  case "phone-number":
3049
- return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_components48.PhoneNumberInput, __spreadProps(__spreadValues({ initialValue: value }, commonProps), { onChange }));
3077
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_components49.PhoneNumberInput, __spreadProps(__spreadValues({ initialValue: value }, commonProps), { onChange }));
3050
3078
  default: {
3051
- return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "text", onChange }));
3079
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "text", onChange }));
3052
3080
  }
3053
3081
  }
3054
3082
  }
3055
3083
  function TextInput(props) {
3056
3084
  const _a = props, { control, displayFormat, onChange } = _a, commonProps = __objRest(_a, ["control", "displayFormat", "onChange"]);
3057
- const InputWithPattern = control === "textarea" ? import_components48.TextareaWithDisplayFormat : import_components48.InputWithDisplayFormat;
3058
- const InputWithoutPattern = control === "textarea" ? import_components48.TextArea : import_components48.Input;
3059
- return displayFormat ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(InputWithPattern, __spreadProps(__spreadValues({ displayPattern: displayFormat }, commonProps), { onChange })) : /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(InputWithoutPattern, __spreadProps(__spreadValues({}, commonProps), { onChange: (e) => onChange(e.target.value) }));
3085
+ const InputWithPattern = control === "textarea" ? import_components49.TextareaWithDisplayFormat : import_components49.InputWithDisplayFormat;
3086
+ const InputWithoutPattern = control === "textarea" ? import_components49.TextArea : import_components49.Input;
3087
+ return displayFormat ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(InputWithPattern, __spreadProps(__spreadValues({ displayPattern: displayFormat }, commonProps), { onChange })) : /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(InputWithoutPattern, __spreadProps(__spreadValues({}, commonProps), { onChange: (e) => onChange(e.target.value) }));
3060
3088
  }
3061
3089
 
3062
3090
  // ../renderers/src/TextInputRenderer.tsx
3063
- var import_jsx_runtime72 = require("react/jsx-runtime");
3091
+ var import_jsx_runtime73 = require("react/jsx-runtime");
3064
3092
  var TextInputRenderer = {
3065
3093
  canRenderType: "input-text",
3066
3094
  render: (props) => {
@@ -3093,7 +3121,7 @@ var TextInputRenderer = {
3093
3121
  }
3094
3122
  }
3095
3123
  });
3096
- return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
3124
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
3097
3125
  FieldInput_default,
3098
3126
  {
3099
3127
  id,
@@ -3101,7 +3129,7 @@ var TextInputRenderer = {
3101
3129
  description,
3102
3130
  validation: validationState,
3103
3131
  help,
3104
- children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_components49.InputGroup, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(VariableTextInput, __spreadValues({}, inputProps)) })
3132
+ children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(import_components50.InputGroup, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(VariableTextInput, __spreadValues({}, inputProps)) })
3105
3133
  }
3106
3134
  );
3107
3135
  }
@@ -3109,13 +3137,13 @@ var TextInputRenderer = {
3109
3137
  var TextInputRenderer_default = TextInputRenderer;
3110
3138
 
3111
3139
  // ../renderers/src/UploadInputRenderer.tsx
3112
- var import_components50 = require("@transferwise/components");
3140
+ var import_components51 = require("@transferwise/components");
3113
3141
 
3114
3142
  // ../renderers/src/utils/getRandomId.ts
3115
3143
  var getRandomId = () => Math.random().toString(36).substring(2);
3116
3144
 
3117
3145
  // ../renderers/src/UploadInputRenderer.tsx
3118
- var import_jsx_runtime73 = require("react/jsx-runtime");
3146
+ var import_jsx_runtime74 = require("react/jsx-runtime");
3119
3147
  var UploadInputRenderer = {
3120
3148
  canRenderType: "input-upload",
3121
3149
  render: (props) => {
@@ -3131,15 +3159,15 @@ var UploadInputRenderer = {
3131
3159
  };
3132
3160
  return (
3133
3161
  // We don't pass help here as there is no sensible place to display it
3134
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
3162
+ /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
3135
3163
  UploadFieldInput_default,
3136
3164
  {
3137
3165
  id,
3138
3166
  label: void 0,
3139
3167
  description: void 0,
3140
3168
  validation: validationState,
3141
- children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
3142
- import_components50.UploadInput,
3169
+ children: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
3170
+ import_components51.UploadInput,
3143
3171
  {
3144
3172
  id,
3145
3173
  description,
@@ -3197,7 +3225,7 @@ var LargeUploadRenderer = {
3197
3225
  };
3198
3226
  const filetypes = acceptsToFileTypes(accepts);
3199
3227
  const usAccept = filetypes === "*" ? "*" : filetypes.join(",");
3200
- return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
3228
+ return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
3201
3229
  FieldInput_default,
3202
3230
  {
3203
3231
  id,
@@ -3205,8 +3233,8 @@ var LargeUploadRenderer = {
3205
3233
  description,
3206
3234
  validation: validationState,
3207
3235
  help,
3208
- children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
3209
- import_components50.Upload,
3236
+ children: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
3237
+ import_components51.Upload,
3210
3238
  __spreadProps(__spreadValues({}, uploadProps), {
3211
3239
  usAccept,
3212
3240
  usDisabled: disabled,
@@ -3221,24 +3249,24 @@ var LargeUploadRenderer = {
3221
3249
  };
3222
3250
 
3223
3251
  // ../renderers/src/NewListItem/NewDecisionRenderer.tsx
3224
- var import_components53 = require("@transferwise/components");
3252
+ var import_components54 = require("@transferwise/components");
3225
3253
 
3226
3254
  // ../renderers/src/NewListItem/getInlineAlert.tsx
3227
- var import_components51 = require("@transferwise/components");
3228
- var import_jsx_runtime74 = require("react/jsx-runtime");
3229
- var getInlineAlert = (inlineAlert) => inlineAlert ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(import_components51.ListItem.Prompt, { sentiment: inlineAlert == null ? void 0 : inlineAlert.context, children: inlineAlert.content }) : void 0;
3230
-
3231
- // ../renderers/src/NewListItem/getAdditionalInfo.tsx
3232
3255
  var import_components52 = require("@transferwise/components");
3233
3256
  var import_jsx_runtime75 = require("react/jsx-runtime");
3257
+ var getInlineAlert = (inlineAlert) => inlineAlert ? /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_components52.ListItem.Prompt, { sentiment: inlineAlert == null ? void 0 : inlineAlert.context, children: inlineAlert.content }) : void 0;
3258
+
3259
+ // ../renderers/src/NewListItem/getAdditionalInfo.tsx
3260
+ var import_components53 = require("@transferwise/components");
3261
+ var import_jsx_runtime76 = require("react/jsx-runtime");
3234
3262
  var getAdditionalInfo = (additionalInfo) => {
3235
3263
  if (!additionalInfo) {
3236
3264
  return void 0;
3237
3265
  }
3238
3266
  const { href, text, onClick } = additionalInfo;
3239
3267
  if (href || onClick) {
3240
- return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
3241
- import_components52.ListItem.AdditionalInfo,
3268
+ return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
3269
+ import_components53.ListItem.AdditionalInfo,
3242
3270
  {
3243
3271
  action: {
3244
3272
  label: text,
@@ -3249,17 +3277,17 @@ var getAdditionalInfo = (additionalInfo) => {
3249
3277
  }
3250
3278
  );
3251
3279
  }
3252
- return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_components52.ListItem.AdditionalInfo, { children: additionalInfo == null ? void 0 : additionalInfo.text });
3280
+ return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_components53.ListItem.AdditionalInfo, { children: additionalInfo == null ? void 0 : additionalInfo.text });
3253
3281
  };
3254
3282
 
3255
3283
  // ../renderers/src/NewListItem/NewDecisionRenderer.tsx
3256
- var import_jsx_runtime76 = require("react/jsx-runtime");
3284
+ var import_jsx_runtime77 = require("react/jsx-runtime");
3257
3285
  var DecisionRenderer2 = {
3258
3286
  canRenderType: "decision",
3259
- render: (props) => /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(DecisionWrapper, __spreadProps(__spreadValues({}, props), { renderDecisionList: renderDecisionList2 }))
3287
+ render: (props) => /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(DecisionWrapper, __spreadProps(__spreadValues({}, props), { renderDecisionList: renderDecisionList2 }))
3260
3288
  };
3261
3289
  var renderDecisionList2 = ({ options, control }) => {
3262
- return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_jsx_runtime76.Fragment, { children: options.map((option) => {
3290
+ return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_jsx_runtime77.Fragment, { children: options.map((option) => {
3263
3291
  const {
3264
3292
  description,
3265
3293
  disabled,
@@ -3272,8 +3300,8 @@ var renderDecisionList2 = ({ options, control }) => {
3272
3300
  supportingValues,
3273
3301
  onClick
3274
3302
  } = option;
3275
- return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(
3276
- import_components53.ListItem,
3303
+ return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
3304
+ import_components54.ListItem,
3277
3305
  {
3278
3306
  title: itemTitle,
3279
3307
  subtitle: description,
@@ -3284,7 +3312,7 @@ var renderDecisionList2 = ({ options, control }) => {
3284
3312
  media: getMedia(media, control === "with-avatar" || tag === "with-avatar"),
3285
3313
  prompt: getInlineAlert(inlineAlert),
3286
3314
  additionalInfo: additionalText ? getAdditionalInfo({ text: additionalText }) : void 0,
3287
- control: href ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_components53.ListItem.Navigation, { href, target: "_blank" }) : /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_components53.ListItem.Navigation, { onClick })
3315
+ control: href ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_components54.ListItem.Navigation, { href, target: "_blank" }) : /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_components54.ListItem.Navigation, { onClick })
3288
3316
  },
3289
3317
  JSON.stringify(option)
3290
3318
  );
@@ -3293,12 +3321,12 @@ var renderDecisionList2 = ({ options, control }) => {
3293
3321
  var NewDecisionRenderer_default = DecisionRenderer2;
3294
3322
 
3295
3323
  // ../renderers/src/NewListItem/NewListRenderer.tsx
3296
- var import_components54 = require("@transferwise/components");
3297
- var import_jsx_runtime77 = require("react/jsx-runtime");
3324
+ var import_components55 = require("@transferwise/components");
3325
+ var import_jsx_runtime78 = require("react/jsx-runtime");
3298
3326
  var ListRenderer2 = {
3299
3327
  canRenderType: "list",
3300
- render: ({ callToAction, control, margin, items, title }) => /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: getMargin(margin), children: [
3301
- /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(Header7, { title, callToAction }),
3328
+ render: ({ callToAction, control, margin, items, title }) => /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: getMargin(margin), children: [
3329
+ /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Header7, { title, callToAction }),
3302
3330
  items.map((item) => {
3303
3331
  const {
3304
3332
  title: itemTitle,
@@ -3309,8 +3337,8 @@ var ListRenderer2 = {
3309
3337
  additionalInfo,
3310
3338
  inlineAlert
3311
3339
  } = item;
3312
- return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
3313
- import_components54.ListItem,
3340
+ return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
3341
+ import_components55.ListItem,
3314
3342
  {
3315
3343
  title: itemTitle,
3316
3344
  subtitle: description,
@@ -3328,9 +3356,9 @@ var ListRenderer2 = {
3328
3356
  var NewListRenderer_default = ListRenderer2;
3329
3357
 
3330
3358
  // ../renderers/src/NewListItem/NewReviewRenderer.tsx
3331
- var import_components55 = require("@transferwise/components");
3359
+ var import_components56 = require("@transferwise/components");
3332
3360
  var import_icons4 = require("@transferwise/icons");
3333
- var import_jsx_runtime78 = require("react/jsx-runtime");
3361
+ var import_jsx_runtime79 = require("react/jsx-runtime");
3334
3362
  var IGNORED_CONTROLS = [
3335
3363
  "horizontal",
3336
3364
  "horizontal-end-aligned",
@@ -3340,8 +3368,8 @@ var IGNORED_CONTROLS = [
3340
3368
  var ReviewRenderer2 = {
3341
3369
  canRenderType: "review",
3342
3370
  canRender: ({ control }) => control ? !IGNORED_CONTROLS.includes(control) : true,
3343
- render: ({ callToAction, control, margin, fields, title }) => /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: getMargin(margin), children: [
3344
- /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Header7, { title, callToAction }),
3371
+ render: ({ callToAction, control, margin, fields, title }) => /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: getMargin(margin), children: [
3372
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(Header7, { title, callToAction }),
3345
3373
  fields.map((field) => {
3346
3374
  var _a;
3347
3375
  const {
@@ -3354,8 +3382,8 @@ var ReviewRenderer2 = {
3354
3382
  help,
3355
3383
  callToAction: itemCallToAction
3356
3384
  } = field;
3357
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
3358
- import_components55.ListItem,
3385
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
3386
+ import_components56.ListItem,
3359
3387
  {
3360
3388
  title: value,
3361
3389
  subtitle: label,
@@ -3376,10 +3404,10 @@ var getCTAControl = (callToAction) => {
3376
3404
  }
3377
3405
  const { accessibilityDescription, href, title, onClick } = callToAction;
3378
3406
  if (href) {
3379
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_components55.ListItem.Button, { href, partiallyInteractive: true, "aria-description": accessibilityDescription, children: title });
3407
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_components56.ListItem.Button, { href, partiallyInteractive: true, "aria-description": accessibilityDescription, children: title });
3380
3408
  }
3381
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
3382
- import_components55.ListItem.Button,
3409
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
3410
+ import_components56.ListItem.Button,
3383
3411
  {
3384
3412
  "aria-description": accessibilityDescription,
3385
3413
  partiallyInteractive: true,
@@ -3392,27 +3420,27 @@ var getHelpControl = (help) => {
3392
3420
  if (!help) {
3393
3421
  return void 0;
3394
3422
  }
3395
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_components55.Popover, { content: help, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_components55.ListItem.IconButton, { partiallyInteractive: true, children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_icons4.QuestionMarkCircle, {}) }) });
3423
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_components56.Popover, { content: help, children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_components56.ListItem.IconButton, { partiallyInteractive: true, children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_icons4.QuestionMarkCircle, {}) }) });
3396
3424
  };
3397
3425
  var NewReviewRenderer_default = ReviewRenderer2;
3398
3426
 
3399
3427
  // ../renderers/src/NewListItem/NewStatusListRenderer.tsx
3400
- var import_components56 = require("@transferwise/components");
3401
- var import_jsx_runtime79 = require("react/jsx-runtime");
3428
+ var import_components57 = require("@transferwise/components");
3429
+ var import_jsx_runtime80 = require("react/jsx-runtime");
3402
3430
  var NewStatusListRenderer = {
3403
3431
  canRenderType: "status-list",
3404
- render: ({ margin, items, title }) => /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: getMargin(margin), children: [
3405
- title ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_components56.Header, { title }) : null,
3432
+ render: ({ margin, items, title }) => /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: getMargin(margin), children: [
3433
+ title ? /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components57.Header, { title }) : null,
3406
3434
  items.map((item) => {
3407
3435
  const { callToAction, description, icon, status, title: itemTitle } = item;
3408
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
3409
- import_components56.ListItem,
3436
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
3437
+ import_components57.ListItem,
3410
3438
  {
3411
3439
  title: itemTitle,
3412
3440
  subtitle: description,
3413
- media: icon && "name" in icon ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_components56.AvatarView, { badge: { status: mapStatus2(status) }, children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(DynamicIcon_default, { name: icon.name }) }) : void 0,
3414
- additionalInfo: callToAction ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
3415
- import_components56.ListItem.AdditionalInfo,
3441
+ media: icon && "name" in icon ? /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components57.AvatarView, { badge: { status: mapStatus2(status) }, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(DynamicIcon_default, { name: icon.name }) }) : void 0,
3442
+ additionalInfo: callToAction ? /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
3443
+ import_components57.ListItem.AdditionalInfo,
3416
3444
  {
3417
3445
  action: {
3418
3446
  href: callToAction.href,
@@ -3441,30 +3469,30 @@ var mapStatus2 = (status) => {
3441
3469
  var NewStatusListRenderer_default = NewStatusListRenderer;
3442
3470
 
3443
3471
  // ../renderers/src/ButtonRenderer/ButtonRendererV2.tsx
3444
- var import_components57 = require("@transferwise/components");
3472
+ var import_components58 = require("@transferwise/components");
3445
3473
 
3446
3474
  // ../renderers/src/utils/isButtonPriority.ts
3447
3475
  var validPriorities = ["primary", "secondary", "secondary-neutral", "tertiary"];
3448
3476
  var isButtonPriority = (control) => validPriorities.includes(control);
3449
3477
 
3450
3478
  // ../renderers/src/ButtonRenderer/ButtonRendererV2.tsx
3451
- var import_react18 = require("react");
3452
- var import_jsx_runtime80 = require("react/jsx-runtime");
3479
+ var import_react19 = require("react");
3480
+ var import_jsx_runtime81 = require("react/jsx-runtime");
3453
3481
  var ButtonRendererV2 = {
3454
3482
  canRenderType: "button",
3455
3483
  render: ButtonComponent2
3456
3484
  };
3457
3485
  function ButtonComponent2(props) {
3458
3486
  const { control, context, disabled, margin, title, size, stepLoadingState, onClick } = props;
3459
- const [spinny, setSpinny] = (0, import_react18.useState)(false);
3460
- (0, import_react18.useEffect)(() => {
3487
+ const [spinny, setSpinny] = (0, import_react19.useState)(false);
3488
+ (0, import_react19.useEffect)(() => {
3461
3489
  if (stepLoadingState === "idle") {
3462
3490
  setSpinny(false);
3463
3491
  }
3464
3492
  }, [stepLoadingState]);
3465
3493
  const loading = spinny && stepLoadingState !== "idle";
3466
- return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
3467
- import_components57.Button,
3494
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
3495
+ import_components58.Button,
3468
3496
  {
3469
3497
  v2: true,
3470
3498
  block: true,
@@ -3486,17 +3514,17 @@ var getSentiment2 = (context) => context === "negative" ? "negative" : "default"
3486
3514
  var getPriority3 = (control) => control && isButtonPriority(control) ? control : "secondary";
3487
3515
 
3488
3516
  // ../renderers/src/ProgressRenderer.tsx
3489
- var import_components58 = require("@transferwise/components");
3490
- var import_jsx_runtime81 = require("react/jsx-runtime");
3517
+ var import_components59 = require("@transferwise/components");
3518
+ var import_jsx_runtime82 = require("react/jsx-runtime");
3491
3519
  var ProgressRenderer = {
3492
3520
  canRenderType: "progress",
3493
3521
  render: ({ uid, title, help, progress, progressText, margin, description }) => {
3494
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
3495
- import_components58.ProgressBar,
3522
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
3523
+ import_components59.ProgressBar,
3496
3524
  {
3497
3525
  id: uid,
3498
3526
  className: getMargin(margin),
3499
- title: title && help ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(LabelContentWithHelp, { text: title, help }) : title,
3527
+ title: title && help ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(LabelContentWithHelp, { text: title, help }) : title,
3500
3528
  description,
3501
3529
  progress: {
3502
3530
  max: 1,
@@ -3860,7 +3888,7 @@ var id_default = {
3860
3888
  "df.wise.CopyFeedback.copy": "Disalin ke clipboard",
3861
3889
  "df.wise.CopyFeedback.copyFailed": "Gagal menyalin ke clipboard",
3862
3890
  "df.wise.Decision.all": "Semua",
3863
- "df.wise.Decision.currenciesWithAccountDetails": "Saldo dengan detail rekening",
3891
+ "df.wise.Decision.currenciesWithAccountDetails": "Mata uang dengan detail rekening",
3864
3892
  "df.wise.Decision.filterPlaceholder": "Mulai mengetik untuk mencari",
3865
3893
  "df.wise.Decision.noResults": "Tidak ada hasil",
3866
3894
  "df.wise.Decision.popular": "Populer",
@@ -4410,14 +4438,14 @@ var translations = languages.reduce(
4410
4438
  var i18n_default = translations;
4411
4439
 
4412
4440
  // src/dynamicFlow/DynamicFlow.tsx
4413
- var import_react19 = require("react");
4441
+ var import_react20 = require("react");
4414
4442
  var import_react_intl22 = require("react-intl");
4415
4443
  var import_dynamic_flow_client2 = require("@wise/dynamic-flow-client");
4416
4444
 
4417
4445
  // src/dynamicFlow/telemetry/app-version.ts
4418
4446
  var appVersion = (
4419
4447
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
4420
- typeof process !== "undefined" ? "4.31.3" : "0.0.0"
4448
+ typeof process !== "undefined" ? "4.32.0" : "0.0.0"
4421
4449
  );
4422
4450
 
4423
4451
  // src/dynamicFlow/telemetry/getLogEvent.ts
@@ -4472,12 +4500,12 @@ var messages_default = (0, import_react_intl21.defineMessages)({
4472
4500
  });
4473
4501
 
4474
4502
  // src/dynamicFlow/DynamicFlow.tsx
4475
- var import_jsx_runtime82 = require("react/jsx-runtime");
4503
+ var import_jsx_runtime83 = require("react/jsx-runtime");
4476
4504
  var wiseRenderers = getWiseRenderers();
4477
4505
  function DynamicFlowLegacy(props) {
4478
4506
  const { customFetch = globalThis.fetch } = props;
4479
4507
  const coreProps = __spreadProps(__spreadValues({}, props), { httpClient: customFetch });
4480
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_dynamic_flow_client2.DynamicFlow, __spreadValues({}, coreProps));
4508
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_dynamic_flow_client2.DynamicFlow, __spreadValues({}, coreProps));
4481
4509
  }
4482
4510
  function DynamicFlowRevamp(props) {
4483
4511
  const {
@@ -4493,9 +4521,9 @@ function DynamicFlowRevamp(props) {
4493
4521
  const { formatMessage } = (0, import_react_intl22.useIntl)();
4494
4522
  const createSnackBar = useSnackBarIfAvailable();
4495
4523
  const httpClient = useWiseHttpClient(customFetch);
4496
- const mergedRenderers = (0, import_react19.useMemo)(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
4497
- const logEvent = (0, import_react19.useMemo)(() => getLogEvent(onLog), [onLog]);
4498
- const trackEvent = (0, import_react19.useMemo)(
4524
+ const mergedRenderers = (0, import_react20.useMemo)(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
4525
+ const logEvent = (0, import_react20.useMemo)(() => getLogEvent(onLog), [onLog]);
4526
+ const trackEvent = (0, import_react20.useMemo)(
4499
4527
  () => getTrackEvent(onEvent, onAnalytics, onThemeChange),
4500
4528
  [onEvent, onAnalytics, onThemeChange]
4501
4529
  );
@@ -4514,9 +4542,9 @@ function DynamicFlowRevamp(props) {
4514
4542
  onLink,
4515
4543
  onCopy
4516
4544
  });
4517
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_dynamic_flow_client2.DynamicFlowCoreRevamp, __spreadValues({}, coreProps)) });
4545
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_dynamic_flow_client2.DynamicFlowCoreRevamp, __spreadValues({}, coreProps)) });
4518
4546
  }
4519
- var DynamicForm = (0, import_react19.forwardRef)(function DynamicForm2(props, ref) {
4547
+ var DynamicForm = (0, import_react20.forwardRef)(function DynamicForm2(props, ref) {
4520
4548
  const {
4521
4549
  className = "",
4522
4550
  customFetch = globalThis.fetch,
@@ -4530,9 +4558,9 @@ var DynamicForm = (0, import_react19.forwardRef)(function DynamicForm2(props, re
4530
4558
  const { formatMessage } = (0, import_react_intl22.useIntl)();
4531
4559
  const createSnackBar = useSnackBarIfAvailable();
4532
4560
  const httpClient = useWiseHttpClient(customFetch);
4533
- const mergedRenderers = (0, import_react19.useMemo)(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
4534
- const logEvent = (0, import_react19.useMemo)(() => getLogEvent(onLog), [onLog]);
4535
- const trackEvent = (0, import_react19.useMemo)(
4561
+ const mergedRenderers = (0, import_react20.useMemo)(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
4562
+ const logEvent = (0, import_react20.useMemo)(() => getLogEvent(onLog), [onLog]);
4563
+ const trackEvent = (0, import_react20.useMemo)(
4536
4564
  () => getTrackEvent(onEvent, onAnalytics, onThemeChange),
4537
4565
  [onEvent, onAnalytics, onThemeChange]
4538
4566
  );
@@ -4551,11 +4579,11 @@ var DynamicForm = (0, import_react19.forwardRef)(function DynamicForm2(props, re
4551
4579
  onLink,
4552
4580
  onCopy
4553
4581
  });
4554
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_dynamic_flow_client2.DynamicFormCore, __spreadProps(__spreadValues({}, coreProps), { ref })) });
4582
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_dynamic_flow_client2.DynamicFormCore, __spreadProps(__spreadValues({}, coreProps), { ref })) });
4555
4583
  });
4556
4584
  var useWiseHttpClient = (httpClient) => {
4557
4585
  const { locale } = (0, import_react_intl22.useIntl)();
4558
- return (0, import_react19.useCallback)(
4586
+ return (0, import_react20.useCallback)(
4559
4587
  async (input, init = {}) => {
4560
4588
  const headers = new Headers(init.headers);
4561
4589
  headers.set("accept-language", locale);
package/build/main.mjs CHANGED
@@ -2867,50 +2867,78 @@ function SplashStepRendererComponent(props) {
2867
2867
  }
2868
2868
 
2869
2869
  // ../renderers/src/step/StepRenderer.tsx
2870
- import { Alert as Alert2, Title as Title2 } from "@transferwise/components";
2871
- import { jsx as jsx69, jsxs as jsxs28 } from "react/jsx-runtime";
2870
+ import { Title as Title2 } from "@transferwise/components";
2871
+
2872
+ // ../renderers/src/step/StepError.tsx
2873
+ import { Alert as Alert2 } from "@transferwise/components";
2874
+ import { useEffect as useEffect8, useState as useState11 } from "react";
2875
+ import { jsx as jsx69 } from "react/jsx-runtime";
2876
+ var StepError = ({
2877
+ error,
2878
+ uid,
2879
+ stepLoadingState
2880
+ }) => {
2881
+ const alertId = `${uid}-step-alert`;
2882
+ const [previousLoadingState, setPreviousLoadingState] = useState11(stepLoadingState);
2883
+ useEffect8(() => {
2884
+ var _a;
2885
+ if (previousLoadingState === "submitting" && stepLoadingState === "idle") {
2886
+ if (error) {
2887
+ const element = document.getElementById(alertId);
2888
+ (_a = element == null ? void 0 : element.scrollIntoView) == null ? void 0 : _a.call(element, {
2889
+ behavior: "smooth"
2890
+ });
2891
+ }
2892
+ }
2893
+ setPreviousLoadingState(stepLoadingState);
2894
+ }, [alertId, error, previousLoadingState, stepLoadingState]);
2895
+ return /* @__PURE__ */ jsx69("div", { id: alertId, children: error ? /* @__PURE__ */ jsx69(Alert2, { type: "negative", className: "m-b-2", message: error }) : void 0 });
2896
+ };
2897
+
2898
+ // ../renderers/src/step/StepRenderer.tsx
2899
+ import { jsx as jsx70, jsxs as jsxs28 } from "react/jsx-runtime";
2872
2900
  var StepRenderer = {
2873
2901
  canRenderType: "step",
2874
2902
  render: StepRendererComponent
2875
2903
  };
2876
2904
  function StepRendererComponent(props) {
2877
- const { back, description, error, title, children, toolbar, footer } = props;
2905
+ const { uid, back, description, error, title, children, toolbar, footer, stepLoadingState } = props;
2878
2906
  const hasFooter = footer && Array.isArray(footer) && footer.length > 0;
2879
2907
  return /* @__PURE__ */ jsxs28("div", { children: [
2880
- /* @__PURE__ */ jsx69(TopBar, { back, toolbar }),
2908
+ /* @__PURE__ */ jsx70(TopBar, { back, toolbar }),
2881
2909
  title || description ? /* @__PURE__ */ jsxs28("div", { className: "m-b-4", children: [
2882
- title ? /* @__PURE__ */ jsx69(Title2, { as: "h1", type: "title-section", className: "text-xs-center m-b-2", children: title }) : void 0,
2883
- description ? /* @__PURE__ */ jsx69("p", { className: "text-xs-center np-text-body-large", children: description }) : void 0
2910
+ title ? /* @__PURE__ */ jsx70(Title2, { as: "h1", type: "title-section", className: "text-xs-center m-b-2", children: title }) : void 0,
2911
+ description ? /* @__PURE__ */ jsx70("p", { className: "text-xs-center np-text-body-large", children: description }) : void 0
2884
2912
  ] }) : void 0,
2885
- error ? /* @__PURE__ */ jsx69(Alert2, { type: "negative", className: "m-b-2", message: error }) : void 0,
2913
+ /* @__PURE__ */ jsx70(StepError, { error, uid, stepLoadingState }),
2886
2914
  children,
2887
- hasFooter ? /* @__PURE__ */ jsx69("div", { className: "df-step-fixed__footer", children: footer }) : void 0
2915
+ hasFooter ? /* @__PURE__ */ jsx70("div", { className: "df-step-fixed__footer", children: footer }) : void 0
2888
2916
  ] });
2889
2917
  }
2890
2918
 
2891
2919
  // ../renderers/src/TabsRenderer.tsx
2892
2920
  import { Chips, SegmentedControl as SegmentedControl2, Tabs as Tabs2 } from "@transferwise/components";
2893
- import { useState as useState11 } from "react";
2894
- import { jsx as jsx70, jsxs as jsxs29 } from "react/jsx-runtime";
2921
+ import { useState as useState12 } from "react";
2922
+ import { jsx as jsx71, jsxs as jsxs29 } from "react/jsx-runtime";
2895
2923
  var TabsRenderer = {
2896
2924
  canRenderType: "tabs",
2897
2925
  render: (props) => {
2898
2926
  switch (props.control) {
2899
2927
  case "segmented":
2900
2928
  if (props.tabs.length > 3) {
2901
- return /* @__PURE__ */ jsx70(TabsRendererComponent, __spreadValues({}, props));
2929
+ return /* @__PURE__ */ jsx71(TabsRendererComponent, __spreadValues({}, props));
2902
2930
  }
2903
- return /* @__PURE__ */ jsx70(SegmentedTabsRendererComponent, __spreadValues({}, props));
2931
+ return /* @__PURE__ */ jsx71(SegmentedTabsRendererComponent, __spreadValues({}, props));
2904
2932
  case "chips":
2905
- return /* @__PURE__ */ jsx70(ChipsTabsRendererComponent, __spreadValues({}, props));
2933
+ return /* @__PURE__ */ jsx71(ChipsTabsRendererComponent, __spreadValues({}, props));
2906
2934
  default:
2907
- return /* @__PURE__ */ jsx70(TabsRendererComponent, __spreadValues({}, props));
2935
+ return /* @__PURE__ */ jsx71(TabsRendererComponent, __spreadValues({}, props));
2908
2936
  }
2909
2937
  }
2910
2938
  };
2911
2939
  function TabsRendererComponent({ uid, margin, tabs }) {
2912
- const [selectedIndex, setSelectedIndex] = useState11(0);
2913
- return /* @__PURE__ */ jsx70("div", { className: getMargin(margin), children: /* @__PURE__ */ jsx70(
2940
+ const [selectedIndex, setSelectedIndex] = useState12(0);
2941
+ return /* @__PURE__ */ jsx71("div", { className: getMargin(margin), children: /* @__PURE__ */ jsx71(
2914
2942
  Tabs2,
2915
2943
  {
2916
2944
  name: uid,
@@ -2930,9 +2958,9 @@ function TabsRendererComponent({ uid, margin, tabs }) {
2930
2958
  }
2931
2959
  function SegmentedTabsRendererComponent({ uid, margin, tabs }) {
2932
2960
  var _a;
2933
- const [selectedIndex, setSelectedIndex] = useState11(0);
2961
+ const [selectedIndex, setSelectedIndex] = useState12(0);
2934
2962
  return /* @__PURE__ */ jsxs29("div", { className: getMargin(margin), children: [
2935
- /* @__PURE__ */ jsx70(
2963
+ /* @__PURE__ */ jsx71(
2936
2964
  SegmentedControl2,
2937
2965
  {
2938
2966
  name: uid,
@@ -2947,14 +2975,14 @@ function SegmentedTabsRendererComponent({ uid, margin, tabs }) {
2947
2975
  onChange: (value) => setSelectedIndex(Number(value))
2948
2976
  }
2949
2977
  ),
2950
- /* @__PURE__ */ jsx70("div", { id: `${uid}-children`, className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
2978
+ /* @__PURE__ */ jsx71("div", { id: `${uid}-children`, className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
2951
2979
  ] });
2952
2980
  }
2953
2981
  function ChipsTabsRendererComponent({ margin, tabs }) {
2954
2982
  var _a;
2955
- const [selectedIndex, setSelectedIndex] = useState11(0);
2983
+ const [selectedIndex, setSelectedIndex] = useState12(0);
2956
2984
  return /* @__PURE__ */ jsxs29("div", { className: getMargin(margin), children: [
2957
- /* @__PURE__ */ jsx70("div", { className: "chips-container", children: /* @__PURE__ */ jsx70(
2985
+ /* @__PURE__ */ jsx71("div", { className: "chips-container", children: /* @__PURE__ */ jsx71(
2958
2986
  Chips,
2959
2987
  {
2960
2988
  chips: tabs.map((tab, index) => ({ label: tab.title, value: index })),
@@ -2962,7 +2990,7 @@ function ChipsTabsRendererComponent({ margin, tabs }) {
2962
2990
  onChange: ({ selectedValue }) => setSelectedIndex(Number(selectedValue))
2963
2991
  }
2964
2992
  ) }),
2965
- /* @__PURE__ */ jsx70("div", { className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
2993
+ /* @__PURE__ */ jsx71("div", { className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
2966
2994
  ] });
2967
2995
  }
2968
2996
 
@@ -2977,7 +3005,7 @@ import {
2977
3005
  TextArea,
2978
3006
  TextareaWithDisplayFormat
2979
3007
  } from "@transferwise/components";
2980
- import { jsx as jsx71 } from "react/jsx-runtime";
3008
+ import { jsx as jsx72 } from "react/jsx-runtime";
2981
3009
  var commonKeys = [
2982
3010
  "autoComplete",
2983
3011
  "autoCapitalize",
@@ -2996,12 +3024,12 @@ function VariableTextInput(inputProps) {
2996
3024
  const commonProps = __spreadProps(__spreadValues({}, pick(inputProps, ...commonKeys)), { name: id });
2997
3025
  switch (control) {
2998
3026
  case "email":
2999
- return /* @__PURE__ */ jsx71(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "email", onChange }));
3027
+ return /* @__PURE__ */ jsx72(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "email", onChange }));
3000
3028
  case "password":
3001
- return /* @__PURE__ */ jsx71(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "password", onChange }));
3029
+ return /* @__PURE__ */ jsx72(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "password", onChange }));
3002
3030
  case "numeric": {
3003
3031
  const numericProps = __spreadProps(__spreadValues({}, commonProps), { type: "number", onWheel });
3004
- return /* @__PURE__ */ jsx71(
3032
+ return /* @__PURE__ */ jsx72(
3005
3033
  TextInput,
3006
3034
  __spreadProps(__spreadValues({}, numericProps), {
3007
3035
  onChange: (newValue) => {
@@ -3012,9 +3040,9 @@ function VariableTextInput(inputProps) {
3012
3040
  );
3013
3041
  }
3014
3042
  case "phone-number":
3015
- return /* @__PURE__ */ jsx71(PhoneNumberInput, __spreadProps(__spreadValues({ initialValue: value }, commonProps), { onChange }));
3043
+ return /* @__PURE__ */ jsx72(PhoneNumberInput, __spreadProps(__spreadValues({ initialValue: value }, commonProps), { onChange }));
3016
3044
  default: {
3017
- return /* @__PURE__ */ jsx71(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "text", onChange }));
3045
+ return /* @__PURE__ */ jsx72(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "text", onChange }));
3018
3046
  }
3019
3047
  }
3020
3048
  }
@@ -3022,11 +3050,11 @@ function TextInput(props) {
3022
3050
  const _a = props, { control, displayFormat, onChange } = _a, commonProps = __objRest(_a, ["control", "displayFormat", "onChange"]);
3023
3051
  const InputWithPattern = control === "textarea" ? TextareaWithDisplayFormat : InputWithDisplayFormat;
3024
3052
  const InputWithoutPattern = control === "textarea" ? TextArea : Input5;
3025
- return displayFormat ? /* @__PURE__ */ jsx71(InputWithPattern, __spreadProps(__spreadValues({ displayPattern: displayFormat }, commonProps), { onChange })) : /* @__PURE__ */ jsx71(InputWithoutPattern, __spreadProps(__spreadValues({}, commonProps), { onChange: (e) => onChange(e.target.value) }));
3053
+ return displayFormat ? /* @__PURE__ */ jsx72(InputWithPattern, __spreadProps(__spreadValues({ displayPattern: displayFormat }, commonProps), { onChange })) : /* @__PURE__ */ jsx72(InputWithoutPattern, __spreadProps(__spreadValues({}, commonProps), { onChange: (e) => onChange(e.target.value) }));
3026
3054
  }
3027
3055
 
3028
3056
  // ../renderers/src/TextInputRenderer.tsx
3029
- import { jsx as jsx72 } from "react/jsx-runtime";
3057
+ import { jsx as jsx73 } from "react/jsx-runtime";
3030
3058
  var TextInputRenderer = {
3031
3059
  canRenderType: "input-text",
3032
3060
  render: (props) => {
@@ -3059,7 +3087,7 @@ var TextInputRenderer = {
3059
3087
  }
3060
3088
  }
3061
3089
  });
3062
- return /* @__PURE__ */ jsx72(
3090
+ return /* @__PURE__ */ jsx73(
3063
3091
  FieldInput_default,
3064
3092
  {
3065
3093
  id,
@@ -3067,7 +3095,7 @@ var TextInputRenderer = {
3067
3095
  description,
3068
3096
  validation: validationState,
3069
3097
  help,
3070
- children: /* @__PURE__ */ jsx72(InputGroup3, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx72(VariableTextInput, __spreadValues({}, inputProps)) })
3098
+ children: /* @__PURE__ */ jsx73(InputGroup3, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx73(VariableTextInput, __spreadValues({}, inputProps)) })
3071
3099
  }
3072
3100
  );
3073
3101
  }
@@ -3081,7 +3109,7 @@ import { Upload, UploadInput as UploadInput2 } from "@transferwise/components";
3081
3109
  var getRandomId = () => Math.random().toString(36).substring(2);
3082
3110
 
3083
3111
  // ../renderers/src/UploadInputRenderer.tsx
3084
- import { jsx as jsx73 } from "react/jsx-runtime";
3112
+ import { jsx as jsx74 } from "react/jsx-runtime";
3085
3113
  var UploadInputRenderer = {
3086
3114
  canRenderType: "input-upload",
3087
3115
  render: (props) => {
@@ -3097,14 +3125,14 @@ var UploadInputRenderer = {
3097
3125
  };
3098
3126
  return (
3099
3127
  // We don't pass help here as there is no sensible place to display it
3100
- /* @__PURE__ */ jsx73(
3128
+ /* @__PURE__ */ jsx74(
3101
3129
  UploadFieldInput_default,
3102
3130
  {
3103
3131
  id,
3104
3132
  label: void 0,
3105
3133
  description: void 0,
3106
3134
  validation: validationState,
3107
- children: /* @__PURE__ */ jsx73(
3135
+ children: /* @__PURE__ */ jsx74(
3108
3136
  UploadInput2,
3109
3137
  {
3110
3138
  id,
@@ -3163,7 +3191,7 @@ var LargeUploadRenderer = {
3163
3191
  };
3164
3192
  const filetypes = acceptsToFileTypes(accepts);
3165
3193
  const usAccept = filetypes === "*" ? "*" : filetypes.join(",");
3166
- return /* @__PURE__ */ jsx73(
3194
+ return /* @__PURE__ */ jsx74(
3167
3195
  FieldInput_default,
3168
3196
  {
3169
3197
  id,
@@ -3171,7 +3199,7 @@ var LargeUploadRenderer = {
3171
3199
  description,
3172
3200
  validation: validationState,
3173
3201
  help,
3174
- children: /* @__PURE__ */ jsx73(
3202
+ children: /* @__PURE__ */ jsx74(
3175
3203
  Upload,
3176
3204
  __spreadProps(__spreadValues({}, uploadProps), {
3177
3205
  usAccept,
@@ -3191,19 +3219,19 @@ import { ListItem as ListItem4 } from "@transferwise/components";
3191
3219
 
3192
3220
  // ../renderers/src/NewListItem/getInlineAlert.tsx
3193
3221
  import { ListItem as ListItem2 } from "@transferwise/components";
3194
- import { jsx as jsx74 } from "react/jsx-runtime";
3195
- var getInlineAlert = (inlineAlert) => inlineAlert ? /* @__PURE__ */ jsx74(ListItem2.Prompt, { sentiment: inlineAlert == null ? void 0 : inlineAlert.context, children: inlineAlert.content }) : void 0;
3222
+ import { jsx as jsx75 } from "react/jsx-runtime";
3223
+ var getInlineAlert = (inlineAlert) => inlineAlert ? /* @__PURE__ */ jsx75(ListItem2.Prompt, { sentiment: inlineAlert == null ? void 0 : inlineAlert.context, children: inlineAlert.content }) : void 0;
3196
3224
 
3197
3225
  // ../renderers/src/NewListItem/getAdditionalInfo.tsx
3198
3226
  import { ListItem as ListItem3 } from "@transferwise/components";
3199
- import { jsx as jsx75 } from "react/jsx-runtime";
3227
+ import { jsx as jsx76 } from "react/jsx-runtime";
3200
3228
  var getAdditionalInfo = (additionalInfo) => {
3201
3229
  if (!additionalInfo) {
3202
3230
  return void 0;
3203
3231
  }
3204
3232
  const { href, text, onClick } = additionalInfo;
3205
3233
  if (href || onClick) {
3206
- return /* @__PURE__ */ jsx75(
3234
+ return /* @__PURE__ */ jsx76(
3207
3235
  ListItem3.AdditionalInfo,
3208
3236
  {
3209
3237
  action: {
@@ -3215,17 +3243,17 @@ var getAdditionalInfo = (additionalInfo) => {
3215
3243
  }
3216
3244
  );
3217
3245
  }
3218
- return /* @__PURE__ */ jsx75(ListItem3.AdditionalInfo, { children: additionalInfo == null ? void 0 : additionalInfo.text });
3246
+ return /* @__PURE__ */ jsx76(ListItem3.AdditionalInfo, { children: additionalInfo == null ? void 0 : additionalInfo.text });
3219
3247
  };
3220
3248
 
3221
3249
  // ../renderers/src/NewListItem/NewDecisionRenderer.tsx
3222
- import { Fragment as Fragment10, jsx as jsx76 } from "react/jsx-runtime";
3250
+ import { Fragment as Fragment10, jsx as jsx77 } from "react/jsx-runtime";
3223
3251
  var DecisionRenderer2 = {
3224
3252
  canRenderType: "decision",
3225
- render: (props) => /* @__PURE__ */ jsx76(DecisionWrapper, __spreadProps(__spreadValues({}, props), { renderDecisionList: renderDecisionList2 }))
3253
+ render: (props) => /* @__PURE__ */ jsx77(DecisionWrapper, __spreadProps(__spreadValues({}, props), { renderDecisionList: renderDecisionList2 }))
3226
3254
  };
3227
3255
  var renderDecisionList2 = ({ options, control }) => {
3228
- return /* @__PURE__ */ jsx76(Fragment10, { children: options.map((option) => {
3256
+ return /* @__PURE__ */ jsx77(Fragment10, { children: options.map((option) => {
3229
3257
  const {
3230
3258
  description,
3231
3259
  disabled,
@@ -3238,7 +3266,7 @@ var renderDecisionList2 = ({ options, control }) => {
3238
3266
  supportingValues,
3239
3267
  onClick
3240
3268
  } = option;
3241
- return /* @__PURE__ */ jsx76(
3269
+ return /* @__PURE__ */ jsx77(
3242
3270
  ListItem4,
3243
3271
  {
3244
3272
  title: itemTitle,
@@ -3250,7 +3278,7 @@ var renderDecisionList2 = ({ options, control }) => {
3250
3278
  media: getMedia(media, control === "with-avatar" || tag === "with-avatar"),
3251
3279
  prompt: getInlineAlert(inlineAlert),
3252
3280
  additionalInfo: additionalText ? getAdditionalInfo({ text: additionalText }) : void 0,
3253
- control: href ? /* @__PURE__ */ jsx76(ListItem4.Navigation, { href, target: "_blank" }) : /* @__PURE__ */ jsx76(ListItem4.Navigation, { onClick })
3281
+ control: href ? /* @__PURE__ */ jsx77(ListItem4.Navigation, { href, target: "_blank" }) : /* @__PURE__ */ jsx77(ListItem4.Navigation, { onClick })
3254
3282
  },
3255
3283
  JSON.stringify(option)
3256
3284
  );
@@ -3260,11 +3288,11 @@ var NewDecisionRenderer_default = DecisionRenderer2;
3260
3288
 
3261
3289
  // ../renderers/src/NewListItem/NewListRenderer.tsx
3262
3290
  import { ListItem as ListItem5 } from "@transferwise/components";
3263
- import { jsx as jsx77, jsxs as jsxs30 } from "react/jsx-runtime";
3291
+ import { jsx as jsx78, jsxs as jsxs30 } from "react/jsx-runtime";
3264
3292
  var ListRenderer2 = {
3265
3293
  canRenderType: "list",
3266
3294
  render: ({ callToAction, control, margin, items, title }) => /* @__PURE__ */ jsxs30("div", { className: getMargin(margin), children: [
3267
- /* @__PURE__ */ jsx77(Header7, { title, callToAction }),
3295
+ /* @__PURE__ */ jsx78(Header7, { title, callToAction }),
3268
3296
  items.map((item) => {
3269
3297
  const {
3270
3298
  title: itemTitle,
@@ -3275,7 +3303,7 @@ var ListRenderer2 = {
3275
3303
  additionalInfo,
3276
3304
  inlineAlert
3277
3305
  } = item;
3278
- return /* @__PURE__ */ jsx77(
3306
+ return /* @__PURE__ */ jsx78(
3279
3307
  ListItem5,
3280
3308
  {
3281
3309
  title: itemTitle,
@@ -3296,7 +3324,7 @@ var NewListRenderer_default = ListRenderer2;
3296
3324
  // ../renderers/src/NewListItem/NewReviewRenderer.tsx
3297
3325
  import { ListItem as ListItem6, Popover } from "@transferwise/components";
3298
3326
  import { QuestionMarkCircle } from "@transferwise/icons";
3299
- import { jsx as jsx78, jsxs as jsxs31 } from "react/jsx-runtime";
3327
+ import { jsx as jsx79, jsxs as jsxs31 } from "react/jsx-runtime";
3300
3328
  var IGNORED_CONTROLS = [
3301
3329
  "horizontal",
3302
3330
  "horizontal-end-aligned",
@@ -3307,7 +3335,7 @@ var ReviewRenderer2 = {
3307
3335
  canRenderType: "review",
3308
3336
  canRender: ({ control }) => control ? !IGNORED_CONTROLS.includes(control) : true,
3309
3337
  render: ({ callToAction, control, margin, fields, title }) => /* @__PURE__ */ jsxs31("div", { className: getMargin(margin), children: [
3310
- /* @__PURE__ */ jsx78(Header7, { title, callToAction }),
3338
+ /* @__PURE__ */ jsx79(Header7, { title, callToAction }),
3311
3339
  fields.map((field) => {
3312
3340
  var _a;
3313
3341
  const {
@@ -3320,7 +3348,7 @@ var ReviewRenderer2 = {
3320
3348
  help,
3321
3349
  callToAction: itemCallToAction
3322
3350
  } = field;
3323
- return /* @__PURE__ */ jsx78(
3351
+ return /* @__PURE__ */ jsx79(
3324
3352
  ListItem6,
3325
3353
  {
3326
3354
  title: value,
@@ -3342,9 +3370,9 @@ var getCTAControl = (callToAction) => {
3342
3370
  }
3343
3371
  const { accessibilityDescription, href, title, onClick } = callToAction;
3344
3372
  if (href) {
3345
- return /* @__PURE__ */ jsx78(ListItem6.Button, { href, partiallyInteractive: true, "aria-description": accessibilityDescription, children: title });
3373
+ return /* @__PURE__ */ jsx79(ListItem6.Button, { href, partiallyInteractive: true, "aria-description": accessibilityDescription, children: title });
3346
3374
  }
3347
- return /* @__PURE__ */ jsx78(
3375
+ return /* @__PURE__ */ jsx79(
3348
3376
  ListItem6.Button,
3349
3377
  {
3350
3378
  "aria-description": accessibilityDescription,
@@ -3358,26 +3386,26 @@ var getHelpControl = (help) => {
3358
3386
  if (!help) {
3359
3387
  return void 0;
3360
3388
  }
3361
- return /* @__PURE__ */ jsx78(Popover, { content: help, children: /* @__PURE__ */ jsx78(ListItem6.IconButton, { partiallyInteractive: true, children: /* @__PURE__ */ jsx78(QuestionMarkCircle, {}) }) });
3389
+ return /* @__PURE__ */ jsx79(Popover, { content: help, children: /* @__PURE__ */ jsx79(ListItem6.IconButton, { partiallyInteractive: true, children: /* @__PURE__ */ jsx79(QuestionMarkCircle, {}) }) });
3362
3390
  };
3363
3391
  var NewReviewRenderer_default = ReviewRenderer2;
3364
3392
 
3365
3393
  // ../renderers/src/NewListItem/NewStatusListRenderer.tsx
3366
3394
  import { AvatarView as AvatarView4, Header as Header10, ListItem as ListItem7 } from "@transferwise/components";
3367
- import { jsx as jsx79, jsxs as jsxs32 } from "react/jsx-runtime";
3395
+ import { jsx as jsx80, jsxs as jsxs32 } from "react/jsx-runtime";
3368
3396
  var NewStatusListRenderer = {
3369
3397
  canRenderType: "status-list",
3370
3398
  render: ({ margin, items, title }) => /* @__PURE__ */ jsxs32("div", { className: getMargin(margin), children: [
3371
- title ? /* @__PURE__ */ jsx79(Header10, { title }) : null,
3399
+ title ? /* @__PURE__ */ jsx80(Header10, { title }) : null,
3372
3400
  items.map((item) => {
3373
3401
  const { callToAction, description, icon, status, title: itemTitle } = item;
3374
- return /* @__PURE__ */ jsx79(
3402
+ return /* @__PURE__ */ jsx80(
3375
3403
  ListItem7,
3376
3404
  {
3377
3405
  title: itemTitle,
3378
3406
  subtitle: description,
3379
- media: icon && "name" in icon ? /* @__PURE__ */ jsx79(AvatarView4, { badge: { status: mapStatus2(status) }, children: /* @__PURE__ */ jsx79(DynamicIcon_default, { name: icon.name }) }) : void 0,
3380
- additionalInfo: callToAction ? /* @__PURE__ */ jsx79(
3407
+ media: icon && "name" in icon ? /* @__PURE__ */ jsx80(AvatarView4, { badge: { status: mapStatus2(status) }, children: /* @__PURE__ */ jsx80(DynamicIcon_default, { name: icon.name }) }) : void 0,
3408
+ additionalInfo: callToAction ? /* @__PURE__ */ jsx80(
3381
3409
  ListItem7.AdditionalInfo,
3382
3410
  {
3383
3411
  action: {
@@ -3414,22 +3442,22 @@ var validPriorities = ["primary", "secondary", "secondary-neutral", "tertiary"];
3414
3442
  var isButtonPriority = (control) => validPriorities.includes(control);
3415
3443
 
3416
3444
  // ../renderers/src/ButtonRenderer/ButtonRendererV2.tsx
3417
- import { useEffect as useEffect8, useState as useState12 } from "react";
3418
- import { jsx as jsx80 } from "react/jsx-runtime";
3445
+ import { useEffect as useEffect9, useState as useState13 } from "react";
3446
+ import { jsx as jsx81 } from "react/jsx-runtime";
3419
3447
  var ButtonRendererV2 = {
3420
3448
  canRenderType: "button",
3421
3449
  render: ButtonComponent2
3422
3450
  };
3423
3451
  function ButtonComponent2(props) {
3424
3452
  const { control, context, disabled, margin, title, size, stepLoadingState, onClick } = props;
3425
- const [spinny, setSpinny] = useState12(false);
3426
- useEffect8(() => {
3453
+ const [spinny, setSpinny] = useState13(false);
3454
+ useEffect9(() => {
3427
3455
  if (stepLoadingState === "idle") {
3428
3456
  setSpinny(false);
3429
3457
  }
3430
3458
  }, [stepLoadingState]);
3431
3459
  const loading = spinny && stepLoadingState !== "idle";
3432
- return /* @__PURE__ */ jsx80(
3460
+ return /* @__PURE__ */ jsx81(
3433
3461
  Button8,
3434
3462
  {
3435
3463
  v2: true,
@@ -3453,16 +3481,16 @@ var getPriority3 = (control) => control && isButtonPriority(control) ? control :
3453
3481
 
3454
3482
  // ../renderers/src/ProgressRenderer.tsx
3455
3483
  import { ProgressBar } from "@transferwise/components";
3456
- import { jsx as jsx81 } from "react/jsx-runtime";
3484
+ import { jsx as jsx82 } from "react/jsx-runtime";
3457
3485
  var ProgressRenderer = {
3458
3486
  canRenderType: "progress",
3459
3487
  render: ({ uid, title, help, progress, progressText, margin, description }) => {
3460
- return /* @__PURE__ */ jsx81(
3488
+ return /* @__PURE__ */ jsx82(
3461
3489
  ProgressBar,
3462
3490
  {
3463
3491
  id: uid,
3464
3492
  className: getMargin(margin),
3465
- title: title && help ? /* @__PURE__ */ jsx81(LabelContentWithHelp, { text: title, help }) : title,
3493
+ title: title && help ? /* @__PURE__ */ jsx82(LabelContentWithHelp, { text: title, help }) : title,
3466
3494
  description,
3467
3495
  progress: {
3468
3496
  max: 1,
@@ -3826,7 +3854,7 @@ var id_default = {
3826
3854
  "df.wise.CopyFeedback.copy": "Disalin ke clipboard",
3827
3855
  "df.wise.CopyFeedback.copyFailed": "Gagal menyalin ke clipboard",
3828
3856
  "df.wise.Decision.all": "Semua",
3829
- "df.wise.Decision.currenciesWithAccountDetails": "Saldo dengan detail rekening",
3857
+ "df.wise.Decision.currenciesWithAccountDetails": "Mata uang dengan detail rekening",
3830
3858
  "df.wise.Decision.filterPlaceholder": "Mulai mengetik untuk mencari",
3831
3859
  "df.wise.Decision.noResults": "Tidak ada hasil",
3832
3860
  "df.wise.Decision.popular": "Populer",
@@ -4387,7 +4415,7 @@ import {
4387
4415
  // src/dynamicFlow/telemetry/app-version.ts
4388
4416
  var appVersion = (
4389
4417
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
4390
- typeof process !== "undefined" ? "4.31.3" : "0.0.0"
4418
+ typeof process !== "undefined" ? "4.32.0" : "0.0.0"
4391
4419
  );
4392
4420
 
4393
4421
  // src/dynamicFlow/telemetry/getLogEvent.ts
@@ -4442,12 +4470,12 @@ var messages_default = defineMessages10({
4442
4470
  });
4443
4471
 
4444
4472
  // src/dynamicFlow/DynamicFlow.tsx
4445
- import { jsx as jsx82 } from "react/jsx-runtime";
4473
+ import { jsx as jsx83 } from "react/jsx-runtime";
4446
4474
  var wiseRenderers = getWiseRenderers();
4447
4475
  function DynamicFlowLegacy(props) {
4448
4476
  const { customFetch = globalThis.fetch } = props;
4449
4477
  const coreProps = __spreadProps(__spreadValues({}, props), { httpClient: customFetch });
4450
- return /* @__PURE__ */ jsx82(DynamicFlowCoreLegacy, __spreadValues({}, coreProps));
4478
+ return /* @__PURE__ */ jsx83(DynamicFlowCoreLegacy, __spreadValues({}, coreProps));
4451
4479
  }
4452
4480
  function DynamicFlowRevamp(props) {
4453
4481
  const {
@@ -4484,7 +4512,7 @@ function DynamicFlowRevamp(props) {
4484
4512
  onLink,
4485
4513
  onCopy
4486
4514
  });
4487
- return /* @__PURE__ */ jsx82("div", { className, children: /* @__PURE__ */ jsx82(DynamicFlowCoreRevamp, __spreadValues({}, coreProps)) });
4515
+ return /* @__PURE__ */ jsx83("div", { className, children: /* @__PURE__ */ jsx83(DynamicFlowCoreRevamp, __spreadValues({}, coreProps)) });
4488
4516
  }
4489
4517
  var DynamicForm = forwardRef(function DynamicForm2(props, ref) {
4490
4518
  const {
@@ -4521,7 +4549,7 @@ var DynamicForm = forwardRef(function DynamicForm2(props, ref) {
4521
4549
  onLink,
4522
4550
  onCopy
4523
4551
  });
4524
- return /* @__PURE__ */ jsx82("div", { className, children: /* @__PURE__ */ jsx82(DynamicFormCore, __spreadProps(__spreadValues({}, coreProps), { ref })) });
4552
+ return /* @__PURE__ */ jsx83("div", { className, children: /* @__PURE__ */ jsx83(DynamicFormCore, __spreadProps(__spreadValues({}, coreProps), { ref })) });
4525
4553
  });
4526
4554
  var useWiseHttpClient = (httpClient) => {
4527
4555
  const { locale } = useIntl12();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wise/dynamic-flow-client-internal",
3
- "version": "4.31.3",
3
+ "version": "4.32.0",
4
4
  "description": "Dynamic Flow web client for Wise",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./build/main.js",
@@ -43,10 +43,10 @@
43
43
  "@testing-library/jest-dom": "6.8.0",
44
44
  "@testing-library/react": "16.3.0",
45
45
  "@testing-library/user-event": "14.6.1",
46
- "@transferwise/components": "46.106.0",
46
+ "@transferwise/components": "46.110.0",
47
47
  "@transferwise/formatting": "^2.13.4",
48
48
  "@transferwise/icons": "3.22.4",
49
- "@transferwise/neptune-css": "14.24.5",
49
+ "@transferwise/neptune-css": "14.24.6",
50
50
  "@types/jest": "30.0.0",
51
51
  "@types/react": "18.3.24",
52
52
  "@types/react-dom": "18.3.7",
@@ -91,7 +91,7 @@
91
91
  },
92
92
  "dependencies": {
93
93
  "classnames": "2.5.1",
94
- "@wise/dynamic-flow-client": "4.18.4",
94
+ "@wise/dynamic-flow-client": "4.18.5",
95
95
  "@wise/dynamic-flow-types": "3.15.1"
96
96
  },
97
97
  "scripts": {