@wise/dynamic-flow-client-internal 5.27.3 → 5.28.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
@@ -64,7 +64,7 @@ var require_classnames = __commonJS({
64
64
  (function() {
65
65
  "use strict";
66
66
  var hasOwn = {}.hasOwnProperty;
67
- function classNames33() {
67
+ function classNames35() {
68
68
  var classes = "";
69
69
  for (var i = 0; i < arguments.length; i++) {
70
70
  var arg = arguments[i];
@@ -82,7 +82,7 @@ var require_classnames = __commonJS({
82
82
  return "";
83
83
  }
84
84
  if (Array.isArray(arg)) {
85
- return classNames33.apply(null, arg);
85
+ return classNames35.apply(null, arg);
86
86
  }
87
87
  if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) {
88
88
  return arg.toString();
@@ -105,14 +105,14 @@ var require_classnames = __commonJS({
105
105
  return value + newClass;
106
106
  }
107
107
  if (typeof module !== "undefined" && module.exports) {
108
- classNames33.default = classNames33;
109
- module.exports = classNames33;
108
+ classNames35.default = classNames35;
109
+ module.exports = classNames35;
110
110
  } else if (typeof define === "function" && typeof define.amd === "object" && define.amd) {
111
111
  define("classnames", [], function() {
112
- return classNames33;
112
+ return classNames35;
113
113
  });
114
114
  } else {
115
- window.classNames = classNames33;
115
+ window.classNames = classNames35;
116
116
  }
117
117
  })();
118
118
  }
@@ -127,7 +127,7 @@ import { useDynamicFlow } from "@wise/dynamic-flow-client";
127
127
  // src/dynamicFlow/telemetry/app-version.ts
128
128
  var appVersion = (
129
129
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
130
- typeof process !== "undefined" ? "5.27.3" : "0.0.0"
130
+ typeof process !== "undefined" ? "5.28.0" : "0.0.0"
131
131
  );
132
132
 
133
133
  // src/dynamicFlow/context-menu/useContextMenu.tsx
@@ -1025,18 +1025,128 @@ var shouldRenderActionPrompt = (props) => {
1025
1025
  };
1026
1026
  var AlertRenderer_default = AlertRenderer;
1027
1027
 
1028
- // ../renderers/src/BoxRenderer.tsx
1028
+ // ../renderers/src/CanadaPromo/BorderedBackgroundColoredBoxRenderer.tsx
1029
1029
  var import_classnames5 = __toESM(require_classnames());
1030
+
1031
+ // ../renderers/src/CanadaPromo/color-utils.ts
1032
+ var URN_COLOR = "urn:wise:colors:";
1033
+ var validCategories = [
1034
+ "brand",
1035
+ "content",
1036
+ "interactive",
1037
+ "border",
1038
+ "background",
1039
+ "sentiment",
1040
+ "base",
1041
+ "contrast",
1042
+ "custom"
1043
+ ];
1044
+ var customColorsMapping = {
1045
+ pix: "#4DB6AC"
1046
+ };
1047
+ var getColorFromUrn = (urn) => {
1048
+ if (!(urn == null ? void 0 : urn.startsWith(URN_COLOR))) return void 0;
1049
+ const parts = urn.slice(URN_COLOR.length).split(":");
1050
+ const category = parts[0];
1051
+ const name = parts[1];
1052
+ if (!category || !name) return void 0;
1053
+ if (!validCategories.includes(category)) return void 0;
1054
+ if (category === "brand" || category === "base") return `var(--color-${name})`;
1055
+ if (category === "custom") return customColorsMapping[name];
1056
+ return `var(--color-${category}-${name})`;
1057
+ };
1058
+ var getThemeClass = (themeTag) => {
1059
+ if (!themeTag) {
1060
+ return void 0;
1061
+ }
1062
+ const themeValue = themeTag.slice("theme-".length);
1063
+ switch (themeValue) {
1064
+ case "dark":
1065
+ return "np-theme-personal np-theme-personal--dark";
1066
+ case "light":
1067
+ return "np-theme-personal";
1068
+ default:
1069
+ return void 0;
1070
+ }
1071
+ };
1072
+
1073
+ // ../renderers/src/CanadaPromo/BorderedBackgroundColoredBoxRenderer.tsx
1030
1074
  import { jsx as jsx22 } from "react/jsx-runtime";
1075
+ var BorderedBackgroundColoredBoxRenderer = {
1076
+ canRenderType: "box",
1077
+ canRender: ({ control }) => control === "borderedBackgroundColored",
1078
+ render: ({ children, margin, tags }) => {
1079
+ const backgroundColor = getColorFromUrn(tags == null ? void 0 : tags.find((t) => t.startsWith("urn:wise:colors:")));
1080
+ const themeClass = getThemeClass(tags == null ? void 0 : tags.find((t) => t.startsWith("theme-")));
1081
+ return /* @__PURE__ */ jsx22(
1082
+ "div",
1083
+ {
1084
+ className: (0, import_classnames5.default)("df-bordered-background-colored-box", themeClass, getMargin(margin)),
1085
+ style: backgroundColor ? { backgroundColor } : void 0,
1086
+ children
1087
+ }
1088
+ );
1089
+ }
1090
+ };
1091
+
1092
+ // ../renderers/src/CanadaPromo/ColoredUpsellRenderer.tsx
1093
+ var import_classnames6 = __toESM(require_classnames());
1094
+ import { Illustration as Illustration2 } from "@wise/art";
1095
+ import { jsx as jsx23, jsxs as jsxs3 } from "react/jsx-runtime";
1096
+ var URN_ILLUSTRATION_PREFIX = "urn:wise:illustrations:";
1097
+ var parseTextIntoTitleAndSubtitle = (text) => {
1098
+ const trimmedText = text.trim();
1099
+ if (!trimmedText) {
1100
+ return { title: "", subtitle: "" };
1101
+ }
1102
+ const [first, second] = trimmedText.split("\n", 2);
1103
+ if (first !== void 0 && second !== void 0) {
1104
+ return { title: first.trim(), subtitle: second.trim() };
1105
+ }
1106
+ return { title: "", subtitle: trimmedText };
1107
+ };
1108
+ var ColoredUpsellRenderer = {
1109
+ canRenderType: "upsell",
1110
+ canRender: ({ control }) => control === "promoColoredUpsell",
1111
+ render: ({ text, callToAction, media, margin, tags }) => {
1112
+ var _a;
1113
+ const backgroundColor = getColorFromUrn(tags == null ? void 0 : tags.find((t) => t.startsWith("urn:wise:colors:")));
1114
+ const themeClass = getThemeClass(tags == null ? void 0 : tags.find((t) => t.startsWith("theme-")));
1115
+ const mediaUri = (media == null ? void 0 : media.type) === "image" ? media.uri : void 0;
1116
+ const illustrationName = (mediaUri == null ? void 0 : mediaUri.startsWith(URN_ILLUSTRATION_PREFIX)) ? mediaUri.slice(URN_ILLUSTRATION_PREFIX.length).split("?")[0] : void 0;
1117
+ const { title, subtitle } = parseTextIntoTitleAndSubtitle(text);
1118
+ const actionTitle = (_a = callToAction == null ? void 0 : callToAction.title) != null ? _a : "";
1119
+ const handleActionClick = callToAction == null ? void 0 : callToAction.onClick;
1120
+ return /* @__PURE__ */ jsxs3(
1121
+ "div",
1122
+ {
1123
+ className: (0, import_classnames6.default)("df-colored-upsell", themeClass, getMargin(margin)),
1124
+ style: backgroundColor ? { backgroundColor } : void 0,
1125
+ children: [
1126
+ illustrationName && /* @__PURE__ */ jsx23("div", { className: "df-colored-upsell-illustration", children: /* @__PURE__ */ jsx23(Illustration2, { name: illustrationName, size: "small" }) }),
1127
+ /* @__PURE__ */ jsxs3("div", { className: "df-colored-upsell-content", children: [
1128
+ title && /* @__PURE__ */ jsx23("p", { className: "df-colored-upsell-title", children: title }),
1129
+ subtitle && /* @__PURE__ */ jsx23("p", { className: "df-colored-upsell-subtitle", children: subtitle }),
1130
+ handleActionClick && actionTitle && /* @__PURE__ */ jsx23("button", { type: "button", className: "df-colored-upsell-action", onClick: handleActionClick, children: actionTitle })
1131
+ ] })
1132
+ ]
1133
+ }
1134
+ );
1135
+ }
1136
+ };
1137
+
1138
+ // ../renderers/src/BoxRenderer.tsx
1139
+ var import_classnames7 = __toESM(require_classnames());
1140
+ import { jsx as jsx24 } from "react/jsx-runtime";
1031
1141
  var BoxRenderer = {
1032
1142
  canRenderType: "box",
1033
1143
  render: ({ children, control, margin, width, tags }) => {
1034
1144
  const hasFixedWidth = width !== "xl";
1035
1145
  const hasBorder = control === "bordered" || control === "bordered-web";
1036
- const contents = /* @__PURE__ */ jsx22(
1146
+ const contents = /* @__PURE__ */ jsx24(
1037
1147
  "div",
1038
1148
  {
1039
- className: (0, import_classnames5.default)(
1149
+ className: (0, import_classnames7.default)(
1040
1150
  "df-box-renderer",
1041
1151
  {
1042
1152
  "df-box-renderer-border": hasBorder,
@@ -1048,13 +1158,13 @@ var BoxRenderer = {
1048
1158
  children
1049
1159
  }
1050
1160
  );
1051
- return hasFixedWidth ? /* @__PURE__ */ jsx22("div", { className: (0, import_classnames5.default)("df-box-renderer-fixed-width", getMargin(margin)), children: contents }) : contents;
1161
+ return hasFixedWidth ? /* @__PURE__ */ jsx24("div", { className: (0, import_classnames7.default)("df-box-renderer-fixed-width", getMargin(margin)), children: contents }) : contents;
1052
1162
  }
1053
1163
  };
1054
1164
  var BoxRenderer_default = BoxRenderer;
1055
1165
 
1056
1166
  // ../renderers/src/ButtonRenderer/AddressValidationButtonRenderer.tsx
1057
- var import_classnames6 = __toESM(require_classnames());
1167
+ var import_classnames8 = __toESM(require_classnames());
1058
1168
  import { Button, InlineAlert } from "@transferwise/components";
1059
1169
  import { useIntl } from "react-intl";
1060
1170
  import { useEffect as useEffect2, useState as useState4 } from "react";
@@ -1070,7 +1180,7 @@ var loading_button_messages_default = defineMessages({
1070
1180
  });
1071
1181
 
1072
1182
  // ../renderers/src/ButtonRenderer/AddressValidationButtonRenderer.tsx
1073
- import { jsx as jsx23, jsxs as jsxs3 } from "react/jsx-runtime";
1183
+ import { jsx as jsx25, jsxs as jsxs4 } from "react/jsx-runtime";
1074
1184
  var AddressValidationButtonRenderer = {
1075
1185
  canRenderType: "button",
1076
1186
  canRender: ({ control }) => control === "address-validation",
@@ -1090,16 +1200,16 @@ function AddressValidationButtonComponent(props) {
1090
1200
  setSpinny(false);
1091
1201
  }
1092
1202
  };
1093
- return /* @__PURE__ */ jsxs3(
1203
+ return /* @__PURE__ */ jsxs4(
1094
1204
  "div",
1095
1205
  {
1096
- className: (0, import_classnames6.default)(
1206
+ className: (0, import_classnames8.default)(
1097
1207
  "d-flex flex-column",
1098
1208
  getMargin(margin),
1099
1209
  controlAndTagsToCSSClass({ control, tags })
1100
1210
  ),
1101
1211
  children: [
1102
- /* @__PURE__ */ jsx23(
1212
+ /* @__PURE__ */ jsx25(
1103
1213
  Button,
1104
1214
  {
1105
1215
  v2: true,
@@ -1116,7 +1226,7 @@ function AddressValidationButtonComponent(props) {
1116
1226
  children: title
1117
1227
  }
1118
1228
  ),
1119
- spinny && /* @__PURE__ */ jsx23(InlineAlert, { type: "warning", className: "m-x-auto", children: formatMessage(loading_button_messages_default.buttonLoadingMessage) })
1229
+ spinny && /* @__PURE__ */ jsx25(InlineAlert, { type: "warning", className: "m-x-auto", children: formatMessage(loading_button_messages_default.buttonLoadingMessage) })
1120
1230
  ]
1121
1231
  }
1122
1232
  );
@@ -1124,7 +1234,7 @@ function AddressValidationButtonComponent(props) {
1124
1234
  var AddressValidationButtonRenderer_default = AddressValidationButtonRenderer;
1125
1235
 
1126
1236
  // ../renderers/src/ButtonRenderer/ButtonRenderer.tsx
1127
- var import_classnames7 = __toESM(require_classnames());
1237
+ var import_classnames9 = __toESM(require_classnames());
1128
1238
  import { Button as Button2 } from "@transferwise/components";
1129
1239
  import { useEffect as useEffect3, useState as useState5 } from "react";
1130
1240
 
@@ -1168,7 +1278,7 @@ var mapLegacyButtonSize = (size) => {
1168
1278
  };
1169
1279
 
1170
1280
  // ../renderers/src/ButtonRenderer/ButtonRenderer.tsx
1171
- import { jsx as jsx24 } from "react/jsx-runtime";
1281
+ import { jsx as jsx26 } from "react/jsx-runtime";
1172
1282
  var ButtonRenderer = {
1173
1283
  canRenderType: "button",
1174
1284
  render: ButtonComponent
@@ -1201,12 +1311,13 @@ function ButtonComponent(props) {
1201
1311
  const buttonProps = {
1202
1312
  v2: true,
1203
1313
  block: control !== "small",
1204
- className: (0, import_classnames7.default)(
1314
+ className: (0, import_classnames9.default)(
1205
1315
  getMargin(margin),
1206
1316
  "df-button",
1207
1317
  {
1208
1318
  small: control === "small",
1209
- "align-center": tags == null ? void 0 : tags.includes("align-center")
1319
+ "align-center": tags == null ? void 0 : tags.includes("align-center"),
1320
+ "align-end": tags == null ? void 0 : tags.includes("align-end")
1210
1321
  },
1211
1322
  controlAndTagsToCSSClass({ control, tags })
1212
1323
  ),
@@ -1222,7 +1333,7 @@ function ButtonComponent(props) {
1222
1333
  onClick();
1223
1334
  }
1224
1335
  };
1225
- return /* @__PURE__ */ jsx24(Button2, __spreadProps(__spreadValues({}, buttonProps), { children: title }));
1336
+ return /* @__PURE__ */ jsx26(Button2, __spreadProps(__spreadValues({}, buttonProps), { children: title }));
1226
1337
  }
1227
1338
  var getSentiment = (context) => context === "negative" ? "negative" : "default";
1228
1339
  var getPriority = (control, tags) => {
@@ -1276,13 +1387,13 @@ var help_messages_default = defineMessages2({
1276
1387
  });
1277
1388
 
1278
1389
  // ../renderers/src/components/Help.tsx
1279
- import { jsx as jsx25 } from "react/jsx-runtime";
1390
+ import { jsx as jsx27 } from "react/jsx-runtime";
1280
1391
  function Help({ help, onClick }) {
1281
1392
  const intl = useIntl2();
1282
- return /* @__PURE__ */ jsx25(
1393
+ return /* @__PURE__ */ jsx27(
1283
1394
  Info,
1284
1395
  {
1285
- content: /* @__PURE__ */ jsx25(Markdown2, { config: { link: { target: "_blank" } }, children: help }),
1396
+ content: /* @__PURE__ */ jsx27(Markdown2, { config: { link: { target: "_blank" } }, children: help }),
1286
1397
  presentation: "POPOVER",
1287
1398
  size: "sm",
1288
1399
  "aria-label": intl.formatMessage(help_messages_default.helpAria),
@@ -1293,16 +1404,16 @@ function Help({ help, onClick }) {
1293
1404
  var Help_default = Help;
1294
1405
 
1295
1406
  // ../renderers/src/components/LabelContentWithHelp.tsx
1296
- import { jsx as jsx26, jsxs as jsxs4 } from "react/jsx-runtime";
1407
+ import { jsx as jsx28, jsxs as jsxs5 } from "react/jsx-runtime";
1297
1408
  function LabelContentWithHelp({ text, help }) {
1298
- return /* @__PURE__ */ jsxs4("div", { children: [
1409
+ return /* @__PURE__ */ jsxs5("div", { children: [
1299
1410
  text,
1300
- /* @__PURE__ */ jsx26(Help_default, { help })
1411
+ /* @__PURE__ */ jsx28(Help_default, { help })
1301
1412
  ] });
1302
1413
  }
1303
1414
 
1304
1415
  // ../renderers/src/components/FieldInput.tsx
1305
- import { jsx as jsx27 } from "react/jsx-runtime";
1416
+ import { jsx as jsx29 } from "react/jsx-runtime";
1306
1417
  function FieldInput({
1307
1418
  id,
1308
1419
  children,
@@ -1317,9 +1428,9 @@ function FieldInput({
1317
1428
  tags
1318
1429
  }) {
1319
1430
  var _a;
1320
- const labelContent = label && help ? /* @__PURE__ */ jsx27(LabelContentWithHelp, { text: label, help }) : label;
1431
+ const labelContent = label && help ? /* @__PURE__ */ jsx29(LabelContentWithHelp, { text: label, help }) : label;
1321
1432
  const { ref } = useScrollToError(validation, features);
1322
- return /* @__PURE__ */ jsx27("div", { ref, children: /* @__PURE__ */ jsx27(
1433
+ return /* @__PURE__ */ jsx29("div", { ref, children: /* @__PURE__ */ jsx29(
1323
1434
  Field,
1324
1435
  {
1325
1436
  id,
@@ -1348,26 +1459,26 @@ var FieldInput_default = FieldInput;
1348
1459
 
1349
1460
  // ../renderers/src/utils/listItem/getAdditionalText.tsx
1350
1461
  import { ListItem } from "@transferwise/components";
1351
- import { jsx as jsx28 } from "react/jsx-runtime";
1462
+ import { jsx as jsx30 } from "react/jsx-runtime";
1352
1463
  var getAdditionalText = (additionalText) => {
1353
1464
  if (!additionalText) {
1354
1465
  return void 0;
1355
1466
  }
1356
- return /* @__PURE__ */ jsx28(ListItem.AdditionalInfo, { children: additionalText });
1467
+ return /* @__PURE__ */ jsx30(ListItem.AdditionalInfo, { children: additionalText });
1357
1468
  };
1358
1469
 
1359
1470
  // ../renderers/src/utils/listItem/getInlineAlert.tsx
1360
1471
  import { ListItem as ListItem2 } from "@transferwise/components";
1361
- import { jsx as jsx29 } from "react/jsx-runtime";
1472
+ import { jsx as jsx31 } from "react/jsx-runtime";
1362
1473
  var getInlineAlert = (inlineAlert) => {
1363
1474
  if (!inlineAlert) return void 0;
1364
1475
  const { context, media, content } = inlineAlert;
1365
- return /* @__PURE__ */ jsx29(ListItem2.Prompt, { sentiment: context, media: media && getInlinePromptMedia(media), children: content });
1476
+ return /* @__PURE__ */ jsx31(ListItem2.Prompt, { sentiment: context, media: media && getInlinePromptMedia(media), children: content });
1366
1477
  };
1367
1478
 
1368
1479
  // ../renderers/src/utils/listItem/getMedia.tsx
1369
- import { jsx as jsx30 } from "react/jsx-runtime";
1370
- var getMedia = (media, preferAvatar) => media ? /* @__PURE__ */ jsx30(OptionMedia, { media, preferAvatar }) : void 0;
1480
+ import { jsx as jsx32 } from "react/jsx-runtime";
1481
+ var getMedia = (media, preferAvatar) => media ? /* @__PURE__ */ jsx32(OptionMedia, { media, preferAvatar }) : void 0;
1371
1482
 
1372
1483
  // ../renderers/src/utils/listItem/getSupportingValues.ts
1373
1484
  var getSupportingValues = (supportingValues) => {
@@ -1375,18 +1486,18 @@ var getSupportingValues = (supportingValues) => {
1375
1486
  };
1376
1487
 
1377
1488
  // ../renderers/src/CheckboxInputRenderer.tsx
1378
- import { jsx as jsx31 } from "react/jsx-runtime";
1489
+ import { jsx as jsx33 } from "react/jsx-runtime";
1379
1490
  var CheckboxInputRenderer = {
1380
1491
  canRenderType: "input-checkbox",
1381
1492
  render: (props) => {
1382
1493
  switch (props.control) {
1383
1494
  case "switch-item":
1384
- return /* @__PURE__ */ jsx31(SwitchItemComponent, __spreadValues({}, props));
1495
+ return /* @__PURE__ */ jsx33(SwitchItemComponent, __spreadValues({}, props));
1385
1496
  case "checkbox-item":
1386
- return /* @__PURE__ */ jsx31(CheckboxItemComponent, __spreadValues({}, props));
1497
+ return /* @__PURE__ */ jsx33(CheckboxItemComponent, __spreadValues({}, props));
1387
1498
  case "checkbox":
1388
1499
  default:
1389
- return /* @__PURE__ */ jsx31(CheckboxComponent, __spreadValues({}, props));
1500
+ return /* @__PURE__ */ jsx33(CheckboxComponent, __spreadValues({}, props));
1390
1501
  }
1391
1502
  }
1392
1503
  };
@@ -1411,7 +1522,7 @@ var CheckboxComponent = (props) => {
1411
1522
  "value"
1412
1523
  ]);
1413
1524
  const checkboxProps = __spreadProps(__spreadValues({}, rest), { label: title, secondary: description, checked: value });
1414
- return /* @__PURE__ */ jsx31(
1525
+ return /* @__PURE__ */ jsx33(
1415
1526
  FieldInput_default,
1416
1527
  {
1417
1528
  id,
@@ -1424,7 +1535,7 @@ var CheckboxComponent = (props) => {
1424
1535
  features: rest.features,
1425
1536
  control,
1426
1537
  tags: rest.tags,
1427
- children: /* @__PURE__ */ jsx31(Checkbox, __spreadValues({ id }, checkboxProps))
1538
+ children: /* @__PURE__ */ jsx33(Checkbox, __spreadValues({ id }, checkboxProps))
1428
1539
  }
1429
1540
  );
1430
1541
  };
@@ -1443,7 +1554,7 @@ var CheckboxItemComponent = (props) => {
1443
1554
  onChange
1444
1555
  } = props;
1445
1556
  const { ref } = useScrollToError(validationState, features);
1446
- return /* @__PURE__ */ jsx31("div", { ref, children: /* @__PURE__ */ jsx31(
1557
+ return /* @__PURE__ */ jsx33("div", { ref, children: /* @__PURE__ */ jsx33(
1447
1558
  ListItem3,
1448
1559
  __spreadProps(__spreadValues({
1449
1560
  title,
@@ -1452,7 +1563,7 @@ var CheckboxItemComponent = (props) => {
1452
1563
  media: getMedia(media, false),
1453
1564
  disabled,
1454
1565
  prompt: getInlineAlertOrValidation(validationState, inlineAlert),
1455
- control: /* @__PURE__ */ jsx31(ListItem3.Checkbox, { checked: value, onChange: () => onChange(!value) })
1566
+ control: /* @__PURE__ */ jsx33(ListItem3.Checkbox, { checked: value, onChange: () => onChange(!value) })
1456
1567
  }, getSupportingValues(supportingValues)), {
1457
1568
  className: controlAndTagsToCSSClass(props)
1458
1569
  })
@@ -1473,7 +1584,7 @@ var SwitchItemComponent = (props) => {
1473
1584
  onChange
1474
1585
  } = props;
1475
1586
  const { ref } = useScrollToError(validationState, features);
1476
- return /* @__PURE__ */ jsx31("div", { ref, children: /* @__PURE__ */ jsx31(
1587
+ return /* @__PURE__ */ jsx33("div", { ref, children: /* @__PURE__ */ jsx33(
1477
1588
  ListItem3,
1478
1589
  __spreadProps(__spreadValues({
1479
1590
  title,
@@ -1482,7 +1593,7 @@ var SwitchItemComponent = (props) => {
1482
1593
  media: getMedia(media, false),
1483
1594
  disabled,
1484
1595
  prompt: getInlineAlertOrValidation(validationState, inlineAlert),
1485
- control: /* @__PURE__ */ jsx31(ListItem3.Switch, { checked: value, onClick: () => onChange(!value) })
1596
+ control: /* @__PURE__ */ jsx33(ListItem3.Switch, { checked: value, onClick: () => onChange(!value) })
1486
1597
  }, getSupportingValues(supportingValues)), {
1487
1598
  className: controlAndTagsToCSSClass(props)
1488
1599
  })
@@ -1490,7 +1601,7 @@ var SwitchItemComponent = (props) => {
1490
1601
  };
1491
1602
  var getInlineAlertOrValidation = (validationState, inlineAlert) => {
1492
1603
  if ((validationState == null ? void 0 : validationState.status) === "invalid") {
1493
- return /* @__PURE__ */ jsx31(ListItem3.Prompt, { sentiment: "negative", children: validationState.message });
1604
+ return /* @__PURE__ */ jsx33(ListItem3.Prompt, { sentiment: "negative", children: validationState.message });
1494
1605
  }
1495
1606
  return getInlineAlert(inlineAlert);
1496
1607
  };
@@ -1519,30 +1630,63 @@ var generic_error_messages_default = defineMessages3({
1519
1630
  }
1520
1631
  });
1521
1632
 
1522
- // ../../node_modules/.pnpm/@tanstack+react-virtual@3.13.24_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-virtual/dist/esm/index.js
1633
+ // ../../node_modules/.pnpm/@tanstack+react-virtual@3.14.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-virtual/dist/esm/index.js
1523
1634
  import * as React from "react";
1524
1635
  import { flushSync } from "react-dom";
1525
1636
 
1526
- // ../../node_modules/.pnpm/@tanstack+virtual-core@3.14.0/node_modules/@tanstack/virtual-core/dist/esm/utils.js
1637
+ // ../../node_modules/.pnpm/@tanstack+virtual-core@3.17.8/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js
1638
+ function createLazyMeasurementsView(count, flat, getItemKey) {
1639
+ const cache = new Array(count);
1640
+ return new Proxy(cache, {
1641
+ get(target, prop, receiver) {
1642
+ if (typeof prop === "string") {
1643
+ const c = prop.charCodeAt(0);
1644
+ if (c >= 48 && c <= 57) {
1645
+ const i = +prop;
1646
+ if (Number.isInteger(i) && i >= 0 && i < count) {
1647
+ let v = target[i];
1648
+ if (!v) {
1649
+ const s = flat[i * 2];
1650
+ v = target[i] = {
1651
+ index: i,
1652
+ key: getItemKey(i),
1653
+ start: s,
1654
+ size: flat[i * 2 + 1],
1655
+ end: s + flat[i * 2 + 1],
1656
+ lane: 0
1657
+ };
1658
+ }
1659
+ return v;
1660
+ }
1661
+ }
1662
+ if (prop === "length") return count;
1663
+ }
1664
+ return Reflect.get(target, prop, receiver);
1665
+ }
1666
+ });
1667
+ }
1668
+
1669
+ // ../../node_modules/.pnpm/@tanstack+virtual-core@3.17.8/node_modules/@tanstack/virtual-core/dist/esm/utils.js
1527
1670
  function memo(getDeps, fn, opts) {
1528
1671
  var _a;
1529
1672
  let deps = (_a = opts.initialDeps) != null ? _a : [];
1530
1673
  let result;
1531
1674
  let isInitial = true;
1532
1675
  function memoizedFunction() {
1533
- var _a2, _b, _c;
1534
- let depTime;
1535
- if (opts.key && ((_a2 = opts.debug) == null ? void 0 : _a2.call(opts))) depTime = Date.now();
1676
+ var _a2;
1677
+ const debugEnabled = !!opts.key && !!((_a2 = opts.debug) == null ? void 0 : _a2.call(opts));
1678
+ let depTime = 0;
1679
+ if (debugEnabled) depTime = Date.now();
1536
1680
  const newDeps = getDeps();
1537
1681
  const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);
1538
1682
  if (!depsChanged) {
1539
1683
  return result;
1540
1684
  }
1541
1685
  deps = newDeps;
1542
- let resultTime;
1543
- if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();
1686
+ let resultTime = 0;
1687
+ if (debugEnabled) resultTime = Date.now();
1544
1688
  result = fn(...newDeps);
1545
- if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {
1689
+ if (debugEnabled) {
1546
1690
  const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;
1547
1691
  const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;
1548
1692
  const resultFpsPercentage = resultEndTime / 16;
@@ -1586,20 +1730,39 @@ function notUndefined(value, msg) {
1586
1730
  var approxEqual = (a, b) => Math.abs(a - b) < 1.01;
1587
1731
  var debounce = (targetWindow, fn, ms) => {
1588
1732
  let timeoutId;
1589
- return function(...args) {
1590
- targetWindow.clearTimeout(timeoutId);
1591
- timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);
1592
- };
1733
+ return Object.assign(
1734
+ function(...args) {
1735
+ targetWindow.clearTimeout(timeoutId);
1736
+ timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);
1737
+ },
1738
+ {
1739
+ // The handle is closure-local, so a caller that has already
1740
+ // unsubscribed has no way to stop a queued call. Teardown paths use
1741
+ // this to drop the pending invocation instead of letting it land.
1742
+ cancel: () => {
1743
+ targetWindow.clearTimeout(timeoutId);
1744
+ }
1745
+ }
1746
+ );
1593
1747
  };
1594
1748
 
1595
- // ../../node_modules/.pnpm/@tanstack+virtual-core@3.14.0/node_modules/@tanstack/virtual-core/dist/esm/index.js
1749
+ // ../../node_modules/.pnpm/@tanstack+virtual-core@3.17.8/node_modules/@tanstack/virtual-core/dist/esm/index.js
1750
+ var _isIOSResult;
1751
+ var isIOSWebKit = () => {
1752
+ if (_isIOSResult !== void 0) return _isIOSResult;
1753
+ if (typeof navigator === "undefined") return _isIOSResult = false;
1754
+ if (/iP(hone|od|ad)/.test(navigator.userAgent)) return _isIOSResult = true;
1755
+ const mtp = navigator.maxTouchPoints;
1756
+ return _isIOSResult = navigator.platform === "MacIntel" && mtp !== void 0 && mtp > 0;
1757
+ };
1596
1758
  var defaultKeyExtractor = (index) => index;
1597
1759
  var defaultRangeExtractor = (range) => {
1598
1760
  const start = Math.max(range.startIndex - range.overscan, 0);
1599
1761
  const end = Math.min(range.endIndex + range.overscan, range.count - 1);
1600
- const arr = [];
1601
- for (let i = start; i <= end; i++) {
1602
- arr.push(i);
1762
+ const len = end - start + 1;
1763
+ const arr = new Array(len);
1764
+ for (let i = 0; i < len; i++) {
1765
+ arr[i] = start + i;
1603
1766
  }
1604
1767
  return arr;
1605
1768
  };
@@ -1621,7 +1784,7 @@ var observeWindowRect = (instance, cb) => {
1621
1784
  };
1622
1785
  };
1623
1786
  var supportsScrollend = typeof window == "undefined" ? true : "onscrollend" in window;
1624
- var observeWindowOffset = (instance, cb) => {
1787
+ var observeOffset = (instance, cb, readOffset) => {
1625
1788
  const element = instance.scrollElement;
1626
1789
  if (!element) {
1627
1790
  return;
@@ -1630,23 +1793,21 @@ var observeWindowOffset = (instance, cb) => {
1630
1793
  if (!targetWindow) {
1631
1794
  return;
1632
1795
  }
1796
+ const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;
1633
1797
  let offset = 0;
1634
- const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(
1798
+ const fallback = registerScrollendEvent ? null : debounce(
1635
1799
  targetWindow,
1636
- () => {
1637
- cb(offset, false);
1638
- },
1800
+ () => cb(offset, false),
1639
1801
  instance.options.isScrollingResetDelay
1640
1802
  );
1641
1803
  const createHandler = (isScrolling) => () => {
1642
- offset = element[instance.options.horizontal ? "scrollX" : "scrollY"];
1643
- fallback();
1804
+ offset = readOffset(element);
1805
+ fallback == null ? void 0 : fallback();
1644
1806
  cb(offset, isScrolling);
1645
1807
  };
1646
1808
  const handler = createHandler(true);
1647
1809
  const endHandler = createHandler(false);
1648
1810
  element.addEventListener("scroll", handler, addEventListenerOptions);
1649
- const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;
1650
1811
  if (registerScrollendEvent) {
1651
1812
  element.addEventListener("scrollend", endHandler, addEventListenerOptions);
1652
1813
  }
@@ -1655,9 +1816,21 @@ var observeWindowOffset = (instance, cb) => {
1655
1816
  if (registerScrollendEvent) {
1656
1817
  element.removeEventListener("scrollend", endHandler);
1657
1818
  }
1819
+ fallback == null ? void 0 : fallback.cancel();
1658
1820
  };
1659
1821
  };
1822
+ var observeWindowOffset = (instance, cb) => observeOffset(
1823
+ instance,
1824
+ cb,
1825
+ (win) => instance.options.horizontal ? win.scrollX : win.scrollY
1826
+ );
1660
1827
  var measureElement = (element, entry, instance) => {
1828
+ var _a;
1829
+ if (instance.options.useCachedMeasurements) {
1830
+ const index = instance.indexFromElement(element);
1831
+ const key = instance.options.getItemKey(index);
1832
+ return (_a = instance.itemSizeCache.get(key)) != null ? _a : instance.options.estimateSize(index);
1833
+ }
1661
1834
  if (entry == null ? void 0 : entry.borderBoxSize) {
1662
1835
  const box = entry.borderBoxSize[0];
1663
1836
  if (box) {
@@ -1667,19 +1840,27 @@ var measureElement = (element, entry, instance) => {
1667
1840
  return size;
1668
1841
  }
1669
1842
  }
1843
+ if (!entry) {
1844
+ const index = instance.indexFromElement(element);
1845
+ const key = instance.options.getItemKey(index);
1846
+ const cachedSize = instance.itemSizeCache.get(key);
1847
+ if (cachedSize !== void 0) {
1848
+ return cachedSize;
1849
+ }
1850
+ }
1670
1851
  return element[instance.options.horizontal ? "offsetWidth" : "offsetHeight"];
1671
1852
  };
1672
- var windowScroll = (offset, {
1853
+ var scrollWithAdjustments = (offset, {
1673
1854
  adjustments = 0,
1674
1855
  behavior
1675
1856
  }, instance) => {
1676
1857
  var _a, _b;
1677
- const toOffset = offset + adjustments;
1678
1858
  (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {
1679
- [instance.options.horizontal ? "left" : "top"]: toOffset,
1859
+ [instance.options.horizontal ? "left" : "top"]: offset + adjustments,
1680
1860
  behavior
1681
1861
  });
1682
1862
  };
1863
+ var windowScroll = scrollWithAdjustments;
1683
1864
  var Virtualizer = class {
1684
1865
  constructor(opts) {
1685
1866
  this.unsubs = [];
@@ -1688,16 +1869,24 @@ var Virtualizer = class {
1688
1869
  this.isScrolling = false;
1689
1870
  this.scrollState = null;
1690
1871
  this.measurementsCache = [];
1872
+ this._flatMeasurements = null;
1691
1873
  this.itemSizeCache = /* @__PURE__ */ new Map();
1874
+ this.itemSizeCacheVersion = 0;
1692
1875
  this.laneAssignments = /* @__PURE__ */ new Map();
1693
- this.pendingMeasuredCacheIndexes = [];
1876
+ this.pendingMin = null;
1694
1877
  this.prevLanes = void 0;
1695
1878
  this.lanesChangedFlag = false;
1696
1879
  this.lanesSettling = false;
1880
+ this.pendingScrollAnchor = null;
1697
1881
  this.scrollRect = null;
1698
1882
  this.scrollOffset = null;
1699
1883
  this.scrollDirection = null;
1700
1884
  this.scrollAdjustments = 0;
1885
+ this._iosDeferredAdjustment = 0;
1886
+ this._iosTouching = false;
1887
+ this._iosJustTouchEnded = false;
1888
+ this._iosTouchEndTimerId = null;
1889
+ this._intendedScrollOffset = null;
1701
1890
  this.elementsCache = /* @__PURE__ */ new Map();
1702
1891
  this.now = () => {
1703
1892
  var _a2;
@@ -1720,8 +1909,15 @@ var Virtualizer = class {
1720
1909
  const index = this.indexFromElement(node);
1721
1910
  if (!node.isConnected) {
1722
1911
  this.observer.unobserve(node);
1912
+ for (const [cacheKey, cachedNode] of this.elementsCache) {
1913
+ if (cachedNode === node) {
1914
+ this.elementsCache.delete(cacheKey);
1915
+ break;
1916
+ }
1917
+ }
1723
1918
  return;
1724
1919
  }
1920
+ if (!this.isIndexInRange(index)) return;
1725
1921
  if (this.shouldMeasureDuringScroll(index)) {
1726
1922
  this.resizeItem(
1727
1923
  index,
@@ -1751,10 +1947,9 @@ var Virtualizer = class {
1751
1947
  })();
1752
1948
  this.range = null;
1753
1949
  this.setOptions = (opts2) => {
1754
- Object.entries(opts2).forEach(([key, value]) => {
1755
- if (typeof value === "undefined") delete opts2[key];
1756
- });
1757
- this.options = __spreadValues({
1950
+ var _a2, _b2, _c;
1951
+ var _a, _b;
1952
+ const merged = {
1758
1953
  debug: false,
1759
1954
  initialOffset: 0,
1760
1955
  overscan: 1,
@@ -1774,13 +1969,80 @@ var Virtualizer = class {
1774
1969
  indexAttribute: "data-index",
1775
1970
  initialMeasurementsCache: [],
1776
1971
  lanes: 1,
1972
+ anchorTo: "start",
1973
+ followOnAppend: false,
1974
+ scrollEndThreshold: 1,
1777
1975
  isScrollingResetDelay: 150,
1778
1976
  enabled: true,
1779
1977
  isRtl: false,
1780
1978
  useScrollendEvent: false,
1781
1979
  useAnimationFrameWithResizeObserver: false,
1782
- laneAssignmentMode: "estimate"
1783
- }, opts2);
1980
+ laneAssignmentMode: "estimate",
1981
+ useCachedMeasurements: false
1982
+ };
1983
+ for (const key in opts2) {
1984
+ const v = opts2[key];
1985
+ if (v !== void 0) merged[key] = v;
1986
+ }
1987
+ const prevOptions = this.options;
1988
+ let anchor = null;
1989
+ let followOnAppend = null;
1990
+ let edgeKeysChanged = false;
1991
+ if (prevOptions !== void 0 && prevOptions.enabled && merged.enabled && merged.anchorTo === "end" && this.scrollElement !== null) {
1992
+ const prevCount = prevOptions.count;
1993
+ const nextCount = merged.count;
1994
+ const measurements = this.getMeasurements();
1995
+ const prevFirstKey = prevCount > 0 ? (_a2 = (_a = measurements[0]) == null ? void 0 : _a.key) != null ? _a2 : prevOptions.getItemKey(0) : null;
1996
+ const prevLastKey = prevCount > 0 ? (_b2 = (_b = measurements[prevCount - 1]) == null ? void 0 : _b.key) != null ? _b2 : prevOptions.getItemKey(prevCount - 1) : null;
1997
+ const didCountChange = nextCount !== prevCount;
1998
+ const didEdgeKeysChange = didCountChange || prevCount > 0 && nextCount > 0 && (merged.getItemKey(0) !== prevFirstKey || merged.getItemKey(nextCount - 1) !== prevLastKey);
1999
+ if (didEdgeKeysChange) {
2000
+ edgeKeysChanged = true;
2001
+ const item = prevCount > 0 ? (_c = this.getVirtualItemForOffset(this.getScrollOffset())) != null ? _c : measurements[0] : null;
2002
+ if (item) {
2003
+ anchor = [item.key, this.getScrollOffset() - item.start];
2004
+ }
2005
+ const behavior = merged.followOnAppend === true ? "auto" : merged.followOnAppend || null;
2006
+ if (behavior && nextCount > prevCount && this.isAtEnd(prevOptions.scrollEndThreshold) && (prevCount === 0 || merged.getItemKey(nextCount - 1) !== prevLastKey)) {
2007
+ followOnAppend = behavior;
2008
+ }
2009
+ }
2010
+ }
2011
+ this.options = merged;
2012
+ if (edgeKeysChanged) {
2013
+ this.pendingMin = 0;
2014
+ this.itemSizeCacheVersion++;
2015
+ }
2016
+ let anchorResolved = false;
2017
+ let anchorDelta = 0;
2018
+ if (anchor && this.scrollOffset !== null) {
2019
+ const [anchorKey, anchorOffset] = anchor;
2020
+ const newMeasurements = this.getMeasurements();
2021
+ const { count, getItemKey } = this.options;
2022
+ let idx = 0;
2023
+ while (idx < count && getItemKey(idx) !== anchorKey) {
2024
+ idx++;
2025
+ }
2026
+ if (idx < count) {
2027
+ const anchorItem = newMeasurements[idx];
2028
+ if (anchorItem) {
2029
+ const newOffset = Math.max(0, anchorItem.start + anchorOffset);
2030
+ if (newOffset !== this.scrollOffset) {
2031
+ anchorDelta = newOffset - this.scrollOffset;
2032
+ this.scrollOffset = newOffset;
2033
+ anchorResolved = true;
2034
+ }
2035
+ }
2036
+ }
2037
+ }
2038
+ if (anchorResolved || followOnAppend) {
2039
+ this.pendingScrollAnchor = [
2040
+ anchorResolved ? anchor[0] : null,
2041
+ anchorResolved ? anchor[1] : 0,
2042
+ followOnAppend,
2043
+ anchorDelta
2044
+ ];
2045
+ }
1784
2046
  };
1785
2047
  this.notify = (sync) => {
1786
2048
  var _a, _b;
@@ -1817,6 +2079,11 @@ var Virtualizer = class {
1817
2079
  this.rafId = null;
1818
2080
  }
1819
2081
  this.scrollState = null;
2082
+ this.isScrolling = false;
2083
+ this.scrollDirection = null;
2084
+ this._iosDeferredAdjustment = 0;
2085
+ this._iosTouching = false;
2086
+ this._iosJustTouchEnded = false;
1820
2087
  this.scrollElement = null;
1821
2088
  this.targetWindow = null;
1822
2089
  };
@@ -1852,21 +2119,110 @@ var Virtualizer = class {
1852
2119
  );
1853
2120
  this.unsubs.push(
1854
2121
  this.options.observeElementOffset(this, (offset, isScrolling) => {
2122
+ if (isScrolling && this._intendedScrollOffset === null && offset === this.scrollOffset) {
2123
+ return;
2124
+ }
2125
+ if (this._intendedScrollOffset !== null && Math.abs(offset - this._intendedScrollOffset) < 1.5) {
2126
+ offset = this._intendedScrollOffset;
2127
+ }
2128
+ this._intendedScrollOffset = null;
1855
2129
  this.scrollAdjustments = 0;
1856
- this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? "forward" : "backward" : null;
2130
+ const prevOffset = this.getScrollOffset();
2131
+ this.scrollDirection = isScrolling ? prevOffset === offset ? this.scrollDirection : prevOffset < offset ? "forward" : "backward" : null;
1857
2132
  this.scrollOffset = offset;
1858
2133
  this.isScrolling = isScrolling;
2134
+ this._flushIosDeferredIfReady();
1859
2135
  if (this.scrollState) {
1860
2136
  this.scheduleScrollReconcile();
1861
2137
  }
1862
2138
  this.maybeNotify();
1863
2139
  })
1864
2140
  );
2141
+ if ("addEventListener" in this.scrollElement) {
2142
+ const scrollEl = this.scrollElement;
2143
+ const onTouchStart = () => {
2144
+ this._iosTouching = true;
2145
+ this._iosJustTouchEnded = false;
2146
+ if (this._iosTouchEndTimerId !== null && this.targetWindow != null) {
2147
+ this.targetWindow.clearTimeout(this._iosTouchEndTimerId);
2148
+ this._iosTouchEndTimerId = null;
2149
+ }
2150
+ };
2151
+ const onTouchEnd = () => {
2152
+ this._iosTouching = false;
2153
+ if (!isIOSWebKit() || this.targetWindow == null) {
2154
+ return;
2155
+ }
2156
+ this._iosJustTouchEnded = true;
2157
+ this._iosTouchEndTimerId = this.targetWindow.setTimeout(() => {
2158
+ this._iosJustTouchEnded = false;
2159
+ this._iosTouchEndTimerId = null;
2160
+ this._flushIosDeferredIfReady();
2161
+ }, 150);
2162
+ };
2163
+ scrollEl.addEventListener(
2164
+ "touchstart",
2165
+ onTouchStart,
2166
+ addEventListenerOptions
2167
+ );
2168
+ scrollEl.addEventListener(
2169
+ "touchend",
2170
+ onTouchEnd,
2171
+ addEventListenerOptions
2172
+ );
2173
+ this.unsubs.push(() => {
2174
+ scrollEl.removeEventListener("touchstart", onTouchStart);
2175
+ scrollEl.removeEventListener("touchend", onTouchEnd);
2176
+ if (this._iosTouchEndTimerId !== null && this.targetWindow != null) {
2177
+ this.targetWindow.clearTimeout(this._iosTouchEndTimerId);
2178
+ this._iosTouchEndTimerId = null;
2179
+ }
2180
+ });
2181
+ }
1865
2182
  this._scrollToOffset(this.getScrollOffset(), {
1866
2183
  adjustments: void 0,
1867
2184
  behavior: void 0
1868
2185
  });
1869
2186
  }
2187
+ const anchor = this.pendingScrollAnchor;
2188
+ this.pendingScrollAnchor = null;
2189
+ if (anchor && this.scrollElement && this.options.enabled) {
2190
+ const [key, _offset, followOnAppend, anchorDelta] = anchor;
2191
+ if (key !== null && !followOnAppend) {
2192
+ if (isIOSWebKit() && (this.isScrolling || this._iosTouching || this._iosJustTouchEnded)) {
2193
+ if (anchorDelta !== 0) {
2194
+ this._iosDeferredAdjustment += anchorDelta;
2195
+ }
2196
+ } else {
2197
+ this._scrollToOffset(this.getScrollOffset(), {
2198
+ adjustments: void 0,
2199
+ behavior: void 0
2200
+ });
2201
+ }
2202
+ }
2203
+ if (followOnAppend) {
2204
+ this.scrollToEnd({ behavior: followOnAppend });
2205
+ }
2206
+ }
2207
+ };
2208
+ this._flushIosDeferredIfReady = () => {
2209
+ if (this._iosDeferredAdjustment === 0) return;
2210
+ if (this.isScrolling) return;
2211
+ if (this._iosTouching) return;
2212
+ if (this._iosJustTouchEnded) return;
2213
+ const cur = this.getScrollOffset();
2214
+ const max = this.getMaxScrollOffset();
2215
+ if (cur < 0 || cur > max) return;
2216
+ if (this._iosDeferredAdjustment < 0 && cur >= max - 1) {
2217
+ this._iosDeferredAdjustment = 0;
2218
+ return;
2219
+ }
2220
+ const delta = this._iosDeferredAdjustment;
2221
+ this._iosDeferredAdjustment = 0;
2222
+ this._scrollToOffset(cur, {
2223
+ adjustments: this.scrollAdjustments += delta,
2224
+ behavior: void 0
2225
+ });
1870
2226
  };
1871
2227
  this.rafId = null;
1872
2228
  this.getSize = () => {
@@ -1887,33 +2243,6 @@ var Virtualizer = class {
1887
2243
  this.scrollOffset = (_a = this.scrollOffset) != null ? _a : typeof this.options.initialOffset === "function" ? this.options.initialOffset() : this.options.initialOffset;
1888
2244
  return this.scrollOffset;
1889
2245
  };
1890
- this.getFurthestMeasurement = (measurements, index) => {
1891
- const furthestMeasurementsFound = /* @__PURE__ */ new Map();
1892
- const furthestMeasurements = /* @__PURE__ */ new Map();
1893
- for (let m = index - 1; m >= 0; m--) {
1894
- const measurement = measurements[m];
1895
- if (furthestMeasurementsFound.has(measurement.lane)) {
1896
- continue;
1897
- }
1898
- const previousFurthestMeasurement = furthestMeasurements.get(
1899
- measurement.lane
1900
- );
1901
- if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {
1902
- furthestMeasurements.set(measurement.lane, measurement);
1903
- } else if (measurement.end < previousFurthestMeasurement.end) {
1904
- furthestMeasurementsFound.set(measurement.lane, true);
1905
- }
1906
- if (furthestMeasurementsFound.size === this.options.lanes) {
1907
- break;
1908
- }
1909
- }
1910
- return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {
1911
- if (a.end === b.end) {
1912
- return a.index - b.index;
1913
- }
1914
- return a.end - b.end;
1915
- })[0] : void 0;
1916
- };
1917
2246
  this.getMeasurementOptions = memo(
1918
2247
  () => [
1919
2248
  this.options.count,
@@ -1922,15 +2251,16 @@ var Virtualizer = class {
1922
2251
  this.options.getItemKey,
1923
2252
  this.options.enabled,
1924
2253
  this.options.lanes,
1925
- this.options.laneAssignmentMode
2254
+ this.options.laneAssignmentMode,
2255
+ this.options.gap
1926
2256
  ],
1927
- (count, paddingStart, scrollMargin, getItemKey, enabled, lanes, laneAssignmentMode) => {
2257
+ (count, paddingStart, scrollMargin, getItemKey, enabled, lanes, laneAssignmentMode, gap) => {
1928
2258
  const lanesChanged = this.prevLanes !== void 0 && this.prevLanes !== lanes;
1929
2259
  if (lanesChanged) {
1930
2260
  this.lanesChangedFlag = true;
1931
2261
  }
1932
2262
  this.prevLanes = lanes;
1933
- this.pendingMeasuredCacheIndexes = [];
2263
+ this.pendingMin = null;
1934
2264
  return {
1935
2265
  count,
1936
2266
  paddingStart,
@@ -1938,15 +2268,17 @@ var Virtualizer = class {
1938
2268
  getItemKey,
1939
2269
  enabled,
1940
2270
  lanes,
1941
- laneAssignmentMode
2271
+ laneAssignmentMode,
2272
+ gap
1942
2273
  };
1943
2274
  },
1944
2275
  {
1945
2276
  key: false
1946
2277
  }
1947
2278
  );
2279
+ this.isIndexInRange = (index) => index >= 0 && index < this.options.count;
1948
2280
  this.getMeasurements = memo(
1949
- () => [this.getMeasurementOptions(), this.itemSizeCache],
2281
+ () => [this.getMeasurementOptions(), this.itemSizeCacheVersion],
1950
2282
  ({
1951
2283
  count,
1952
2284
  paddingStart,
@@ -1954,8 +2286,11 @@ var Virtualizer = class {
1954
2286
  getItemKey,
1955
2287
  enabled,
1956
2288
  lanes,
1957
- laneAssignmentMode
1958
- }, itemSizeCache) => {
2289
+ laneAssignmentMode,
2290
+ gap
2291
+ }, _itemSizeCacheVersion) => {
2292
+ var _a;
2293
+ const itemSizeCache = this.itemSizeCache;
1959
2294
  if (!enabled) {
1960
2295
  this.measurementsCache = [];
1961
2296
  this.itemSizeCache.clear();
@@ -1975,7 +2310,7 @@ var Virtualizer = class {
1975
2310
  this.measurementsCache = [];
1976
2311
  this.itemSizeCache.clear();
1977
2312
  this.laneAssignments.clear();
1978
- this.pendingMeasuredCacheIndexes = [];
2313
+ this.pendingMin = null;
1979
2314
  }
1980
2315
  if (this.measurementsCache.length === 0 && !this.lanesSettling) {
1981
2316
  this.measurementsCache = this.options.initialMeasurementsCache;
@@ -1983,19 +2318,51 @@ var Virtualizer = class {
1983
2318
  this.itemSizeCache.set(item.key, item.size);
1984
2319
  });
1985
2320
  }
1986
- const min = this.lanesSettling ? 0 : this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;
1987
- this.pendingMeasuredCacheIndexes = [];
2321
+ const min = this.lanesSettling ? 0 : (_a = this.pendingMin) != null ? _a : 0;
2322
+ this.pendingMin = null;
1988
2323
  if (this.lanesSettling && this.measurementsCache.length === count) {
1989
2324
  this.lanesSettling = false;
1990
2325
  }
2326
+ if (lanes === 1) {
2327
+ const need = count * 2;
2328
+ let flat = this._flatMeasurements;
2329
+ if (!flat || flat.length < need) {
2330
+ const next = new Float64Array(need);
2331
+ if (flat && min > 0) next.set(flat.subarray(0, min * 2));
2332
+ flat = next;
2333
+ this._flatMeasurements = flat;
2334
+ }
2335
+ let runningStart;
2336
+ if (min === 0) {
2337
+ runningStart = paddingStart + scrollMargin;
2338
+ } else {
2339
+ const prevIdx = min - 1;
2340
+ runningStart = flat[prevIdx * 2] + flat[prevIdx * 2 + 1] + gap;
2341
+ }
2342
+ for (let i = min; i < count; i++) {
2343
+ const key = getItemKey(i);
2344
+ const measuredSize = itemSizeCache.get(key);
2345
+ const size = typeof measuredSize === "number" ? measuredSize : this.options.estimateSize(i);
2346
+ flat[i * 2] = runningStart;
2347
+ flat[i * 2 + 1] = size;
2348
+ runningStart += size + gap;
2349
+ }
2350
+ const view = createLazyMeasurementsView(count, flat, getItemKey);
2351
+ this.measurementsCache = view;
2352
+ return view;
2353
+ }
1991
2354
  const measurements = this.measurementsCache.slice(0, min);
1992
2355
  const laneLastIndex = new Array(lanes).fill(
1993
2356
  void 0
1994
2357
  );
2358
+ const laneEnds = new Float64Array(lanes);
2359
+ let filledLanes = 0;
1995
2360
  for (let m = 0; m < min; m++) {
1996
2361
  const item = measurements[m];
1997
2362
  if (item) {
2363
+ if (laneLastIndex[item.lane] === void 0) filledLanes++;
1998
2364
  laneLastIndex[item.lane] = m;
2365
+ laneEnds[item.lane] = item.end;
1999
2366
  }
2000
2367
  }
2001
2368
  for (let i = min; i < count; i++) {
@@ -2008,12 +2375,28 @@ var Virtualizer = class {
2008
2375
  lane = cachedLane;
2009
2376
  const prevIndex = laneLastIndex[lane];
2010
2377
  const prevInLane = prevIndex !== void 0 ? measurements[prevIndex] : void 0;
2011
- start = prevInLane ? prevInLane.end + this.options.gap : paddingStart + scrollMargin;
2378
+ start = prevInLane ? prevInLane.end + gap : paddingStart + scrollMargin;
2379
+ } else if (filledLanes === lanes) {
2380
+ let bestLane = 0;
2381
+ let bestEnd = laneEnds[0];
2382
+ let bestIdx = laneLastIndex[0];
2383
+ for (let l = 1; l < lanes; l++) {
2384
+ const e = laneEnds[l];
2385
+ if (e < bestEnd || e === bestEnd && laneLastIndex[l] < bestIdx) {
2386
+ bestLane = l;
2387
+ bestEnd = e;
2388
+ bestIdx = laneLastIndex[l];
2389
+ }
2390
+ }
2391
+ lane = bestLane;
2392
+ start = bestEnd + gap;
2393
+ if (shouldCacheLane) {
2394
+ this.laneAssignments.set(i, lane);
2395
+ }
2012
2396
  } else {
2013
- const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);
2014
- start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;
2015
- lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;
2016
- if (this.options.lanes > 1 && shouldCacheLane) {
2397
+ lane = i % this.options.lanes;
2398
+ start = paddingStart + scrollMargin;
2399
+ if (shouldCacheLane) {
2017
2400
  this.laneAssignments.set(i, lane);
2018
2401
  }
2019
2402
  }
@@ -2028,7 +2411,9 @@ var Virtualizer = class {
2028
2411
  key,
2029
2412
  lane
2030
2413
  };
2414
+ if (laneLastIndex[lane] === void 0) filledLanes++;
2031
2415
  laneLastIndex[lane] = i;
2416
+ laneEnds[lane] = end;
2032
2417
  }
2033
2418
  this.measurementsCache = measurements;
2034
2419
  return measurements;
@@ -2046,12 +2431,20 @@ var Virtualizer = class {
2046
2431
  this.options.lanes
2047
2432
  ],
2048
2433
  (measurements, outerSize, scrollOffset, lanes) => {
2049
- return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({
2434
+ if (measurements.length === 0 || outerSize === 0) {
2435
+ this.range = null;
2436
+ return null;
2437
+ }
2438
+ this.range = calculateRangeImpl(
2050
2439
  measurements,
2051
2440
  outerSize,
2052
2441
  scrollOffset,
2053
- lanes
2054
- }) : null;
2442
+ lanes,
2443
+ // Pass the typed array so binary search + forward-walk can read
2444
+ // start/end directly from Float64Array, skipping the Proxy traps.
2445
+ lanes === 1 && this._flatMeasurements != null ? this._flatMeasurements : null
2446
+ );
2447
+ return this.range;
2055
2448
  },
2056
2449
  {
2057
2450
  key: "calculateRange",
@@ -2132,6 +2525,7 @@ var Virtualizer = class {
2132
2525
  return;
2133
2526
  }
2134
2527
  const index = this.indexFromElement(node);
2528
+ if (!this.isIndexInRange(index)) return;
2135
2529
  const key = this.options.getItemKey(index);
2136
2530
  const prevNode = this.elementsCache.get(key);
2137
2531
  if (prevNode !== node) {
@@ -2146,25 +2540,74 @@ var Virtualizer = class {
2146
2540
  }
2147
2541
  };
2148
2542
  this.resizeItem = (index, size) => {
2149
- var _a2;
2150
- var _a;
2151
- const item = this.measurementsCache[index];
2152
- if (!item) return;
2153
- const itemSize = (_a2 = this.itemSizeCache.get(item.key)) != null ? _a2 : item.size;
2543
+ var _a2, _b2;
2544
+ var _a, _b;
2545
+ if (!this.isIndexInRange(index)) return;
2546
+ let cachedSize;
2547
+ let itemStart;
2548
+ let key;
2549
+ const flat = this._flatMeasurements;
2550
+ if (this.options.lanes === 1 && flat !== null) {
2551
+ key = this.options.getItemKey(index);
2552
+ itemStart = flat[index * 2];
2553
+ cachedSize = flat[index * 2 + 1];
2554
+ } else {
2555
+ const item = this.measurementsCache[index];
2556
+ if (!item) return;
2557
+ key = item.key;
2558
+ itemStart = item.start;
2559
+ cachedSize = item.size;
2560
+ }
2561
+ const itemSize = (_a2 = this.itemSizeCache.get(key)) != null ? _a2 : cachedSize;
2154
2562
  const delta = size - itemSize;
2155
2563
  if (delta !== 0) {
2156
- if (((_a = this.scrollState) == null ? void 0 : _a.behavior) !== "smooth" && (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments)) {
2157
- if (this.options.debug) {
2158
- console.info("correction", delta);
2159
- }
2160
- this._scrollToOffset(this.getScrollOffset(), {
2161
- adjustments: this.scrollAdjustments += delta,
2162
- behavior: void 0
2163
- });
2564
+ const wasAtEnd = this.options.anchorTo === "end" && ((_a = this.scrollState) == null ? void 0 : _a.behavior) !== "smooth" && this.getVirtualDistanceFromEnd() <= this.options.scrollEndThreshold;
2565
+ const prevTotalSize = wasAtEnd ? this.getTotalSize() : 0;
2566
+ const scrollOffsetWithAdj = this.getScrollOffset() + this.scrollAdjustments;
2567
+ const isFirstMeasure = !this.itemSizeCache.has(key);
2568
+ const defaultShouldAdjust = isFirstMeasure ? (
2569
+ // First measurement: compensate any item whose top sits above the
2570
+ // fold — the estimate→actual delta must be corrected regardless of
2571
+ // scroll direction, since the whole estimated block was above it.
2572
+ itemStart < scrollOffsetWithAdj
2573
+ ) : (
2574
+ // Re-measurement: only compensate an item that is ENTIRELY above the
2575
+ // fold. An item that merely *spans* the fold (top above, bottom
2576
+ // below — e.g. a streaming chat message growing at its bottom)
2577
+ // changes size *below* the anchor point, so shifting scrollTop by the
2578
+ // delta would drag the viewport downward on every growth (#1218).
2579
+ // Also skip during backward scroll to avoid the "items jump while
2580
+ // scrolling up" cascade.
2581
+ itemStart + itemSize <= scrollOffsetWithAdj && this.scrollDirection !== "backward"
2582
+ );
2583
+ const shouldAdjustScroll = ((_b = this.scrollState) == null ? void 0 : _b.behavior) !== "smooth" && (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(
2584
+ // The callback expects a VirtualItem; build one lazily only
2585
+ // when the consumer actually supplied a custom predicate.
2586
+ (_b2 = this.measurementsCache[index]) != null ? _b2 : {
2587
+ index,
2588
+ key,
2589
+ start: itemStart,
2590
+ size: cachedSize,
2591
+ end: itemStart + cachedSize,
2592
+ lane: 0
2593
+ },
2594
+ delta,
2595
+ this
2596
+ ) : defaultShouldAdjust);
2597
+ if (this.pendingMin === null || index < this.pendingMin) {
2598
+ this.pendingMin = index;
2599
+ }
2600
+ this.itemSizeCache.set(key, size);
2601
+ this.itemSizeCacheVersion++;
2602
+ let adjustedSync = false;
2603
+ if (wasAtEnd) {
2604
+ adjustedSync = this.applyScrollAdjustment(
2605
+ this.getTotalSize() - prevTotalSize
2606
+ );
2607
+ } else if (shouldAdjustScroll) {
2608
+ adjustedSync = this.applyScrollAdjustment(delta);
2164
2609
  }
2165
- this.pendingMeasuredCacheIndexes.push(item.index);
2166
- this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));
2167
- this.notify(false);
2610
+ this.notify(adjustedSync);
2168
2611
  }
2169
2612
  };
2170
2613
  this.getVirtualItems = memo(
@@ -2188,14 +2631,15 @@ var Virtualizer = class {
2188
2631
  if (measurements.length === 0) {
2189
2632
  return void 0;
2190
2633
  }
2191
- return notUndefined(
2192
- measurements[findNearestBinarySearch(
2193
- 0,
2194
- measurements.length - 1,
2195
- (index) => notUndefined(measurements[index]).start,
2196
- offset
2197
- )]
2634
+ const flat = this._flatMeasurements;
2635
+ const useFlat = this.options.lanes === 1 && flat != null;
2636
+ const idx = findNearestBinarySearch(
2637
+ 0,
2638
+ measurements.length - 1,
2639
+ useFlat ? (i) => flat[i * 2] : (i) => notUndefined(measurements[i]).start,
2640
+ offset
2198
2641
  );
2642
+ return notUndefined(measurements[idx]);
2199
2643
  };
2200
2644
  this.getMaxScrollOffset = () => {
2201
2645
  if (!this.scrollElement) return 0;
@@ -2206,6 +2650,18 @@ var Virtualizer = class {
2206
2650
  return this.options.horizontal ? doc.scrollWidth - this.scrollElement.innerWidth : doc.scrollHeight - this.scrollElement.innerHeight;
2207
2651
  }
2208
2652
  };
2653
+ this.getVirtualDistanceFromEnd = () => {
2654
+ return Math.max(
2655
+ this.getTotalSize() - this.getSize() - this.getScrollOffset(),
2656
+ 0
2657
+ );
2658
+ };
2659
+ this.getDistanceFromEnd = () => {
2660
+ return Math.max(this.getMaxScrollOffset() - this.getScrollOffset(), 0);
2661
+ };
2662
+ this.isAtEnd = (threshold = this.options.scrollEndThreshold) => {
2663
+ return this.getDistanceFromEnd() <= threshold;
2664
+ };
2209
2665
  this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {
2210
2666
  if (!this.scrollElement) return 0;
2211
2667
  const size = this.getSize();
@@ -2246,6 +2702,7 @@ var Virtualizer = class {
2246
2702
  ];
2247
2703
  };
2248
2704
  this.scrollToOffset = (toOffset, { align = "start", behavior = "auto" } = {}) => {
2705
+ this._iosDeferredAdjustment = 0;
2249
2706
  const offset = this.getOffsetForAlignment(toOffset, align);
2250
2707
  const now = this.now();
2251
2708
  this.scrollState = {
@@ -2263,6 +2720,7 @@ var Virtualizer = class {
2263
2720
  align: initialAlign = "auto",
2264
2721
  behavior = "auto"
2265
2722
  } = {}) => {
2723
+ this._iosDeferredAdjustment = 0;
2266
2724
  index = Math.max(0, Math.min(index, this.options.count - 1));
2267
2725
  const offsetInfo = this.getOffsetForIndex(index, initialAlign);
2268
2726
  if (!offsetInfo) {
@@ -2295,6 +2753,18 @@ var Virtualizer = class {
2295
2753
  this._scrollToOffset(offset, { adjustments: void 0, behavior });
2296
2754
  this.scheduleScrollReconcile();
2297
2755
  };
2756
+ this.scrollToEnd = ({ behavior = "auto" } = {}) => {
2757
+ if (this.options.count > 0) {
2758
+ this.scrollToIndex(this.options.count - 1, {
2759
+ align: "end",
2760
+ behavior
2761
+ });
2762
+ return;
2763
+ }
2764
+ this.scrollToOffset(Math.max(this.getTotalSize() - this.getSize(), 0), {
2765
+ behavior
2766
+ });
2767
+ };
2298
2768
  this.getTotalSize = () => {
2299
2769
  var _a2;
2300
2770
  var _a;
@@ -2303,7 +2773,13 @@ var Virtualizer = class {
2303
2773
  if (measurements.length === 0) {
2304
2774
  end = this.options.paddingStart;
2305
2775
  } else if (this.options.lanes === 1) {
2306
- end = (_a2 = (_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) != null ? _a2 : 0;
2776
+ const lastIdx = measurements.length - 1;
2777
+ const flat = this._flatMeasurements;
2778
+ if (flat != null) {
2779
+ end = flat[lastIdx * 2] + flat[lastIdx * 2 + 1];
2780
+ } else {
2781
+ end = (_a2 = (_a = measurements[lastIdx]) == null ? void 0 : _a.end) != null ? _a2 : 0;
2782
+ }
2307
2783
  } else {
2308
2784
  const endByLane = Array(this.options.lanes).fill(null);
2309
2785
  let endIndex = measurements.length - 1;
@@ -2321,19 +2797,65 @@ var Virtualizer = class {
2321
2797
  0
2322
2798
  );
2323
2799
  };
2800
+ this.takeSnapshot = () => {
2801
+ const snapshot = [];
2802
+ if (this.itemSizeCache.size === 0) return snapshot;
2803
+ const m = this.getMeasurements();
2804
+ for (const item of m) {
2805
+ if (item && this.itemSizeCache.has(item.key)) {
2806
+ snapshot.push({
2807
+ index: item.index,
2808
+ key: item.key,
2809
+ start: item.start,
2810
+ size: item.size,
2811
+ end: item.end,
2812
+ lane: item.lane
2813
+ });
2814
+ }
2815
+ }
2816
+ return snapshot;
2817
+ };
2324
2818
  this._scrollToOffset = (offset, {
2325
2819
  adjustments,
2326
2820
  behavior
2327
2821
  }) => {
2822
+ this._intendedScrollOffset = offset + (adjustments != null ? adjustments : 0);
2328
2823
  this.options.scrollToFn(offset, { behavior, adjustments }, this);
2329
2824
  };
2330
2825
  this.measure = () => {
2331
- this.itemSizeCache = /* @__PURE__ */ new Map();
2332
- this.laneAssignments = /* @__PURE__ */ new Map();
2826
+ this.pendingMin = null;
2827
+ this.itemSizeCache.clear();
2828
+ this.laneAssignments.clear();
2829
+ this.itemSizeCacheVersion++;
2333
2830
  this.notify(false);
2334
2831
  };
2335
2832
  this.setOptions(opts);
2336
2833
  }
2834
+ // Returns `true` when it performed a synchronous `scrollTop` write this
2835
+ // tick, `false` when the delta was zero or the write was deferred (iOS).
2836
+ // `resizeItem` uses that to decide whether the follow-up `notify` must be
2837
+ // synchronous so the grown transforms commit in the same paint (#1227).
2838
+ applyScrollAdjustment(delta, behavior) {
2839
+ if (delta === 0) return false;
2840
+ if (this.options.debug) {
2841
+ console.info("correction", delta);
2842
+ }
2843
+ if (isIOSWebKit() && (this.isScrolling || this._iosTouching || this._iosJustTouchEnded)) {
2844
+ this._iosDeferredAdjustment += delta;
2845
+ return false;
2846
+ } else {
2847
+ this._scrollToOffset(this.getScrollOffset(), {
2848
+ adjustments: this.scrollAdjustments += delta,
2849
+ behavior
2850
+ });
2851
+ if (this.scrollOffset !== null) {
2852
+ this.scrollOffset += this.scrollAdjustments;
2853
+ if (this.scrollOffset < 0) this.scrollOffset = 0;
2854
+ this.scrollAdjustments = 0;
2855
+ }
2856
+ return true;
2857
+ }
2858
+ }
2337
2859
  scheduleScrollReconcile() {
2338
2860
  if (!this.targetWindow) {
2339
2861
  this.scrollState = null;
@@ -2361,17 +2883,28 @@ var Virtualizer = class {
2361
2883
  if (!targetChanged && approxEqual(targetOffset, this.getScrollOffset())) {
2362
2884
  this.scrollState.stableFrames++;
2363
2885
  if (this.scrollState.stableFrames >= STABLE_FRAMES) {
2886
+ if (this.getScrollOffset() !== targetOffset) {
2887
+ this._scrollToOffset(targetOffset, {
2888
+ adjustments: void 0,
2889
+ behavior: "auto"
2890
+ });
2891
+ }
2364
2892
  this.scrollState = null;
2365
2893
  return;
2366
2894
  }
2367
2895
  } else {
2368
2896
  this.scrollState.stableFrames = 0;
2369
2897
  if (targetChanged) {
2898
+ const viewport = this.getSize() || 600;
2899
+ const distance = Math.abs(targetOffset - this.getScrollOffset());
2900
+ const keepSmooth = this.scrollState.behavior === "smooth" && distance > viewport;
2370
2901
  this.scrollState.lastTargetOffset = targetOffset;
2371
- this.scrollState.behavior = "auto";
2902
+ if (!keepSmooth) {
2903
+ this.scrollState.behavior = "auto";
2904
+ }
2372
2905
  this._scrollToOffset(targetOffset, {
2373
2906
  adjustments: void 0,
2374
- behavior: "auto"
2907
+ behavior: keepSmooth ? "smooth" : "auto"
2375
2908
  });
2376
2909
  }
2377
2910
  }
@@ -2396,26 +2929,41 @@ var findNearestBinarySearch = (low, high, getCurrentValue, value) => {
2396
2929
  return 0;
2397
2930
  }
2398
2931
  };
2399
- function calculateRange({
2400
- measurements,
2401
- outerSize,
2402
- scrollOffset,
2403
- lanes
2404
- }) {
2932
+ function findNearestBinarySearchFlat(flat, high, value) {
2933
+ let low = 0;
2934
+ while (low <= high) {
2935
+ const middle = (low + high) / 2 | 0;
2936
+ const currentValue = flat[middle * 2];
2937
+ if (currentValue < value) {
2938
+ low = middle + 1;
2939
+ } else if (currentValue > value) {
2940
+ high = middle - 1;
2941
+ } else {
2942
+ return middle;
2943
+ }
2944
+ }
2945
+ return low > 0 ? low - 1 : 0;
2946
+ }
2947
+ function calculateRangeImpl(measurements, outerSize, scrollOffset, lanes, flat) {
2405
2948
  const lastIndex = measurements.length - 1;
2406
- const getOffset = (index) => measurements[index].start;
2407
2949
  if (measurements.length <= lanes) {
2408
- return {
2409
- startIndex: 0,
2410
- endIndex: lastIndex
2411
- };
2950
+ return { startIndex: 0, endIndex: lastIndex };
2412
2951
  }
2413
- let startIndex = findNearestBinarySearch(
2414
- 0,
2415
- lastIndex,
2416
- getOffset,
2417
- scrollOffset
2418
- );
2952
+ if (lanes === 1 && flat !== null) {
2953
+ const startIndex2 = findNearestBinarySearchFlat(
2954
+ flat,
2955
+ lastIndex,
2956
+ scrollOffset
2957
+ );
2958
+ let endIndex2 = startIndex2;
2959
+ const limit = scrollOffset + outerSize;
2960
+ while (endIndex2 < lastIndex && flat[endIndex2 * 2] + flat[endIndex2 * 2 + 1] < limit) {
2961
+ endIndex2++;
2962
+ }
2963
+ return { startIndex: startIndex2, endIndex: endIndex2 };
2964
+ }
2965
+ const getStart = (index) => measurements[index].start;
2966
+ let startIndex = findNearestBinarySearch(0, lastIndex, getStart, scrollOffset);
2419
2967
  let endIndex = startIndex;
2420
2968
  if (lanes === 1) {
2421
2969
  while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {
@@ -2440,36 +2988,119 @@ function calculateRange({
2440
2988
  return { startIndex, endIndex };
2441
2989
  }
2442
2990
 
2443
- // ../../node_modules/.pnpm/@tanstack+react-virtual@3.13.24_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-virtual/dist/esm/index.js
2991
+ // ../../node_modules/.pnpm/@tanstack+react-virtual@3.14.10_react-dom@19.2.8_react@19.2.8__react@19.2.8/node_modules/@tanstack/react-virtual/dist/esm/index.js
2444
2992
  var useIsomorphicLayoutEffect = typeof document !== "undefined" ? React.useLayoutEffect : React.useEffect;
2445
2993
  function useVirtualizerBase(_a) {
2446
2994
  var _b = _a, {
2447
- useFlushSync = true
2995
+ useFlushSync = true,
2996
+ directDomUpdates = false,
2997
+ directDomUpdatesMode = "transform"
2448
2998
  } = _b, options = __objRest(_b, [
2449
- "useFlushSync"
2999
+ "useFlushSync",
3000
+ "directDomUpdates",
3001
+ "directDomUpdatesMode"
2450
3002
  ]);
2451
- const rerender = React.useReducer(() => ({}), {})[1];
3003
+ const rerender = React.useReducer((x) => x + 1, 0)[1];
3004
+ const directRef = React.useRef({
3005
+ enabled: directDomUpdates,
3006
+ mode: directDomUpdatesMode,
3007
+ container: null,
3008
+ lastSize: null,
3009
+ // Keyed by the element itself so a remounted node (same key, new DOM
3010
+ // node — e.g. when `enabled` is toggled off then on) is treated as fresh
3011
+ // and gets its style written.
3012
+ lastPositions: /* @__PURE__ */ new WeakMap(),
3013
+ prevRange: null
3014
+ });
3015
+ directRef.current.enabled = directDomUpdates;
3016
+ directRef.current.mode = directDomUpdatesMode;
3017
+ const applyContainerSize = (instance2) => {
3018
+ const state = directRef.current;
3019
+ if (!state.enabled || !state.container) return;
3020
+ const totalSize = instance2.getTotalSize();
3021
+ if (totalSize !== state.lastSize) {
3022
+ state.lastSize = totalSize;
3023
+ const sizeAxis = instance2.options.horizontal ? "width" : "height";
3024
+ state.container.style[sizeAxis] = `${totalSize}px`;
3025
+ }
3026
+ };
3027
+ const applyDirectStyles = (instance2) => {
3028
+ const state = directRef.current;
3029
+ if (!state.enabled || !state.container) return;
3030
+ applyContainerSize(instance2);
3031
+ const horizontal = !!instance2.options.horizontal;
3032
+ const useTransform = state.mode === "transform";
3033
+ const posAxis = horizontal ? "left" : "top";
3034
+ const scrollMargin = instance2.options.scrollMargin;
3035
+ const items = instance2.getVirtualItems();
3036
+ for (const item of items) {
3037
+ const next = item.start - scrollMargin;
3038
+ const el = instance2.elementsCache.get(item.key);
3039
+ if (!el) continue;
3040
+ if (state.lastPositions.get(el) === next) continue;
3041
+ state.lastPositions.set(el, next);
3042
+ if (useTransform) {
3043
+ el.style.transform = horizontal ? `translate3d(${next}px, 0, 0)` : `translate3d(0, ${next}px, 0)`;
3044
+ } else {
3045
+ el.style[posAxis] = `${next}px`;
3046
+ }
3047
+ }
3048
+ };
2452
3049
  const resolvedOptions = __spreadProps(__spreadValues({}, options), {
2453
3050
  onChange: (instance2, sync) => {
2454
3051
  var _a2;
2455
- if (useFlushSync && sync) {
2456
- flushSync(rerender);
2457
- } else {
2458
- rerender();
3052
+ const state = directRef.current;
3053
+ let shouldRerender = true;
3054
+ if (state.enabled) {
3055
+ applyDirectStyles(instance2);
3056
+ const range = instance2.range;
3057
+ const prev = state.prevRange;
3058
+ shouldRerender = !prev || prev.isScrolling !== instance2.isScrolling || prev.startIndex !== (range == null ? void 0 : range.startIndex) || prev.endIndex !== (range == null ? void 0 : range.endIndex);
3059
+ if (shouldRerender) {
3060
+ state.prevRange = range ? {
3061
+ startIndex: range.startIndex,
3062
+ endIndex: range.endIndex,
3063
+ isScrolling: instance2.isScrolling
3064
+ } : null;
3065
+ }
3066
+ }
3067
+ if (shouldRerender) {
3068
+ if (useFlushSync && sync) {
3069
+ flushSync(rerender);
3070
+ } else {
3071
+ rerender();
3072
+ }
2459
3073
  }
2460
3074
  (_a2 = options.onChange) == null ? void 0 : _a2.call(options, instance2, sync);
2461
3075
  }
2462
3076
  });
2463
- const [instance] = React.useState(
2464
- () => new Virtualizer(resolvedOptions)
2465
- );
3077
+ const [instance] = React.useState(() => {
3078
+ const v = new Virtualizer(resolvedOptions);
3079
+ return Object.assign(v, {
3080
+ containerRef: (node) => {
3081
+ const state = directRef.current;
3082
+ state.container = node;
3083
+ state.lastSize = null;
3084
+ if (node && state.enabled) {
3085
+ const total = v.getTotalSize();
3086
+ state.lastSize = total;
3087
+ const axis = v.options.horizontal ? "width" : "height";
3088
+ node.style[axis] = `${total}px`;
3089
+ }
3090
+ }
3091
+ });
3092
+ });
2466
3093
  instance.setOptions(resolvedOptions);
2467
3094
  useIsomorphicLayoutEffect(() => {
2468
3095
  return instance._didMount();
2469
3096
  }, []);
2470
3097
  useIsomorphicLayoutEffect(() => {
3098
+ applyContainerSize(instance);
2471
3099
  return instance._willUpdate();
2472
3100
  });
3101
+ useIsomorphicLayoutEffect(() => {
3102
+ applyDirectStyles(instance);
3103
+ });
2473
3104
  return instance;
2474
3105
  }
2475
3106
  function useWindowVirtualizer(options) {
@@ -2484,11 +3115,11 @@ function useWindowVirtualizer(options) {
2484
3115
 
2485
3116
  // ../renderers/src/CollectionRenderer/components/ContentComponent.tsx
2486
3117
  import { ProcessIndicator, Button as Button4 } from "@transferwise/components";
2487
- import { useRef as useRef3, useEffect as useEffect7, useLayoutEffect as useLayoutEffect2 } from "react";
3118
+ import { useRef as useRef4, useEffect as useEffect7, useLayoutEffect as useLayoutEffect2 } from "react";
2488
3119
 
2489
3120
  // ../renderers/src/step/StepFooter.tsx
2490
3121
  import { Button as Button3 } from "@transferwise/components";
2491
- import { useEffect as useEffect6, useRef as useRef2, useState as useState7 } from "react";
3122
+ import { useEffect as useEffect6, useRef as useRef3, useState as useState7 } from "react";
2492
3123
  import { useIntl as useIntl3 } from "react-intl";
2493
3124
 
2494
3125
  // ../renderers/src/messages/step.messages.ts
@@ -2502,23 +3133,23 @@ var step_messages_default = defineMessages4({
2502
3133
  });
2503
3134
 
2504
3135
  // ../renderers/src/step/StepFooter.tsx
2505
- import { Fragment as Fragment2, jsx as jsx32, jsxs as jsxs5 } from "react/jsx-runtime";
3136
+ import { Fragment as Fragment2, jsx as jsx34, jsxs as jsxs6 } from "react/jsx-runtime";
2506
3137
  var SCROLL_TO_BOTTOM = "scroll-to-bottom";
2507
3138
  var StepFooter = ({ footer, tags }) => {
2508
3139
  if (tags == null ? void 0 : tags.includes(SCROLL_TO_BOTTOM)) {
2509
- return /* @__PURE__ */ jsx32(FooterWithScrollButton, { footer });
3140
+ return /* @__PURE__ */ jsx34(FooterWithScrollButton, { footer });
2510
3141
  }
2511
- return /* @__PURE__ */ jsx32(DefaultFooter, { footer });
3142
+ return /* @__PURE__ */ jsx34(DefaultFooter, { footer });
2512
3143
  };
2513
3144
  var DefaultFooter = ({ footer }) => {
2514
3145
  const hasFooter = footer && Array.isArray(footer) && footer.length > 0;
2515
- return hasFooter ? /* @__PURE__ */ jsx32("div", { className: "df-step-fixed__footer", children: footer }) : void 0;
3146
+ return hasFooter ? /* @__PURE__ */ jsx34("div", { className: "df-step-fixed__footer", children: footer }) : void 0;
2516
3147
  };
2517
3148
  var FooterWithScrollButton = ({ footer }) => {
2518
3149
  const { formatMessage } = useIntl3();
2519
- const endOfLayoutRef = useRef2(null);
3150
+ const endOfLayoutRef = useRef3(null);
2520
3151
  const isElementVisible = useIsElementVisible(endOfLayoutRef);
2521
- const scrollButton = /* @__PURE__ */ jsx32(
3152
+ const scrollButton = /* @__PURE__ */ jsx34(
2522
3153
  Button3,
2523
3154
  {
2524
3155
  className: "m-b-1",
@@ -2534,11 +3165,11 @@ var FooterWithScrollButton = ({ footer }) => {
2534
3165
  );
2535
3166
  const hasStepFooterContent = footer && Array.isArray(footer) && footer.length > 0;
2536
3167
  if (isElementVisible && !hasStepFooterContent) {
2537
- return /* @__PURE__ */ jsx32("div", { ref: endOfLayoutRef, "aria-hidden": "true" });
3168
+ return /* @__PURE__ */ jsx34("div", { ref: endOfLayoutRef, "aria-hidden": "true" });
2538
3169
  }
2539
- return /* @__PURE__ */ jsxs5(Fragment2, { children: [
2540
- /* @__PURE__ */ jsx32("div", { ref: endOfLayoutRef, "aria-hidden": "true" }),
2541
- /* @__PURE__ */ jsxs5("div", { className: "df-step-fixed__footer", children: [
3170
+ return /* @__PURE__ */ jsxs6(Fragment2, { children: [
3171
+ /* @__PURE__ */ jsx34("div", { ref: endOfLayoutRef, "aria-hidden": "true" }),
3172
+ /* @__PURE__ */ jsxs6("div", { className: "df-step-fixed__footer", children: [
2542
3173
  !isElementVisible && scrollButton,
2543
3174
  footer
2544
3175
  ] })
@@ -2580,10 +3211,10 @@ var collection_messages_default = defineMessages5({
2580
3211
  });
2581
3212
 
2582
3213
  // ../renderers/src/CollectionRenderer/components/ContentComponent.tsx
2583
- import { jsx as jsx33, jsxs as jsxs6 } from "react/jsx-runtime";
3214
+ import { jsx as jsx35, jsxs as jsxs7 } from "react/jsx-runtime";
2584
3215
  var ContentComponent = (props) => {
2585
3216
  const { state, status, SectionHeader, Item } = props;
2586
- const endOfContentRef = useRef3(null);
3217
+ const endOfContentRef = useRef4(null);
2587
3218
  const isBottomVisible = useIsElementVisible(endOfContentRef);
2588
3219
  useEffect7(() => {
2589
3220
  const shouldAutoLoad = isBottomVisible && status.type === "idle" && state.afterSectionsProps.length === 0;
@@ -2610,8 +3241,8 @@ var ContentComponent = (props) => {
2610
3241
  type: "item"
2611
3242
  }))
2612
3243
  ]);
2613
- const listRef = useRef3(null);
2614
- const listOffsetRef = useRef3(0);
3244
+ const listRef = useRef4(null);
3245
+ const listOffsetRef = useRef4(0);
2615
3246
  useLayoutEffect2(() => {
2616
3247
  var _a, _b;
2617
3248
  listOffsetRef.current = (_b = (_a = listRef.current) == null ? void 0 : _a.offsetTop) != null ? _b : 0;
@@ -2623,9 +3254,9 @@ var ContentComponent = (props) => {
2623
3254
  // eslint-disable-next-line react-hooks/refs
2624
3255
  scrollMargin: listOffsetRef.current
2625
3256
  });
2626
- return /* @__PURE__ */ jsxs6("div", { ref: listRef, children: [
3257
+ return /* @__PURE__ */ jsxs7("div", { ref: listRef, children: [
2627
3258
  state.beforeSections,
2628
- /* @__PURE__ */ jsx33(
3259
+ /* @__PURE__ */ jsx35(
2629
3260
  "div",
2630
3261
  {
2631
3262
  style: {
@@ -2638,7 +3269,7 @@ var ContentComponent = (props) => {
2638
3269
  if (!i) {
2639
3270
  return null;
2640
3271
  }
2641
- return /* @__PURE__ */ jsx33(
3272
+ return /* @__PURE__ */ jsx35(
2642
3273
  "div",
2643
3274
  {
2644
3275
  ref: virtualizer.measureElement,
@@ -2650,14 +3281,14 @@ var ContentComponent = (props) => {
2650
3281
  width: "100%",
2651
3282
  transform: `translateY(${item.start - virtualizer.options.scrollMargin}px)`
2652
3283
  },
2653
- children: i.type === "header" ? /* @__PURE__ */ jsx33(SectionHeader, __spreadValues({}, i)) : /* @__PURE__ */ jsx33(Item, __spreadValues({}, i.item))
3284
+ children: i.type === "header" ? /* @__PURE__ */ jsx35(SectionHeader, __spreadValues({}, i)) : /* @__PURE__ */ jsx35(Item, __spreadValues({}, i.item))
2654
3285
  },
2655
3286
  item.key
2656
3287
  );
2657
3288
  })
2658
3289
  }
2659
3290
  ),
2660
- /* @__PURE__ */ jsx33("div", { ref: endOfContentRef, className: "d-flex m-x-auto m-y-2", children: /* @__PURE__ */ jsx33(PaginationComponent, { status, state }) }),
3291
+ /* @__PURE__ */ jsx35("div", { ref: endOfContentRef, className: "d-flex m-x-auto m-y-2", children: /* @__PURE__ */ jsx35(PaginationComponent, { status, state }) }),
2661
3292
  state.afterSections
2662
3293
  ] });
2663
3294
  };
@@ -2672,26 +3303,26 @@ var PaginationComponent = ({
2672
3303
  return null;
2673
3304
  }
2674
3305
  if (isPaginationError) {
2675
- return /* @__PURE__ */ jsx33(LoadMoreButton, { onClick: status.retry });
3306
+ return /* @__PURE__ */ jsx35(LoadMoreButton, { onClick: status.retry });
2676
3307
  }
2677
3308
  if (state.afterSectionsProps.length > 0 && loadMore) {
2678
- return /* @__PURE__ */ jsx33(LoadMoreButton, { onClick: loadMore });
3309
+ return /* @__PURE__ */ jsx35(LoadMoreButton, { onClick: loadMore });
2679
3310
  }
2680
- return /* @__PURE__ */ jsx33(ProcessIndicator, { size: "xs", "data-testid": "collection-pagination-loader" });
3311
+ return /* @__PURE__ */ jsx35(ProcessIndicator, { size: "xs", "data-testid": "collection-pagination-loader" });
2681
3312
  };
2682
3313
  var LoadMoreButton = ({ onClick }) => {
2683
3314
  const { formatMessage } = useIntl4();
2684
- return /* @__PURE__ */ jsx33("div", { className: "d-flex m-x-auto", children: /* @__PURE__ */ jsx33(Button4, { v2: true, size: "sm", priority: "secondary-neutral", onClick, children: formatMessage(collection_messages_default.loadMoreButton) }) });
3315
+ return /* @__PURE__ */ jsx35("div", { className: "d-flex m-x-auto", children: /* @__PURE__ */ jsx35(Button4, { v2: true, size: "sm", priority: "secondary-neutral", onClick, children: formatMessage(collection_messages_default.loadMoreButton) }) });
2685
3316
  };
2686
3317
 
2687
3318
  // ../renderers/src/CollectionRenderer/components/FilterComponent.tsx
2688
3319
  import { Chips } from "@transferwise/components";
2689
- import { jsx as jsx34 } from "react/jsx-runtime";
3320
+ import { jsx as jsx36 } from "react/jsx-runtime";
2690
3321
  var FiltersComponent = ({ state }) => {
2691
3322
  const { filters } = state;
2692
- return /* @__PURE__ */ jsx34("div", { className: "df-filters-container", children: filters.map((filter) => {
3323
+ return /* @__PURE__ */ jsx36("div", { className: "df-filters-container", children: filters.map((filter) => {
2693
3324
  var _a;
2694
- return /* @__PURE__ */ jsx34(FilterComponent, __spreadValues({}, filter), JSON.stringify((_a = filter.options) == null ? void 0 : _a.map((o) => o.value)));
3325
+ return /* @__PURE__ */ jsx36(FilterComponent, __spreadValues({}, filter), JSON.stringify((_a = filter.options) == null ? void 0 : _a.map((o) => o.value)));
2695
3326
  }) });
2696
3327
  };
2697
3328
  var FilterComponent = (filter) => {
@@ -2699,7 +3330,7 @@ var FilterComponent = (filter) => {
2699
3330
  if (!options) {
2700
3331
  return null;
2701
3332
  }
2702
- return /* @__PURE__ */ jsx34(
3333
+ return /* @__PURE__ */ jsx36(
2703
3334
  Chips,
2704
3335
  {
2705
3336
  className: "m-b-1",
@@ -2729,7 +3360,7 @@ import { ListItem as ListItem6 } from "@transferwise/components";
2729
3360
 
2730
3361
  // ../renderers/src/utils/listItem/getAdditionalInfo.tsx
2731
3362
  import { ListItem as ListItem4 } from "@transferwise/components";
2732
- import { jsx as jsx35 } from "react/jsx-runtime";
3363
+ import { jsx as jsx37 } from "react/jsx-runtime";
2733
3364
  var getAdditionalInfo = (additionalInfo) => {
2734
3365
  var _a, _b;
2735
3366
  if (!additionalInfo) {
@@ -2737,7 +3368,7 @@ var getAdditionalInfo = (additionalInfo) => {
2737
3368
  }
2738
3369
  const { href, text, onClick } = additionalInfo;
2739
3370
  if (href || onClick) {
2740
- return /* @__PURE__ */ jsx35(
3371
+ return /* @__PURE__ */ jsx37(
2741
3372
  ListItem4.AdditionalInfo,
2742
3373
  {
2743
3374
  action: __spreadValues({
@@ -2746,19 +3377,19 @@ var getAdditionalInfo = (additionalInfo) => {
2746
3377
  }
2747
3378
  );
2748
3379
  }
2749
- return /* @__PURE__ */ jsx35(ListItem4.AdditionalInfo, { children: additionalInfo == null ? void 0 : additionalInfo.text });
3380
+ return /* @__PURE__ */ jsx37(ListItem4.AdditionalInfo, { children: additionalInfo == null ? void 0 : additionalInfo.text });
2750
3381
  };
2751
3382
 
2752
3383
  // ../renderers/src/utils/listItem/getCTAControl.tsx
2753
3384
  import { ListItem as ListItem5 } from "@transferwise/components";
2754
- import { jsx as jsx36 } from "react/jsx-runtime";
3385
+ import { jsx as jsx38 } from "react/jsx-runtime";
2755
3386
  var getCTAControl = (callToAction, { ctaSecondary, fullyInteractive }) => {
2756
3387
  if (!callToAction) {
2757
3388
  return void 0;
2758
3389
  }
2759
3390
  const { accessibilityDescription, title, context } = callToAction;
2760
3391
  const { priority, sentiment } = getPriorityAndSentiment(ctaSecondary, context);
2761
- return /* @__PURE__ */ jsx36(
3392
+ return /* @__PURE__ */ jsx38(
2762
3393
  ListItem5.Button,
2763
3394
  __spreadProps(__spreadValues({}, callToAction.getAnchorProps()), {
2764
3395
  partiallyInteractive: !fullyInteractive,
@@ -2783,7 +3414,7 @@ var shouldUseAvatar = (control, tags) => {
2783
3414
  };
2784
3415
 
2785
3416
  // ../renderers/src/CollectionRenderer/components/ItemComponent.tsx
2786
- import { jsx as jsx37 } from "react/jsx-runtime";
3417
+ import { jsx as jsx39 } from "react/jsx-runtime";
2787
3418
  var ItemComponent = (props) => {
2788
3419
  var _a, _b;
2789
3420
  const {
@@ -2805,7 +3436,7 @@ var ItemComponent = (props) => {
2805
3436
  ctaSecondary: (_a = tags == null ? void 0 : tags.includes("cta-secondary")) != null ? _a : false,
2806
3437
  fullyInteractive: (_b = (tags == null ? void 0 : tags.includes("fully-interactive")) && (additionalInfo == null ? void 0 : additionalInfo.onClick) == null) != null ? _b : false
2807
3438
  };
2808
- return /* @__PURE__ */ jsx37(
3439
+ return /* @__PURE__ */ jsx39(
2809
3440
  ListItem6,
2810
3441
  {
2811
3442
  title,
@@ -2822,10 +3453,10 @@ var ItemComponent = (props) => {
2822
3453
  };
2823
3454
  var getNavigationControl = (onClick, href) => {
2824
3455
  if (href) {
2825
- return /* @__PURE__ */ jsx37(ListItem6.Navigation, { href });
3456
+ return /* @__PURE__ */ jsx39(ListItem6.Navigation, { href });
2826
3457
  }
2827
3458
  if (onClick) {
2828
- return /* @__PURE__ */ jsx37(ListItem6.Navigation, { onClick });
3459
+ return /* @__PURE__ */ jsx39(ListItem6.Navigation, { onClick });
2829
3460
  }
2830
3461
  return null;
2831
3462
  };
@@ -2839,7 +3470,7 @@ import {
2839
3470
  } from "@transferwise/components";
2840
3471
  import { CrossCircleFill, Search } from "@transferwise/icons";
2841
3472
  import { useIntl as useIntl5 } from "react-intl";
2842
- import { jsx as jsx38 } from "react/jsx-runtime";
3473
+ import { jsx as jsx40 } from "react/jsx-runtime";
2843
3474
  var SearchComponent = ({
2844
3475
  state,
2845
3476
  status,
@@ -2855,12 +3486,12 @@ var SearchComponent = ({
2855
3486
  const getAddon = () => {
2856
3487
  var _a;
2857
3488
  if (status.type === "loading") {
2858
- return { content: /* @__PURE__ */ jsx38(ProcessIndicator2, { size: "xs", "data-testid": "collection-search-loader" }) };
3489
+ return { content: /* @__PURE__ */ jsx40(ProcessIndicator2, { size: "xs", "data-testid": "collection-search-loader" }) };
2859
3490
  }
2860
3491
  if ((_a = state.search) == null ? void 0 : _a.query) {
2861
3492
  return {
2862
3493
  interactive: true,
2863
- content: /* @__PURE__ */ jsx38(
3494
+ content: /* @__PURE__ */ jsx40(
2864
3495
  IconButton,
2865
3496
  {
2866
3497
  priority: "minimal",
@@ -2870,14 +3501,14 @@ var SearchComponent = ({
2870
3501
  var _a2;
2871
3502
  return (_a2 = state.search) == null ? void 0 : _a2.onChange("");
2872
3503
  },
2873
- children: /* @__PURE__ */ jsx38(CrossCircleFill, {})
3504
+ children: /* @__PURE__ */ jsx40(CrossCircleFill, {})
2874
3505
  }
2875
3506
  )
2876
3507
  };
2877
3508
  }
2878
3509
  return void 0;
2879
3510
  };
2880
- return /* @__PURE__ */ jsx38(
3511
+ return /* @__PURE__ */ jsx40(
2881
3512
  FieldInput_default,
2882
3513
  {
2883
3514
  id: "search",
@@ -2888,7 +3519,7 @@ var SearchComponent = ({
2888
3519
  features,
2889
3520
  control,
2890
3521
  tags,
2891
- children: /* @__PURE__ */ jsx38(InputGroup, { addonStart: { content: /* @__PURE__ */ jsx38(Search, { size: 24 }) }, addonEnd: getAddon(), children: /* @__PURE__ */ jsx38(
3522
+ children: /* @__PURE__ */ jsx40(InputGroup, { addonStart: { content: /* @__PURE__ */ jsx40(Search, { size: 24 }) }, addonEnd: getAddon(), children: /* @__PURE__ */ jsx40(
2892
3523
  Input,
2893
3524
  {
2894
3525
  id: "search",
@@ -2907,14 +3538,14 @@ var SearchComponent = ({
2907
3538
  };
2908
3539
 
2909
3540
  // ../renderers/src/CollectionRenderer/components/SectionHeaderComponent.tsx
2910
- import { jsx as jsx39 } from "react/jsx-runtime";
3541
+ import { jsx as jsx41 } from "react/jsx-runtime";
2911
3542
  var SectionHeaderComponent = ({
2912
3543
  title,
2913
3544
  callToAction
2914
- }) => /* @__PURE__ */ jsx39(Header, { title, callToAction });
3545
+ }) => /* @__PURE__ */ jsx41(Header, { title, callToAction });
2915
3546
 
2916
3547
  // ../renderers/src/CollectionRenderer/createCollectionRenderer.tsx
2917
- import { jsx as jsx40 } from "react/jsx-runtime";
3548
+ import { jsx as jsx42 } from "react/jsx-runtime";
2918
3549
  var createCollectionRenderer = (canRender, components) => {
2919
3550
  const componentsWithDefaults = __spreadValues({
2920
3551
  Search: SearchComponent,
@@ -2928,35 +3559,35 @@ var createCollectionRenderer = (canRender, components) => {
2928
3559
  canRenderType: "collection",
2929
3560
  canRender,
2930
3561
  render: (props) => {
2931
- return /* @__PURE__ */ jsx40(CollectionRendererComponent, __spreadValues(__spreadValues({}, props), componentsWithDefaults));
3562
+ return /* @__PURE__ */ jsx42(CollectionRendererComponent, __spreadValues(__spreadValues({}, props), componentsWithDefaults));
2932
3563
  }
2933
3564
  };
2934
3565
  };
2935
3566
 
2936
3567
  // ../renderers/src/CollectionRenderer/CollectionRenderer.tsx
2937
3568
  import { useIntl as useIntl6 } from "react-intl";
2938
- import { Fragment as Fragment3, jsx as jsx41, jsxs as jsxs7 } from "react/jsx-runtime";
3569
+ import { Fragment as Fragment3, jsx as jsx43, jsxs as jsxs8 } from "react/jsx-runtime";
2939
3570
  var CollectionRendererComponent = (props) => {
2940
3571
  const { status, Search: Search4, Filters, Results } = props;
2941
- return /* @__PURE__ */ jsxs7(Fragment3, { children: [
2942
- /* @__PURE__ */ jsx41(Search4, __spreadValues({}, props)),
2943
- /* @__PURE__ */ jsx41(Filters, __spreadValues({}, props)),
2944
- status.type === "error" && status.reason === "search" ? /* @__PURE__ */ jsx41(SearchError, { retry: status.retry }) : /* @__PURE__ */ jsx41(Results, __spreadValues({}, props))
3572
+ return /* @__PURE__ */ jsxs8(Fragment3, { children: [
3573
+ /* @__PURE__ */ jsx43(Search4, __spreadValues({}, props)),
3574
+ /* @__PURE__ */ jsx43(Filters, __spreadValues({}, props)),
3575
+ status.type === "error" && status.reason === "search" ? /* @__PURE__ */ jsx43(SearchError, { retry: status.retry }) : /* @__PURE__ */ jsx43(Results, __spreadValues({}, props))
2945
3576
  ] });
2946
3577
  };
2947
3578
  var SearchError = ({ retry }) => {
2948
3579
  const { formatMessage } = useIntl6();
2949
- return /* @__PURE__ */ jsxs7(InlinePrompt, { width: "full", sentiment: "negative", children: [
3580
+ return /* @__PURE__ */ jsxs8(InlinePrompt, { width: "full", sentiment: "negative", children: [
2950
3581
  formatMessage(generic_error_messages_default.genericError),
2951
3582
  "\xA0",
2952
- /* @__PURE__ */ jsx41(DSLink, { onClick: retry, children: formatMessage(generic_error_messages_default.retry) })
3583
+ /* @__PURE__ */ jsx43(DSLink, { onClick: retry, children: formatMessage(generic_error_messages_default.retry) })
2953
3584
  ] });
2954
3585
  };
2955
3586
  var CollectionRenderer = createCollectionRenderer(() => true);
2956
3587
  var CollectionRenderer_default = CollectionRenderer;
2957
3588
 
2958
3589
  // ../renderers/src/ColumnsRenderer.tsx
2959
- var import_classnames8 = __toESM(require_classnames());
3590
+ var import_classnames10 = __toESM(require_classnames());
2960
3591
 
2961
3592
  // ../renderers/src/utils/useIsCollapsed.ts
2962
3593
  import { useEffect as useEffect8, useState as useState8 } from "react";
@@ -2979,7 +3610,7 @@ var useIsCollapsed = () => {
2979
3610
  };
2980
3611
 
2981
3612
  // ../renderers/src/ColumnsRenderer.tsx
2982
- import { jsx as jsx42, jsxs as jsxs8 } from "react/jsx-runtime";
3613
+ import { jsx as jsx44, jsxs as jsxs9 } from "react/jsx-runtime";
2983
3614
  var RIGHT_FIRST_STACKING = "right-first-stacking";
2984
3615
  var ColumnsRenderer = {
2985
3616
  canRenderType: "columns",
@@ -2990,12 +3621,12 @@ function ColumnsRendererComponent(props) {
2990
3621
  const { bias, margin, startChildren, endChildren, tags } = props;
2991
3622
  const isCollapsed = useIsCollapsed();
2992
3623
  const reverse = isCollapsed && ((_a = tags == null ? void 0 : tags.includes(RIGHT_FIRST_STACKING)) != null ? _a : false);
2993
- const startColumn = /* @__PURE__ */ jsx42("div", { className: "df-columns-renderer-column", children: startChildren });
2994
- const endColumn = /* @__PURE__ */ jsx42("div", { className: "df-columns-renderer-column", children: endChildren });
2995
- return /* @__PURE__ */ jsxs8(
3624
+ const startColumn = /* @__PURE__ */ jsx44("div", { className: "df-columns-renderer-column", children: startChildren });
3625
+ const endColumn = /* @__PURE__ */ jsx44("div", { className: "df-columns-renderer-column", children: endChildren });
3626
+ return /* @__PURE__ */ jsxs9(
2996
3627
  "div",
2997
3628
  {
2998
- className: (0, import_classnames8.default)(
3629
+ className: (0, import_classnames10.default)(
2999
3630
  "df-columns-renderer-container",
3000
3631
  getMargin(margin),
3001
3632
  {
@@ -3016,19 +3647,37 @@ var ColumnsRenderer_default = ColumnsRenderer;
3016
3647
  // ../renderers/src/components/VariableDateInput.tsx
3017
3648
  import { DateInput, DateLookup } from "@transferwise/components";
3018
3649
 
3650
+ // ../renderers/src/hooks/useAvailabilityRules.ts
3651
+ import { useState as useState9 } from "react";
3652
+ import { useIntl as useIntl7 } from "react-intl";
3653
+
3654
+ // ../renderers/src/messages/date-input.messages.ts
3655
+ import { defineMessages as defineMessages6 } from "react-intl";
3656
+ var date_input_messages_default = defineMessages6({
3657
+ unavailableDates: {
3658
+ id: "df.wise.DateInput.unavailableDates",
3659
+ defaultMessage: "Some dates are unavailable.",
3660
+ description: "General explanation shown below a calendar containing unavailable dates"
3661
+ }
3662
+ });
3663
+
3019
3664
  // ../renderers/src/validators/type-validators.ts
3020
3665
  var isNumber = (value) => typeof value === "number" && !Number.isNaN(value);
3021
3666
 
3022
3667
  // ../renderers/src/utils/value-utils.ts
3023
3668
  var dateStringToDateOrNull = (dateString) => {
3024
- if (!dateString) {
3669
+ const match = dateString ? /^(\d{4})-(\d{2})-(\d{2})$/.exec(dateString) : null;
3670
+ if (!match) {
3025
3671
  return null;
3026
3672
  }
3027
- const [year, month, date] = dateString.split("-").map((number) => Number.parseInt(number, 10));
3028
- if (!isNumber(year) || !isNumber(month) || !isNumber(date)) {
3673
+ const [, year, month, day] = match.map(Number);
3674
+ if (!isNumber(year) || !isNumber(month) || !isNumber(day)) {
3029
3675
  return null;
3030
3676
  }
3031
- return new Date(year, month - 1, date);
3677
+ const date = /* @__PURE__ */ new Date(0);
3678
+ date.setHours(0, 0, 0, 0);
3679
+ date.setFullYear(year, month - 1, day);
3680
+ return date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day ? date : null;
3032
3681
  };
3033
3682
  var dateToDateString = (date) => {
3034
3683
  const d = new Date(date);
@@ -3040,14 +3689,70 @@ var dateToDateString = (date) => {
3040
3689
  return [year, formattedMonth, formattedDay].join("-");
3041
3690
  };
3042
3691
 
3692
+ // ../renderers/src/hooks/useAvailabilityRules.ts
3693
+ var useAvailabilityRules = (availability) => {
3694
+ var _a, _b;
3695
+ const { formatMessage } = useIntl7();
3696
+ const [focusedDate, setFocusedDate] = useState9(null);
3697
+ const unavailableMessage = (_b = (_a = focusedDate ? getUnavailableDateReason(focusedDate, availability) : null) != null ? _a : availability == null ? void 0 : availability.message) != null ? _b : formatMessage(date_input_messages_default.unavailableDates);
3698
+ const onDateSelect = ({ date }) => {
3699
+ setFocusedDate(date);
3700
+ };
3701
+ return {
3702
+ disabledRules: mapAvailabilityToDisabledRules(availability, unavailableMessage),
3703
+ onDateSelect,
3704
+ resetFocusedDate: () => setFocusedDate(null)
3705
+ };
3706
+ };
3707
+ var mapAvailabilityToDisabledRules = (availability, reason) => {
3708
+ if (!(availability == null ? void 0 : availability.unavailable.length)) {
3709
+ return void 0;
3710
+ }
3711
+ const dates = availability.unavailable.flatMap((rule) => rule.type === "dates" ? rule.dates : []).map(dateStringToDateOrNull).filter(isDate);
3712
+ const weekdays = availability.unavailable.flatMap(
3713
+ (rule) => rule.type === "weekdays" ? rule.weekdays : []
3714
+ );
3715
+ const ranges = availability.unavailable.flatMap((rule) => {
3716
+ if (rule.type !== "range") {
3717
+ return [];
3718
+ }
3719
+ const start = dateStringToDateOrNull(rule.start);
3720
+ const end = dateStringToDateOrNull(rule.end);
3721
+ return start && end ? [{ start, end }] : [];
3722
+ });
3723
+ return __spreadValues(__spreadValues(__spreadValues({
3724
+ reason
3725
+ }, dates.length > 0 ? { dates } : {}), weekdays.length > 0 ? { weekdays } : {}), ranges.length > 0 ? { ranges } : {});
3726
+ };
3727
+ var getUnavailableDateReason = (date, availability) => {
3728
+ var _a, _b;
3729
+ const dateString = dateToDateString(date);
3730
+ const weekday = date.getDay();
3731
+ return (_b = (_a = availability == null ? void 0 : availability.unavailable.find((rule) => matchesDateRule(dateString, weekday, rule))) == null ? void 0 : _a.reason) != null ? _b : null;
3732
+ };
3733
+ var matchesDateRule = (date, weekday, rule) => {
3734
+ switch (rule.type) {
3735
+ case "dates":
3736
+ return rule.dates.includes(date);
3737
+ case "weekdays": {
3738
+ const weekdayName = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"][weekday];
3739
+ return rule.weekdays.some((ruleWeekday) => ruleWeekday === weekdayName);
3740
+ }
3741
+ case "range":
3742
+ return date >= rule.start && date <= rule.end;
3743
+ }
3744
+ };
3745
+ var isDate = (date) => date !== null;
3746
+
3043
3747
  // ../renderers/src/components/VariableDateInput.tsx
3044
- import { jsx as jsx43 } from "react/jsx-runtime";
3748
+ import { jsx as jsx45 } from "react/jsx-runtime";
3045
3749
  function VariableDateInput({
3046
3750
  control,
3047
3751
  inputProps
3048
3752
  }) {
3049
3753
  const {
3050
3754
  autoComplete,
3755
+ availability,
3051
3756
  minimumDate,
3052
3757
  maximumDate,
3053
3758
  placeholder,
@@ -3056,8 +3761,9 @@ function VariableDateInput({
3056
3761
  onChange,
3057
3762
  onFocus
3058
3763
  } = inputProps;
3764
+ const { disabledRules, onDateSelect, resetFocusedDate } = useAvailabilityRules(availability);
3059
3765
  if (control === "date-lookup") {
3060
- return /* @__PURE__ */ jsx43(
3766
+ return /* @__PURE__ */ jsx45(
3061
3767
  DateLookup,
3062
3768
  {
3063
3769
  value: dateStringToDateOrNull(inputProps.value),
@@ -3065,15 +3771,20 @@ function VariableDateInput({
3065
3771
  max: dateStringToDateOrNull(maximumDate),
3066
3772
  placeholder,
3067
3773
  disabled,
3774
+ disabledRules,
3068
3775
  onChange: (date) => {
3069
3776
  onChange(date !== null ? dateToDateString(date) : null);
3070
3777
  },
3778
+ onDateSelect,
3071
3779
  onBlur,
3072
- onFocus
3780
+ onFocus: () => {
3781
+ resetFocusedDate();
3782
+ onFocus();
3783
+ }
3073
3784
  }
3074
3785
  );
3075
3786
  }
3076
- return /* @__PURE__ */ jsx43(
3787
+ return /* @__PURE__ */ jsx45(
3077
3788
  DateInput,
3078
3789
  __spreadProps(__spreadValues({}, inputProps), {
3079
3790
  dayAutoComplete: getAutocompleteString(autoComplete, "day"),
@@ -3090,7 +3801,7 @@ var getAutocompleteString = (value, suffix) => {
3090
3801
  var VariableDateInput_default = VariableDateInput;
3091
3802
 
3092
3803
  // ../renderers/src/DateInputRenderer.tsx
3093
- import { jsx as jsx44 } from "react/jsx-runtime";
3804
+ import { jsx as jsx46 } from "react/jsx-runtime";
3094
3805
  var DateInputRenderer = {
3095
3806
  canRenderType: "input-date",
3096
3807
  render: (props) => {
@@ -3115,7 +3826,7 @@ var DateInputRenderer = {
3115
3826
  ]);
3116
3827
  const value = initialValue != null ? initialValue : "";
3117
3828
  const inputProps = __spreadProps(__spreadValues({}, rest), { value, id });
3118
- return /* @__PURE__ */ jsx44(
3829
+ return /* @__PURE__ */ jsx46(
3119
3830
  FieldInput_default,
3120
3831
  {
3121
3832
  id,
@@ -3128,7 +3839,7 @@ var DateInputRenderer = {
3128
3839
  features: props.features,
3129
3840
  control,
3130
3841
  tags: props.tags,
3131
- children: /* @__PURE__ */ jsx44(VariableDateInput_default, { control, inputProps })
3842
+ children: /* @__PURE__ */ jsx46(VariableDateInput_default, { control, inputProps })
3132
3843
  }
3133
3844
  );
3134
3845
  }
@@ -3140,12 +3851,12 @@ import { ListItem as ListItem7 } from "@transferwise/components";
3140
3851
 
3141
3852
  // ../renderers/src/DecisionRenderer/DecisionWrapper.tsx
3142
3853
  import { Header as Header3, SearchInput } from "@transferwise/components";
3143
- import { useState as useState9 } from "react";
3144
- import { useIntl as useIntl8 } from "react-intl";
3854
+ import { useState as useState10 } from "react";
3855
+ import { useIntl as useIntl9 } from "react-intl";
3145
3856
 
3146
3857
  // ../renderers/src/messages/filter.messages.ts
3147
- import { defineMessages as defineMessages6 } from "react-intl";
3148
- var filter_messages_default = defineMessages6({
3858
+ import { defineMessages as defineMessages7 } from "react-intl";
3859
+ var filter_messages_default = defineMessages7({
3149
3860
  placeholder: {
3150
3861
  id: "df.wise.filter.placeholder",
3151
3862
  defaultMessage: "Start typing to search",
@@ -3212,11 +3923,11 @@ var normalizeAndRemoveAccents = (text) => text.trim().toLowerCase().normalize("N
3212
3923
 
3213
3924
  // ../renderers/src/DecisionRenderer/GroupedDecisionList.tsx
3214
3925
  import { Header as Header2, Section } from "@transferwise/components";
3215
- import { useIntl as useIntl7 } from "react-intl";
3926
+ import { useIntl as useIntl8 } from "react-intl";
3216
3927
 
3217
3928
  // ../renderers/src/messages/group.messages.ts
3218
- import { defineMessages as defineMessages7 } from "react-intl";
3219
- var group_messages_default = defineMessages7({
3929
+ import { defineMessages as defineMessages8 } from "react-intl";
3930
+ var group_messages_default = defineMessages8({
3220
3931
  all: {
3221
3932
  id: "df.wise.group.all",
3222
3933
  defaultMessage: "All",
@@ -3250,18 +3961,18 @@ var getGroupsFromTags = (knownTags, items) => {
3250
3961
  };
3251
3962
 
3252
3963
  // ../renderers/src/DecisionRenderer/GroupedDecisionList.tsx
3253
- import { Fragment as Fragment4, jsx as jsx45, jsxs as jsxs9 } from "react/jsx-runtime";
3964
+ import { Fragment as Fragment4, jsx as jsx47, jsxs as jsxs10 } from "react/jsx-runtime";
3254
3965
  var groupingTags = Object.keys(group_messages_default).filter((key) => key !== "all");
3255
3966
  var isGroupedDecision = (options) => {
3256
3967
  return getGroupsFromTags(groupingTags, options).length > 0;
3257
3968
  };
3258
3969
  var GroupedDecisionList = (_a) => {
3259
3970
  var _b = _a, { renderDecisionList: renderDecisionList2 } = _b, rest = __objRest(_b, ["renderDecisionList"]);
3260
- const { formatMessage } = useIntl7();
3971
+ const { formatMessage } = useIntl8();
3261
3972
  const { options } = rest;
3262
3973
  const itemsByTag = [...getGroupsFromTags(groupingTags, options), { tag: "all", items: options }];
3263
- return /* @__PURE__ */ jsx45(Fragment4, { children: itemsByTag.map(({ tag, items }) => /* @__PURE__ */ jsxs9(Section, { children: [
3264
- /* @__PURE__ */ jsx45(
3974
+ return /* @__PURE__ */ jsx47(Fragment4, { children: itemsByTag.map(({ tag, items }) => /* @__PURE__ */ jsxs10(Section, { children: [
3975
+ /* @__PURE__ */ jsx47(
3265
3976
  Header2,
3266
3977
  {
3267
3978
  as: "h2",
@@ -3273,27 +3984,27 @@ var GroupedDecisionList = (_a) => {
3273
3984
  };
3274
3985
 
3275
3986
  // ../renderers/src/DecisionRenderer/DecisionWrapper.tsx
3276
- var import_classnames9 = __toESM(require_classnames());
3277
- import { Fragment as Fragment5, jsx as jsx46, jsxs as jsxs10 } from "react/jsx-runtime";
3987
+ var import_classnames11 = __toESM(require_classnames());
3988
+ import { Fragment as Fragment5, jsx as jsx48, jsxs as jsxs11 } from "react/jsx-runtime";
3278
3989
  var DecisionWrapper = (props) => {
3279
3990
  const { margin, control, title, tags } = props;
3280
- return /* @__PURE__ */ jsxs10("div", { className: (0, import_classnames9.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
3281
- title && /* @__PURE__ */ jsx46(Header3, { as: "h2", title }),
3282
- control === "filtered" ? /* @__PURE__ */ jsx46(FilteredDecisionList, __spreadValues({}, props)) : /* @__PURE__ */ jsx46(UnfilteredDecisionList, __spreadValues({}, props))
3991
+ return /* @__PURE__ */ jsxs11("div", { className: (0, import_classnames11.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
3992
+ title && /* @__PURE__ */ jsx48(Header3, { as: "h2", title }),
3993
+ control === "filtered" ? /* @__PURE__ */ jsx48(FilteredDecisionList, __spreadValues({}, props)) : /* @__PURE__ */ jsx48(UnfilteredDecisionList, __spreadValues({}, props))
3283
3994
  ] });
3284
3995
  };
3285
3996
  var UnfilteredDecisionList = (_a) => {
3286
3997
  var _b = _a, { renderDecisionList: renderDecisionList2 } = _b, rest = __objRest(_b, ["renderDecisionList"]);
3287
- return isGroupedDecision(rest.options) ? /* @__PURE__ */ jsx46(GroupedDecisionList, __spreadProps(__spreadValues({}, rest), { renderDecisionList: renderDecisionList2 })) : renderDecisionList2(rest);
3998
+ return isGroupedDecision(rest.options) ? /* @__PURE__ */ jsx48(GroupedDecisionList, __spreadProps(__spreadValues({}, rest), { renderDecisionList: renderDecisionList2 })) : renderDecisionList2(rest);
3288
3999
  };
3289
4000
  var FilteredDecisionList = (props) => {
3290
- const { formatMessage } = useIntl8();
3291
- const [query, setQuery] = useState9("");
4001
+ const { formatMessage } = useIntl9();
4002
+ const [query, setQuery] = useState10("");
3292
4003
  const { control, options, renderDecisionList: renderDecisionList2 } = props;
3293
4004
  const filteredOptions = (query == null ? void 0 : query.length) > 0 ? filterAndSortItems(options, query) : options;
3294
4005
  const isGrouped = isGroupedDecision(options);
3295
- return /* @__PURE__ */ jsxs10(Fragment5, { children: [
3296
- /* @__PURE__ */ jsx46(
4006
+ return /* @__PURE__ */ jsxs11(Fragment5, { children: [
4007
+ /* @__PURE__ */ jsx48(
3297
4008
  SearchInput,
3298
4009
  {
3299
4010
  placeholder: formatMessage(filter_messages_default.placeholder),
@@ -3305,25 +4016,25 @@ var FilteredDecisionList = (props) => {
3305
4016
  }
3306
4017
  }
3307
4018
  ),
3308
- isGrouped && query.length === 0 ? /* @__PURE__ */ jsx46(GroupedDecisionList, __spreadValues({}, props)) : /* @__PURE__ */ jsxs10(Fragment5, { children: [
3309
- query.length > 0 && /* @__PURE__ */ jsx46(Header3, { as: "h2", title: formatMessage(filter_messages_default.results), className: "m-t-4" }),
4019
+ isGrouped && query.length === 0 ? /* @__PURE__ */ jsx48(GroupedDecisionList, __spreadValues({}, props)) : /* @__PURE__ */ jsxs11(Fragment5, { children: [
4020
+ query.length > 0 && /* @__PURE__ */ jsx48(Header3, { as: "h2", title: formatMessage(filter_messages_default.results), className: "m-t-4" }),
3310
4021
  filteredOptions.length > 0 ? renderDecisionList2({
3311
4022
  control,
3312
4023
  className: query.length === 0 ? "m-t-3" : "",
3313
4024
  options: filteredOptions
3314
- }) : /* @__PURE__ */ jsx46("p", { children: formatMessage(filter_messages_default.noResults) })
4025
+ }) : /* @__PURE__ */ jsx48("p", { children: formatMessage(filter_messages_default.noResults) })
3315
4026
  ] })
3316
4027
  ] });
3317
4028
  };
3318
4029
 
3319
4030
  // ../renderers/src/DecisionRenderer/DecisionRenderer.tsx
3320
- import { Fragment as Fragment6, jsx as jsx47 } from "react/jsx-runtime";
4031
+ import { Fragment as Fragment6, jsx as jsx49 } from "react/jsx-runtime";
3321
4032
  var DecisionRenderer = {
3322
4033
  canRenderType: "decision",
3323
- render: (props) => /* @__PURE__ */ jsx47(DecisionWrapper, __spreadProps(__spreadValues({}, props), { renderDecisionList }))
4034
+ render: (props) => /* @__PURE__ */ jsx49(DecisionWrapper, __spreadProps(__spreadValues({}, props), { renderDecisionList }))
3324
4035
  };
3325
4036
  var renderDecisionList = ({ options, control }) => {
3326
- return /* @__PURE__ */ jsx47(Fragment6, { children: options.map((_a) => {
4037
+ return /* @__PURE__ */ jsx49(Fragment6, { children: options.map((_a) => {
3327
4038
  var _b = _a, { onClick } = _b, rest = __objRest(_b, ["onClick"]);
3328
4039
  const {
3329
4040
  description,
@@ -3336,7 +4047,7 @@ var renderDecisionList = ({ options, control }) => {
3336
4047
  supportingValues,
3337
4048
  tags
3338
4049
  } = rest;
3339
- return /* @__PURE__ */ jsx47(
4050
+ return /* @__PURE__ */ jsx49(
3340
4051
  ListItem7,
3341
4052
  {
3342
4053
  title: itemTitle,
@@ -3348,7 +4059,7 @@ var renderDecisionList = ({ options, control }) => {
3348
4059
  media: getMedia(media, shouldUseAvatar(control, tags)),
3349
4060
  prompt: getInlineAlert(inlineAlert),
3350
4061
  additionalInfo: additionalText ? getAdditionalInfo({ text: additionalText }) : void 0,
3351
- control: /* @__PURE__ */ jsx47(ListItem7.Navigation, __spreadValues({}, getAnchorProps()))
4062
+ control: /* @__PURE__ */ jsx49(ListItem7.Navigation, __spreadValues({}, getAnchorProps()))
3352
4063
  },
3353
4064
  JSON.stringify(rest)
3354
4065
  );
@@ -3357,9 +4068,9 @@ var renderDecisionList = ({ options, control }) => {
3357
4068
  var DecisionRenderer_default = DecisionRenderer;
3358
4069
 
3359
4070
  // ../renderers/src/DividerRenderer.tsx
3360
- var import_classnames10 = __toESM(require_classnames());
4071
+ var import_classnames12 = __toESM(require_classnames());
3361
4072
  import { Divider } from "@transferwise/components";
3362
- import { jsx as jsx48 } from "react/jsx-runtime";
4073
+ import { jsx as jsx50 } from "react/jsx-runtime";
3363
4074
  var mapControlToLevel = (control) => {
3364
4075
  switch (control) {
3365
4076
  case "section":
@@ -3372,10 +4083,10 @@ var mapControlToLevel = (control) => {
3372
4083
  };
3373
4084
  var DividerRenderer = {
3374
4085
  canRenderType: "divider",
3375
- render: ({ margin, control, tags }) => /* @__PURE__ */ jsx48(
4086
+ render: ({ margin, control, tags }) => /* @__PURE__ */ jsx50(
3376
4087
  Divider,
3377
4088
  {
3378
- className: (0, import_classnames10.default)(
4089
+ className: (0, import_classnames12.default)(
3379
4090
  "m-t-0",
3380
4091
  "d-block",
3381
4092
  getMargin(margin),
@@ -3391,8 +4102,8 @@ var DividerRenderer_default = DividerRenderer;
3391
4102
  import { Button as Button5, Markdown as Markdown3, Modal } from "@transferwise/components";
3392
4103
 
3393
4104
  // ../renderers/src/messages/external-confirmation.messages.ts
3394
- import { defineMessages as defineMessages8 } from "react-intl";
3395
- var external_confirmation_messages_default = defineMessages8({
4105
+ import { defineMessages as defineMessages9 } from "react-intl";
4106
+ var external_confirmation_messages_default = defineMessages9({
3396
4107
  title: {
3397
4108
  id: "df.wise.ExternalConfirmation.title",
3398
4109
  defaultMessage: "Please confirm",
@@ -3416,9 +4127,9 @@ var external_confirmation_messages_default = defineMessages8({
3416
4127
  });
3417
4128
 
3418
4129
  // ../renderers/src/ExternalConfirmationRenderer.tsx
3419
- import { useIntl as useIntl9 } from "react-intl";
4130
+ import { useIntl as useIntl10 } from "react-intl";
3420
4131
  import { useEffect as useEffect9 } from "react";
3421
- import { Fragment as Fragment7, jsx as jsx49, jsxs as jsxs11 } from "react/jsx-runtime";
4132
+ import { Fragment as Fragment7, jsx as jsx51, jsxs as jsxs12 } from "react/jsx-runtime";
3422
4133
  var ExternalConfirmationRenderer = {
3423
4134
  canRenderType: "external-confirmation",
3424
4135
  render: ExternalConfirmationRendererComponent
@@ -3431,19 +4142,19 @@ function ExternalConfirmationRendererComponent({
3431
4142
  control,
3432
4143
  tags
3433
4144
  }) {
3434
- const { formatMessage } = useIntl9();
4145
+ const { formatMessage } = useIntl10();
3435
4146
  useEffect9(() => {
3436
4147
  open();
3437
4148
  }, []);
3438
- return /* @__PURE__ */ jsx49(
4149
+ return /* @__PURE__ */ jsx51(
3439
4150
  Modal,
3440
4151
  {
3441
4152
  open: visible,
3442
4153
  title: formatMessage(external_confirmation_messages_default.title),
3443
- body: /* @__PURE__ */ jsxs11(Fragment7, { children: [
3444
- /* @__PURE__ */ jsx49(Markdown3, { config: { link: { target: "_blank" } }, className: "text-xs-center m-b-5", children: formatMessage(external_confirmation_messages_default.description, { origin: getOrigin(url) }) }),
3445
- /* @__PURE__ */ jsx49("div", { className: "df-box-renderer-fixed-width", children: /* @__PURE__ */ jsxs11("div", { className: "df-box-renderer-width-lg", children: [
3446
- /* @__PURE__ */ jsx49(
4154
+ body: /* @__PURE__ */ jsxs12(Fragment7, { children: [
4155
+ /* @__PURE__ */ jsx51(Markdown3, { config: { link: { target: "_blank" } }, className: "text-xs-center m-b-5", children: formatMessage(external_confirmation_messages_default.description, { origin: getOrigin(url) }) }),
4156
+ /* @__PURE__ */ jsx51("div", { className: "df-box-renderer-fixed-width", children: /* @__PURE__ */ jsxs12("div", { className: "df-box-renderer-width-lg", children: [
4157
+ /* @__PURE__ */ jsx51(
3447
4158
  Button5,
3448
4159
  {
3449
4160
  v2: true,
@@ -3457,7 +4168,7 @@ function ExternalConfirmationRendererComponent({
3457
4168
  children: formatMessage(external_confirmation_messages_default.open)
3458
4169
  }
3459
4170
  ),
3460
- /* @__PURE__ */ jsx49(Button5, { v2: true, block: true, className: "m-b-2", priority: "tertiary", size: "md", onClick: onCancel, children: formatMessage(external_confirmation_messages_default.cancel) })
4171
+ /* @__PURE__ */ jsx51(Button5, { v2: true, block: true, className: "m-b-2", priority: "tertiary", size: "md", onClick: onCancel, children: formatMessage(external_confirmation_messages_default.cancel) })
3461
4172
  ] }) })
3462
4173
  ] }),
3463
4174
  className: controlAndTagsToCSSClass({ control, tags }),
@@ -3475,51 +4186,51 @@ function getOrigin(url) {
3475
4186
  var ExternalConfirmationRenderer_default = ExternalConfirmationRenderer;
3476
4187
 
3477
4188
  // ../renderers/src/FormRenderer.tsx
3478
- var import_classnames11 = __toESM(require_classnames());
3479
- import { jsx as jsx50 } from "react/jsx-runtime";
4189
+ var import_classnames13 = __toESM(require_classnames());
4190
+ import { jsx as jsx52 } from "react/jsx-runtime";
3480
4191
  var FormRenderer = {
3481
4192
  canRenderType: "form",
3482
- render: ({ children, margin, control, tags }) => /* @__PURE__ */ jsx50("div", { className: (0, import_classnames11.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children })
4193
+ render: ({ children, margin, control, tags }) => /* @__PURE__ */ jsx52("div", { className: (0, import_classnames13.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children })
3483
4194
  };
3484
4195
  var FormRenderer_default = FormRenderer;
3485
4196
 
3486
4197
  // ../renderers/src/FormSectionRenderer.tsx
3487
4198
  import { Header as Header4 } from "@transferwise/components";
3488
- import { jsx as jsx51, jsxs as jsxs12 } from "react/jsx-runtime";
4199
+ import { jsx as jsx53, jsxs as jsxs13 } from "react/jsx-runtime";
3489
4200
  var FormSectionRenderer = {
3490
4201
  canRenderType: "form-section",
3491
- render: ({ title, description, children, control, tags }) => /* @__PURE__ */ jsxs12("fieldset", { className: controlAndTagsToCSSClass({ control, tags }), children: [
3492
- title && /* @__PURE__ */ jsx51(
4202
+ render: ({ title, description, children, control, tags }) => /* @__PURE__ */ jsxs13("fieldset", { className: controlAndTagsToCSSClass({ control, tags }), children: [
4203
+ title && /* @__PURE__ */ jsx53(
3493
4204
  Header4,
3494
4205
  {
3495
4206
  as: "h2",
3496
4207
  title
3497
4208
  }
3498
4209
  ),
3499
- description && /* @__PURE__ */ jsx51("p", { children: description }),
4210
+ description && /* @__PURE__ */ jsx53("p", { children: description }),
3500
4211
  children
3501
4212
  ] })
3502
4213
  };
3503
4214
  var FormSectionRenderer_default = FormSectionRenderer;
3504
4215
 
3505
4216
  // ../renderers/src/HeadingRenderer.tsx
3506
- var import_classnames12 = __toESM(require_classnames());
4217
+ var import_classnames14 = __toESM(require_classnames());
3507
4218
  import { Display, Title } from "@transferwise/components";
3508
- import { jsx as jsx52 } from "react/jsx-runtime";
4219
+ import { jsx as jsx54 } from "react/jsx-runtime";
3509
4220
  var HeadingRenderer = {
3510
4221
  canRenderType: "heading",
3511
4222
  render: Heading
3512
4223
  };
3513
4224
  function Heading(props) {
3514
4225
  const { text, size, align, margin, control } = props;
3515
- const className = (0, import_classnames12.default)(
4226
+ const className = (0, import_classnames14.default)(
3516
4227
  getTextAlignmentAndMargin({ align, margin }),
3517
4228
  controlAndTagsToCSSClass(props)
3518
4229
  );
3519
- return control === "display" ? /* @__PURE__ */ jsx52(DisplayHeading, { size, text, className }) : /* @__PURE__ */ jsx52(StandardHeading, { size, text, className });
4230
+ return control === "display" ? /* @__PURE__ */ jsx54(DisplayHeading, { size, text, className }) : /* @__PURE__ */ jsx54(StandardHeading, { size, text, className });
3520
4231
  }
3521
4232
  function DisplayHeading({ size, text, className }) {
3522
- return /* @__PURE__ */ jsx52(Display, { type: getDisplayType(size), className, children: text });
4233
+ return /* @__PURE__ */ jsx54(Display, { type: getDisplayType(size), className, children: text });
3523
4234
  }
3524
4235
  var getDisplayType = (size) => {
3525
4236
  switch (size) {
@@ -3535,7 +4246,7 @@ var getDisplayType = (size) => {
3535
4246
  }
3536
4247
  };
3537
4248
  function StandardHeading({ size, text, className }) {
3538
- return /* @__PURE__ */ jsx52(Title, { type: getTitleTypeBySize(size), className, children: text });
4249
+ return /* @__PURE__ */ jsx54(Title, { type: getTitleTypeBySize(size), className, children: text });
3539
4250
  }
3540
4251
  var getTitleTypeBySize = (size) => {
3541
4252
  var _a;
@@ -3551,9 +4262,9 @@ var getTitleTypeBySize = (size) => {
3551
4262
  var HeadingRenderer_default = HeadingRenderer;
3552
4263
 
3553
4264
  // ../renderers/src/ImageRenderer/UrlImage.tsx
3554
- var import_classnames13 = __toESM(require_classnames());
4265
+ var import_classnames15 = __toESM(require_classnames());
3555
4266
  import { Image } from "@transferwise/components";
3556
- import { useEffect as useEffect10, useState as useState10 } from "react";
4267
+ import { useEffect as useEffect10, useState as useState11 } from "react";
3557
4268
 
3558
4269
  // ../renderers/src/utils/api-utils.ts
3559
4270
  function isRelativePath(url = "") {
@@ -3563,7 +4274,7 @@ function isRelativePath(url = "") {
3563
4274
  }
3564
4275
 
3565
4276
  // ../renderers/src/ImageRenderer/UrlImage.tsx
3566
- import { jsx as jsx53 } from "react/jsx-runtime";
4277
+ import { jsx as jsx55 } from "react/jsx-runtime";
3567
4278
  function UrlImage({
3568
4279
  accessibilityDescription,
3569
4280
  align,
@@ -3574,23 +4285,23 @@ function UrlImage({
3574
4285
  uri,
3575
4286
  httpClient
3576
4287
  }) {
3577
- const [imageSource, setImageSource] = useState10("");
4288
+ const [imageSource, setImageSource] = useState11("");
3578
4289
  useEffect10(() => {
3579
4290
  if (!uri.startsWith("urn:")) {
3580
4291
  void getImageSource(httpClient, uri).then(setImageSource);
3581
4292
  }
3582
4293
  }, [uri, httpClient]);
3583
- return /* @__PURE__ */ jsx53(
4294
+ return /* @__PURE__ */ jsx55(
3584
4295
  "div",
3585
4296
  {
3586
- className: (0, import_classnames13.default)(
4297
+ className: (0, import_classnames15.default)(
3587
4298
  "df-image",
3588
4299
  align,
3589
4300
  size || "md",
3590
4301
  getMargin(margin),
3591
4302
  controlAndTagsToCSSClass({ control, tags })
3592
4303
  ),
3593
- children: /* @__PURE__ */ jsx53(
4304
+ children: /* @__PURE__ */ jsx55(
3594
4305
  Image,
3595
4306
  {
3596
4307
  className: "df-reserve-space",
@@ -3636,19 +4347,19 @@ var getImageSource = async (httpClient, imageUrl) => {
3636
4347
  };
3637
4348
 
3638
4349
  // ../renderers/src/ImageRenderer/ImageRenderer.tsx
3639
- import { jsx as jsx54 } from "react/jsx-runtime";
4350
+ import { jsx as jsx56 } from "react/jsx-runtime";
3640
4351
  var ImageRenderer = {
3641
4352
  canRenderType: "image",
3642
- render: (props) => isUrnImage(props.uri) ? /* @__PURE__ */ jsx54(UrnImage, __spreadValues({}, props)) : /* @__PURE__ */ jsx54(UrlImage, __spreadValues({}, props))
4353
+ render: (props) => isUrnImage(props.uri) ? /* @__PURE__ */ jsx56(UrnImage, __spreadValues({}, props)) : /* @__PURE__ */ jsx56(UrlImage, __spreadValues({}, props))
3643
4354
  };
3644
4355
 
3645
4356
  // ../renderers/src/ImageRenderer/index.tsx
3646
4357
  var ImageRenderer_default = ImageRenderer;
3647
4358
 
3648
4359
  // ../renderers/src/InstructionsRenderer.tsx
3649
- var import_classnames14 = __toESM(require_classnames());
4360
+ var import_classnames16 = __toESM(require_classnames());
3650
4361
  import { Header as Header5, InstructionsList } from "@transferwise/components";
3651
- import { jsx as jsx55, jsxs as jsxs13 } from "react/jsx-runtime";
4362
+ import { jsx as jsx57, jsxs as jsxs14 } from "react/jsx-runtime";
3652
4363
  var doContext = ["positive", "neutral", "proposition"];
3653
4364
  var dontContext = ["warning", "negative"];
3654
4365
  var InstructionsRenderer = {
@@ -3656,9 +4367,9 @@ var InstructionsRenderer = {
3656
4367
  render: ({ items, margin, title, control, tags }) => {
3657
4368
  const dos = items.filter((item) => doContext.includes(item.context)).map(({ text }) => text);
3658
4369
  const donts = items.filter((item) => dontContext.includes(item.context)).map(({ text }) => text);
3659
- return /* @__PURE__ */ jsxs13("div", { className: (0, import_classnames14.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
3660
- title ? /* @__PURE__ */ jsx55(Header5, { title }) : null,
3661
- /* @__PURE__ */ jsx55(InstructionsList, { dos, donts })
4370
+ return /* @__PURE__ */ jsxs14("div", { className: (0, import_classnames16.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
4371
+ title ? /* @__PURE__ */ jsx57(Header5, { title }) : null,
4372
+ /* @__PURE__ */ jsx57(InstructionsList, { dos, donts })
3662
4373
  ] });
3663
4374
  }
3664
4375
  };
@@ -3690,7 +4401,7 @@ function pick(obj, ...keys) {
3690
4401
  }
3691
4402
 
3692
4403
  // ../renderers/src/IntegerInputRenderer.tsx
3693
- import { jsx as jsx56 } from "react/jsx-runtime";
4404
+ import { jsx as jsx58 } from "react/jsx-runtime";
3694
4405
  var IntegerInputRenderer = {
3695
4406
  canRenderType: "input-integer",
3696
4407
  render: (props) => {
@@ -3705,7 +4416,7 @@ var IntegerInputRenderer = {
3705
4416
  "maximum",
3706
4417
  "minimum"
3707
4418
  );
3708
- return /* @__PURE__ */ jsx56(
4419
+ return /* @__PURE__ */ jsx58(
3709
4420
  FieldInput_default,
3710
4421
  {
3711
4422
  id,
@@ -3718,7 +4429,7 @@ var IntegerInputRenderer = {
3718
4429
  features: props.features,
3719
4430
  control: props.control,
3720
4431
  tags: props.tags,
3721
- children: /* @__PURE__ */ jsx56(InputGroup2, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx56(
4432
+ children: /* @__PURE__ */ jsx58(InputGroup2, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx58(
3722
4433
  Input2,
3723
4434
  __spreadValues({
3724
4435
  id,
@@ -3741,13 +4452,13 @@ var IntegerInputRenderer = {
3741
4452
  var IntegerInputRenderer_default = IntegerInputRenderer;
3742
4453
 
3743
4454
  // ../renderers/src/ListRenderer.tsx
3744
- var import_classnames15 = __toESM(require_classnames());
4455
+ var import_classnames17 = __toESM(require_classnames());
3745
4456
  import { ListItem as ListItem8 } from "@transferwise/components";
3746
4457
 
3747
4458
  // ../renderers/src/components/Header.tsx
3748
4459
  import { Header as DSHeader } from "@transferwise/components";
3749
- import { jsx as jsx57 } from "react/jsx-runtime";
3750
- var Header = ({ title, callToAction }) => (title || callToAction) && /* @__PURE__ */ jsx57(DSHeader, { title: title != null ? title : "", action: getHeaderAction(callToAction) });
4460
+ import { jsx as jsx59 } from "react/jsx-runtime";
4461
+ var Header = ({ title, callToAction }) => (title || callToAction) && /* @__PURE__ */ jsx59(DSHeader, { title: title != null ? title : "", action: getHeaderAction(callToAction) });
3751
4462
  var getHeaderAction = (callToAction) => {
3752
4463
  if (!callToAction) {
3753
4464
  return void 0;
@@ -3759,11 +4470,11 @@ var getHeaderAction = (callToAction) => {
3759
4470
  };
3760
4471
 
3761
4472
  // ../renderers/src/ListRenderer.tsx
3762
- import { jsx as jsx58, jsxs as jsxs14 } from "react/jsx-runtime";
4473
+ import { jsx as jsx60, jsxs as jsxs15 } from "react/jsx-runtime";
3763
4474
  var ListRenderer = {
3764
4475
  canRenderType: "list",
3765
- render: ({ callToAction, control, margin, items, tags, title }) => /* @__PURE__ */ jsxs14("div", { className: (0, import_classnames15.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
3766
- /* @__PURE__ */ jsx58(Header, { title, callToAction }),
4476
+ render: ({ callToAction, control, margin, items, tags, title }) => /* @__PURE__ */ jsxs15("div", { className: (0, import_classnames17.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
4477
+ /* @__PURE__ */ jsx60(Header, { title, callToAction }),
3767
4478
  items.map((item) => {
3768
4479
  var _a, _b;
3769
4480
  const {
@@ -3780,7 +4491,7 @@ var ListRenderer = {
3780
4491
  ctaSecondary: (_a = itemTags == null ? void 0 : itemTags.includes("cta-secondary")) != null ? _a : false,
3781
4492
  fullyInteractive: (_b = (tags == null ? void 0 : tags.includes("fully-interactive")) && (additionalInfo == null ? void 0 : additionalInfo.onClick) == null) != null ? _b : false
3782
4493
  };
3783
- return /* @__PURE__ */ jsx58(
4494
+ return /* @__PURE__ */ jsx60(
3784
4495
  ListItem8,
3785
4496
  {
3786
4497
  title: itemTitle,
@@ -3800,17 +4511,17 @@ var ListRenderer = {
3800
4511
  var ListRenderer_default = ListRenderer;
3801
4512
 
3802
4513
  // ../renderers/src/LoadingIndicatorRenderer.tsx
3803
- var import_classnames16 = __toESM(require_classnames());
4514
+ var import_classnames18 = __toESM(require_classnames());
3804
4515
  import { Loader } from "@transferwise/components";
3805
- import { jsx as jsx59 } from "react/jsx-runtime";
4516
+ import { jsx as jsx61 } from "react/jsx-runtime";
3806
4517
  var LoadingIndicatorRenderer = {
3807
4518
  canRenderType: "loading-indicator",
3808
- render: ({ size, margin, control, tags }) => /* @__PURE__ */ jsx59(
4519
+ render: ({ size, margin, control, tags }) => /* @__PURE__ */ jsx61(
3809
4520
  Loader,
3810
4521
  {
3811
4522
  size,
3812
4523
  classNames: {
3813
- "tw-loader": (0, import_classnames16.default)(
4524
+ "tw-loader": (0, import_classnames18.default)(
3814
4525
  "tw-loader",
3815
4526
  "m-x-auto",
3816
4527
  getMargin(margin),
@@ -3824,24 +4535,24 @@ var LoadingIndicatorRenderer = {
3824
4535
  var LoadingIndicatorRenderer_default = LoadingIndicatorRenderer;
3825
4536
 
3826
4537
  // ../renderers/src/MarkdownRenderer.tsx
3827
- var import_classnames17 = __toESM(require_classnames());
4538
+ var import_classnames19 = __toESM(require_classnames());
3828
4539
  import { Markdown as Markdown4 } from "@transferwise/components";
3829
- import { jsx as jsx60 } from "react/jsx-runtime";
4540
+ import { jsx as jsx62 } from "react/jsx-runtime";
3830
4541
  var MarkdownRenderer = {
3831
4542
  canRenderType: "markdown",
3832
4543
  render: ({ content, align, margin, size, control, tags }) => {
3833
4544
  const isLarge = !["xs", "sm"].includes(size);
3834
- return /* @__PURE__ */ jsx60(
4545
+ return /* @__PURE__ */ jsx62(
3835
4546
  "div",
3836
4547
  {
3837
- className: (0, import_classnames17.default)(
4548
+ className: (0, import_classnames19.default)(
3838
4549
  getTextAlignmentAndMargin({ align, margin }),
3839
4550
  controlAndTagsToCSSClass({ control, tags })
3840
4551
  ),
3841
- children: /* @__PURE__ */ jsx60(
4552
+ children: /* @__PURE__ */ jsx62(
3842
4553
  Markdown4,
3843
4554
  {
3844
- className: (0, import_classnames17.default)("df-markdown", {
4555
+ className: (0, import_classnames19.default)("df-markdown", {
3845
4556
  "np-text-body-large": isLarge,
3846
4557
  "np-text-body-default": !isLarge
3847
4558
  }),
@@ -3856,17 +4567,17 @@ var MarkdownRenderer = {
3856
4567
  var MarkdownRenderer_default = MarkdownRenderer;
3857
4568
 
3858
4569
  // ../renderers/src/MediaRenderer.tsx
3859
- var import_classnames18 = __toESM(require_classnames());
3860
- import { jsx as jsx61 } from "react/jsx-runtime";
4570
+ var import_classnames20 = __toESM(require_classnames());
4571
+ import { jsx as jsx63 } from "react/jsx-runtime";
3861
4572
  var MediaRenderer = {
3862
4573
  canRenderType: "media",
3863
4574
  render: (_a) => {
3864
4575
  var _b = _a, { media } = _b, rest = __objRest(_b, ["media"]);
3865
4576
  switch (media.type) {
3866
4577
  case "avatar":
3867
- return /* @__PURE__ */ jsx61(AvatarMediaRendererComponent, __spreadValues({ media }, rest));
4578
+ return /* @__PURE__ */ jsx63(AvatarMediaRendererComponent, __spreadValues({ media }, rest));
3868
4579
  case "image":
3869
- return /* @__PURE__ */ jsx61(ImageMediaRendererComponent, __spreadValues({ media }, rest));
4580
+ return /* @__PURE__ */ jsx63(ImageMediaRendererComponent, __spreadValues({ media }, rest));
3870
4581
  case "legacy":
3871
4582
  return null;
3872
4583
  }
@@ -3880,16 +4591,16 @@ var AvatarMediaRendererComponent = ({
3880
4591
  control,
3881
4592
  tags
3882
4593
  }) => {
3883
- return /* @__PURE__ */ jsx61(
4594
+ return /* @__PURE__ */ jsx63(
3884
4595
  "div",
3885
4596
  {
3886
- className: (0, import_classnames18.default)(
4597
+ className: (0, import_classnames20.default)(
3887
4598
  "df-media-layout-avatar",
3888
4599
  align,
3889
4600
  getMargin(margin),
3890
4601
  controlAndTagsToCSSClass({ control, tags })
3891
4602
  ),
3892
- children: /* @__PURE__ */ jsx61(Media, { media, size: mapAvatarMediaSize(size) })
4603
+ children: /* @__PURE__ */ jsx63(Media, { media, size: mapAvatarMediaSize(size) })
3893
4604
  }
3894
4605
  );
3895
4606
  };
@@ -3899,7 +4610,7 @@ var ImageMediaRendererComponent = (_a) => {
3899
4610
  } = _b, rest = __objRest(_b, [
3900
4611
  "media"
3901
4612
  ]);
3902
- return isUrnImage(media.uri) ? /* @__PURE__ */ jsx61(UrnImage, __spreadValues({ uri: media.uri, accessibilityDescription: media.accessibilityDescription }, rest)) : /* @__PURE__ */ jsx61(UrlImage, __spreadValues({ uri: media.uri, accessibilityDescription: media.accessibilityDescription }, rest));
4613
+ return isUrnImage(media.uri) ? /* @__PURE__ */ jsx63(UrnImage, __spreadValues({ uri: media.uri, accessibilityDescription: media.accessibilityDescription }, rest)) : /* @__PURE__ */ jsx63(UrlImage, __spreadValues({ uri: media.uri, accessibilityDescription: media.accessibilityDescription }, rest));
3903
4614
  };
3904
4615
  var mapAvatarMediaSize = (size) => {
3905
4616
  switch (size) {
@@ -3917,21 +4628,21 @@ var mapAvatarMediaSize = (size) => {
3917
4628
  };
3918
4629
 
3919
4630
  // ../renderers/src/ModalLayoutRenderer.tsx
3920
- var import_classnames19 = __toESM(require_classnames());
4631
+ var import_classnames21 = __toESM(require_classnames());
3921
4632
  import { Button as Button6, Modal as Modal2 } from "@transferwise/components";
3922
- import { useState as useState11 } from "react";
3923
- import { jsx as jsx62, jsxs as jsxs15 } from "react/jsx-runtime";
4633
+ import { useState as useState12 } from "react";
4634
+ import { jsx as jsx64, jsxs as jsxs16 } from "react/jsx-runtime";
3924
4635
  var ModalLayoutRenderer = {
3925
4636
  canRenderType: "modal-layout",
3926
- render: (props) => /* @__PURE__ */ jsx62(DFModal, __spreadValues({}, props))
4637
+ render: (props) => /* @__PURE__ */ jsx64(DFModal, __spreadValues({}, props))
3927
4638
  };
3928
4639
  var ModalLayoutRenderer_default = ModalLayoutRenderer;
3929
4640
  function DFModal({ content, margin, trigger, control, tags }) {
3930
- const [visible, setVisible] = useState11(false);
4641
+ const [visible, setVisible] = useState12(false);
3931
4642
  const { children, title } = content;
3932
- return /* @__PURE__ */ jsxs15("div", { className: (0, import_classnames19.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
3933
- /* @__PURE__ */ jsx62(Button6, { v2: true, priority: "tertiary", block: true, onClick: () => setVisible(true), children: trigger.title }),
3934
- /* @__PURE__ */ jsx62(
4643
+ return /* @__PURE__ */ jsxs16("div", { className: (0, import_classnames21.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
4644
+ /* @__PURE__ */ jsx64(Button6, { v2: true, priority: "tertiary", block: true, onClick: () => setVisible(true), children: trigger.title }),
4645
+ /* @__PURE__ */ jsx64(
3935
4646
  Modal2,
3936
4647
  {
3937
4648
  scroll: "content",
@@ -3947,11 +4658,11 @@ function DFModal({ content, margin, trigger, control, tags }) {
3947
4658
 
3948
4659
  // ../renderers/src/ModalRenderer.tsx
3949
4660
  import { Modal as Modal3 } from "@transferwise/components";
3950
- import { jsx as jsx63 } from "react/jsx-runtime";
4661
+ import { jsx as jsx65 } from "react/jsx-runtime";
3951
4662
  var ModalRenderer = {
3952
4663
  canRenderType: "modal",
3953
4664
  render: ({ title, children, open, onClose, control, tags }) => {
3954
- return /* @__PURE__ */ jsx63(
4665
+ return /* @__PURE__ */ jsx65(
3955
4666
  Modal3,
3956
4667
  {
3957
4668
  open,
@@ -3967,8 +4678,8 @@ var ModalRenderer = {
3967
4678
  // ../renderers/src/MoneyInputRenderer.tsx
3968
4679
  import { MoneyInput } from "@transferwise/components";
3969
4680
  import { useEffect as useEffect11 } from "react";
3970
- import { useIntl as useIntl10 } from "react-intl";
3971
- import { jsx as jsx64 } from "react/jsx-runtime";
4681
+ import { useIntl as useIntl11 } from "react-intl";
4682
+ import { jsx as jsx66 } from "react/jsx-runtime";
3972
4683
  var groupingTags2 = Object.keys(group_messages_default).filter((key) => key !== "all");
3973
4684
  var MoneyInputRenderer = {
3974
4685
  canRenderType: "money-input",
@@ -3997,8 +4708,8 @@ function MoneyInputRendererComponent(props) {
3997
4708
  onCurrencyChange(0);
3998
4709
  }
3999
4710
  }, [selectedCurrencyIndex, onCurrencyChange, currencies.length]);
4000
- const { formatMessage } = useIntl10();
4001
- return /* @__PURE__ */ jsx64(
4711
+ const { formatMessage } = useIntl11();
4712
+ return /* @__PURE__ */ jsx66(
4002
4713
  FieldInput_default,
4003
4714
  {
4004
4715
  id: uid,
@@ -4009,7 +4720,7 @@ function MoneyInputRendererComponent(props) {
4009
4720
  features,
4010
4721
  control,
4011
4722
  tags,
4012
- children: /* @__PURE__ */ jsx64(
4723
+ children: /* @__PURE__ */ jsx66(
4013
4724
  MoneyInput,
4014
4725
  {
4015
4726
  amount: parseFloatOrNull(amountValue),
@@ -4072,8 +4783,8 @@ function assertCurrencyCodeIsString(currencyCode) {
4072
4783
 
4073
4784
  // ../renderers/src/MultiSelectInputRenderer/InlineComponent.tsx
4074
4785
  import { ListItem as ListItem9, SearchInput as SearchInput2 } from "@transferwise/components";
4075
- import { useState as useState12 } from "react";
4076
- import { useIntl as useIntl11 } from "react-intl";
4786
+ import { useState as useState13 } from "react";
4787
+ import { useIntl as useIntl12 } from "react-intl";
4077
4788
 
4078
4789
  // ../renderers/src/utils/items-with-index.ts
4079
4790
  var zipWithIndex = (items) => items.map((item, index) => __spreadProps(__spreadValues({}, item), {
@@ -4081,7 +4792,7 @@ var zipWithIndex = (items) => items.map((item, index) => __spreadProps(__spreadV
4081
4792
  }));
4082
4793
 
4083
4794
  // ../renderers/src/MultiSelectInputRenderer/InlineComponent.tsx
4084
- import { Fragment as Fragment8, jsx as jsx65, jsxs as jsxs16 } from "react/jsx-runtime";
4795
+ import { Fragment as Fragment8, jsx as jsx67, jsxs as jsxs17 } from "react/jsx-runtime";
4085
4796
  function InlineComponent(props) {
4086
4797
  const {
4087
4798
  id,
@@ -4098,12 +4809,12 @@ function InlineComponent(props) {
4098
4809
  onSelect
4099
4810
  } = props;
4100
4811
  const optionsWithIndex = zipWithIndex(options);
4101
- const [query, setQuery] = useState12("");
4102
- const { formatMessage } = useIntl11();
4812
+ const [query, setQuery] = useState13("");
4813
+ const { formatMessage } = useIntl12();
4103
4814
  const filtered = tags == null ? void 0 : tags.includes("filtered");
4104
4815
  const filteredOptions = query ? filterAndSortItems(optionsWithIndex, filtered ? query : "") : optionsWithIndex;
4105
- return /* @__PURE__ */ jsxs16(Fragment8, { children: [
4106
- filtered && /* @__PURE__ */ jsx65(
4816
+ return /* @__PURE__ */ jsxs17(Fragment8, { children: [
4817
+ filtered && /* @__PURE__ */ jsx67(
4107
4818
  SearchInput2,
4108
4819
  {
4109
4820
  placeholder: formatMessage(filter_messages_default.placeholder),
@@ -4116,7 +4827,7 @@ function InlineComponent(props) {
4116
4827
  }
4117
4828
  }
4118
4829
  ),
4119
- /* @__PURE__ */ jsx65(
4830
+ /* @__PURE__ */ jsx67(
4120
4831
  FieldInput_default,
4121
4832
  {
4122
4833
  id,
@@ -4141,7 +4852,7 @@ function InlineComponent(props) {
4141
4852
  childrenProps
4142
4853
  } = option;
4143
4854
  const key = (_a = childrenProps == null ? void 0 : childrenProps.uid) != null ? _a : index;
4144
- return /* @__PURE__ */ jsx65(
4855
+ return /* @__PURE__ */ jsx67(
4145
4856
  ListItem9,
4146
4857
  {
4147
4858
  title: itemTitle,
@@ -4150,9 +4861,9 @@ function InlineComponent(props) {
4150
4861
  valueSubtitle: supportingValues == null ? void 0 : supportingValues.subvalue,
4151
4862
  media: getMedia(media, false),
4152
4863
  prompt: getInlineAlert(inlineAlert),
4153
- additionalInfo: additionalText ? /* @__PURE__ */ jsx65(ListItem9.AdditionalInfo, { children: additionalText }) : void 0,
4864
+ additionalInfo: additionalText ? /* @__PURE__ */ jsx67(ListItem9.AdditionalInfo, { children: additionalText }) : void 0,
4154
4865
  disabled: disabled || optionDisabled,
4155
- control: /* @__PURE__ */ jsx65(
4866
+ control: /* @__PURE__ */ jsx67(
4156
4867
  ListItem9.Checkbox,
4157
4868
  {
4158
4869
  checked: selectedIndices.includes(index),
@@ -4173,12 +4884,12 @@ function InlineComponent(props) {
4173
4884
 
4174
4885
  // ../renderers/src/MultiSelectInputRenderer/DefaultComponent.tsx
4175
4886
  import { SelectInput, SelectInputOptionContent } from "@transferwise/components";
4176
- import { useState as useState13 } from "react";
4177
- import { useIntl as useIntl12 } from "react-intl";
4887
+ import { useState as useState14 } from "react";
4888
+ import { useIntl as useIntl13 } from "react-intl";
4178
4889
 
4179
4890
  // ../renderers/src/messages/multi-select.messages.ts
4180
- import { defineMessages as defineMessages9 } from "react-intl";
4181
- var multi_select_messages_default = defineMessages9({
4891
+ import { defineMessages as defineMessages10 } from "react-intl";
4892
+ var multi_select_messages_default = defineMessages10({
4182
4893
  summary: {
4183
4894
  id: "df.wise.MultiSelect.summary",
4184
4895
  defaultMessage: "{first} and {count} more",
@@ -4187,10 +4898,10 @@ var multi_select_messages_default = defineMessages9({
4187
4898
  });
4188
4899
 
4189
4900
  // ../renderers/src/MultiSelectInputRenderer/DefaultComponent.tsx
4190
- import { jsx as jsx66 } from "react/jsx-runtime";
4901
+ import { jsx as jsx68 } from "react/jsx-runtime";
4191
4902
  function DefaultComponent(props) {
4192
- const { formatMessage } = useIntl12();
4193
- const [stagedIndices, setStagedIndices] = useState13();
4903
+ const { formatMessage } = useIntl13();
4904
+ const [stagedIndices, setStagedIndices] = useState14();
4194
4905
  const {
4195
4906
  id,
4196
4907
  autoComplete,
@@ -4231,12 +4942,12 @@ function DefaultComponent(props) {
4231
4942
  const contentProps = {
4232
4943
  title: option.title,
4233
4944
  description: option.description,
4234
- icon: /* @__PURE__ */ jsx66(OptionMedia, { media: option.media, preferAvatar: false })
4945
+ icon: /* @__PURE__ */ jsx68(OptionMedia, { media: option.media, preferAvatar: false })
4235
4946
  };
4236
- return /* @__PURE__ */ jsx66(SelectInputOptionContent, __spreadValues({}, contentProps));
4947
+ return /* @__PURE__ */ jsx68(SelectInputOptionContent, __spreadValues({}, contentProps));
4237
4948
  };
4238
4949
  const extraProps = { autoComplete };
4239
- return /* @__PURE__ */ jsx66(
4950
+ return /* @__PURE__ */ jsx68(
4240
4951
  FieldInput_default,
4241
4952
  {
4242
4953
  id,
@@ -4247,7 +4958,7 @@ function DefaultComponent(props) {
4247
4958
  features,
4248
4959
  control,
4249
4960
  tags,
4250
- children: /* @__PURE__ */ jsx66(
4961
+ children: /* @__PURE__ */ jsx68(
4251
4962
  SelectInput,
4252
4963
  __spreadValues({
4253
4964
  id,
@@ -4287,7 +4998,7 @@ function DefaultComponent(props) {
4287
4998
 
4288
4999
  // ../renderers/src/MultiSelectInputRenderer/InlineCheckboxComponent.tsx
4289
5000
  import { Checkbox as Checkbox2 } from "@transferwise/components";
4290
- import { jsx as jsx67 } from "react/jsx-runtime";
5001
+ import { jsx as jsx69 } from "react/jsx-runtime";
4291
5002
  function InlineCheckboxComponent(props) {
4292
5003
  const {
4293
5004
  id,
@@ -4303,7 +5014,7 @@ function InlineCheckboxComponent(props) {
4303
5014
  tags,
4304
5015
  onSelect
4305
5016
  } = props;
4306
- return /* @__PURE__ */ jsx67(
5017
+ return /* @__PURE__ */ jsx69(
4307
5018
  FieldInput_default,
4308
5019
  {
4309
5020
  id,
@@ -4334,24 +5045,24 @@ function InlineCheckboxComponent(props) {
4334
5045
  onSelect(newSelectedIndices);
4335
5046
  }
4336
5047
  };
4337
- return /* @__PURE__ */ jsx67(Checkbox2, __spreadProps(__spreadValues({}, checkboxProps), { className: "m-t-1" }), key);
5048
+ return /* @__PURE__ */ jsx69(Checkbox2, __spreadProps(__spreadValues({}, checkboxProps), { className: "m-t-1" }), key);
4338
5049
  })
4339
5050
  }
4340
5051
  );
4341
5052
  }
4342
5053
 
4343
5054
  // ../renderers/src/MultiSelectInputRenderer/MultiSelectInputRenderer.tsx
4344
- import { jsx as jsx68 } from "react/jsx-runtime";
5055
+ import { jsx as jsx70 } from "react/jsx-runtime";
4345
5056
  var MultiSelectInputRenderer = {
4346
5057
  canRenderType: "input-multi-select",
4347
5058
  render: (props) => {
4348
5059
  switch (props.control) {
4349
5060
  case "inline":
4350
- return /* @__PURE__ */ jsx68(InlineComponent, __spreadValues({}, props));
5061
+ return /* @__PURE__ */ jsx70(InlineComponent, __spreadValues({}, props));
4351
5062
  case "inline-checkbox-group":
4352
- return /* @__PURE__ */ jsx68(InlineCheckboxComponent, __spreadValues({}, props));
5063
+ return /* @__PURE__ */ jsx70(InlineCheckboxComponent, __spreadValues({}, props));
4353
5064
  default:
4354
- return /* @__PURE__ */ jsx68(DefaultComponent, __spreadValues({}, props));
5065
+ return /* @__PURE__ */ jsx70(DefaultComponent, __spreadValues({}, props));
4355
5066
  }
4356
5067
  }
4357
5068
  };
@@ -4361,8 +5072,8 @@ import { Status, UploadInput } from "@transferwise/components";
4361
5072
 
4362
5073
  // ../renderers/src/components/UploadFieldInput.tsx
4363
5074
  import { InlineAlert as InlineAlert2 } from "@transferwise/components";
4364
- var import_classnames20 = __toESM(require_classnames());
4365
- import { jsx as jsx69, jsxs as jsxs17 } from "react/jsx-runtime";
5075
+ var import_classnames22 = __toESM(require_classnames());
5076
+ import { jsx as jsx71, jsxs as jsxs18 } from "react/jsx-runtime";
4366
5077
  function UploadFieldInput({
4367
5078
  id,
4368
5079
  children,
@@ -4374,14 +5085,14 @@ function UploadFieldInput({
4374
5085
  control,
4375
5086
  tags
4376
5087
  }) {
4377
- const labelContent = label && help ? /* @__PURE__ */ jsx69(LabelContentWithHelp, { text: label, help }) : label;
5088
+ const labelContent = label && help ? /* @__PURE__ */ jsx71(LabelContentWithHelp, { text: label, help }) : label;
4378
5089
  const descriptionId = description ? `${id}-description` : void 0;
4379
5090
  const { ref } = useScrollToError(validation, features);
4380
- return /* @__PURE__ */ jsxs17(
5091
+ return /* @__PURE__ */ jsxs18(
4381
5092
  "div",
4382
5093
  {
4383
5094
  ref,
4384
- className: (0, import_classnames20.default)(
5095
+ className: (0, import_classnames22.default)(
4385
5096
  "form-group d-block",
4386
5097
  {
4387
5098
  "has-error": (validation == null ? void 0 : validation.status) === "invalid"
@@ -4389,9 +5100,9 @@ function UploadFieldInput({
4389
5100
  controlAndTagsToCSSClass({ control, tags })
4390
5101
  ),
4391
5102
  children: [
4392
- /* @__PURE__ */ jsx69("label", { htmlFor: id, className: "control-label", children: labelContent }),
5103
+ /* @__PURE__ */ jsx71("label", { htmlFor: id, className: "control-label", children: labelContent }),
4393
5104
  children,
4394
- (validation == null ? void 0 : validation.status) === "invalid" && /* @__PURE__ */ jsx69(InlineAlert2, { type: "negative", id: descriptionId, children: validation.message })
5105
+ (validation == null ? void 0 : validation.status) === "invalid" && /* @__PURE__ */ jsx71(InlineAlert2, { type: "negative", id: descriptionId, children: validation.message })
4395
5106
  ]
4396
5107
  }
4397
5108
  );
@@ -4426,7 +5137,7 @@ var getSizeLimit = (maxSize) => {
4426
5137
  };
4427
5138
 
4428
5139
  // ../renderers/src/MultiUploadInputRenderer.tsx
4429
- import { jsx as jsx70 } from "react/jsx-runtime";
5140
+ import { jsx as jsx72 } from "react/jsx-runtime";
4430
5141
  var MultiUploadInputRenderer = {
4431
5142
  canRenderType: "input-upload-multi",
4432
5143
  render: (props) => {
@@ -4454,7 +5165,7 @@ var MultiUploadInputRenderer = {
4454
5165
  };
4455
5166
  const onDeleteFile = async (fileId) => onRemoveFile(value.findIndex((file) => file.id === fileId));
4456
5167
  const descriptionId = description ? `${id}-description` : void 0;
4457
- return /* @__PURE__ */ jsx70(
5168
+ return /* @__PURE__ */ jsx72(
4458
5169
  UploadFieldInput_default,
4459
5170
  {
4460
5171
  id,
@@ -4465,7 +5176,7 @@ var MultiUploadInputRenderer = {
4465
5176
  features,
4466
5177
  control,
4467
5178
  tags,
4468
- children: /* @__PURE__ */ jsx70(
5179
+ children: /* @__PURE__ */ jsx72(
4469
5180
  UploadInput,
4470
5181
  {
4471
5182
  id,
@@ -4494,7 +5205,7 @@ var MultiUploadInputRenderer_default = MultiUploadInputRenderer;
4494
5205
 
4495
5206
  // ../renderers/src/NumberInputRenderer.tsx
4496
5207
  import { Input as Input3, InputGroup as InputGroup3 } from "@transferwise/components";
4497
- import { jsx as jsx71 } from "react/jsx-runtime";
5208
+ import { jsx as jsx73 } from "react/jsx-runtime";
4498
5209
  var NumberInputRenderer = {
4499
5210
  canRenderType: "input-number",
4500
5211
  render: (props) => {
@@ -4508,7 +5219,7 @@ var NumberInputRenderer = {
4508
5219
  "maximum",
4509
5220
  "minimum"
4510
5221
  );
4511
- return /* @__PURE__ */ jsx71(
5222
+ return /* @__PURE__ */ jsx73(
4512
5223
  FieldInput_default,
4513
5224
  {
4514
5225
  id,
@@ -4521,7 +5232,7 @@ var NumberInputRenderer = {
4521
5232
  features: props.features,
4522
5233
  control: props.control,
4523
5234
  tags: props.tags,
4524
- children: /* @__PURE__ */ jsx71(InputGroup3, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx71(
5235
+ children: /* @__PURE__ */ jsx73(InputGroup3, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx73(
4525
5236
  Input3,
4526
5237
  __spreadValues({
4527
5238
  id,
@@ -4542,9 +5253,9 @@ var NumberInputRenderer = {
4542
5253
  var NumberInputRenderer_default = NumberInputRenderer;
4543
5254
 
4544
5255
  // ../renderers/src/ParagraphRenderer.tsx
4545
- var import_classnames21 = __toESM(require_classnames());
5256
+ var import_classnames23 = __toESM(require_classnames());
4546
5257
  import { Button as Button7, Input as Input4 } from "@transferwise/components";
4547
- import { useIntl as useIntl13 } from "react-intl";
5258
+ import { useIntl as useIntl14 } from "react-intl";
4548
5259
 
4549
5260
  // ../renderers/src/hooks/useSnackBarIfAvailable.ts
4550
5261
  import { SnackbarContext } from "@transferwise/components";
@@ -4556,8 +5267,8 @@ function useSnackBarIfAvailable() {
4556
5267
  }
4557
5268
 
4558
5269
  // ../renderers/src/messages/paragraph.messages.ts
4559
- import { defineMessages as defineMessages10 } from "react-intl";
4560
- var paragraph_messages_default = defineMessages10({
5270
+ import { defineMessages as defineMessages11 } from "react-intl";
5271
+ var paragraph_messages_default = defineMessages11({
4561
5272
  copy: {
4562
5273
  id: "df.wise.DynamicParagraph.copy",
4563
5274
  defaultMessage: "Copy",
@@ -4571,18 +5282,18 @@ var paragraph_messages_default = defineMessages10({
4571
5282
  });
4572
5283
 
4573
5284
  // ../renderers/src/ParagraphRenderer.tsx
4574
- import { jsx as jsx72, jsxs as jsxs18 } from "react/jsx-runtime";
5285
+ import { jsx as jsx74, jsxs as jsxs19 } from "react/jsx-runtime";
4575
5286
  var ParagraphRenderer = {
4576
5287
  canRenderType: "paragraph",
4577
- render: (props) => /* @__PURE__ */ jsx72(Paragraph, __spreadValues({}, props))
5288
+ render: (props) => /* @__PURE__ */ jsx74(Paragraph, __spreadValues({}, props))
4578
5289
  };
4579
5290
  function Paragraph(props) {
4580
5291
  const { align, control, margin, size, text } = props;
4581
- const className = (0, import_classnames21.default)(
5292
+ const className = (0, import_classnames23.default)(
4582
5293
  getTextAlignmentAndMargin({ align, margin }),
4583
5294
  controlAndTagsToCSSClass(props)
4584
5295
  );
4585
- return control === "copyable" ? /* @__PURE__ */ jsx72(CopyableParagraph, { className, align, text }) : /* @__PURE__ */ jsx72(
5296
+ return control === "copyable" ? /* @__PURE__ */ jsx74(CopyableParagraph, { className, align, text }) : /* @__PURE__ */ jsx74(
4586
5297
  "p",
4587
5298
  {
4588
5299
  className: `${["xs", "sm"].includes(size) ? "np-text-body-default" : "np-text-body-large"} ${className}`,
@@ -4595,41 +5306,41 @@ function CopyableParagraph({
4595
5306
  align,
4596
5307
  className
4597
5308
  }) {
4598
- const { formatMessage } = useIntl13();
5309
+ const { formatMessage } = useIntl14();
4599
5310
  const createSnackbar = useSnackBarIfAvailable();
4600
5311
  const copy = () => {
4601
5312
  navigator.clipboard.writeText(text).then(() => createSnackbar({ text: formatMessage(paragraph_messages_default.copied) })).catch(() => {
4602
5313
  });
4603
5314
  };
4604
5315
  const inputAlignmentClasses = getTextAlignmentAndMargin({ align, margin: "sm" });
4605
- return /* @__PURE__ */ jsxs18("div", { className, children: [
4606
- /* @__PURE__ */ jsx72(
5316
+ return /* @__PURE__ */ jsxs19("div", { className, children: [
5317
+ /* @__PURE__ */ jsx74(
4607
5318
  Input4,
4608
5319
  {
4609
5320
  type: "text",
4610
5321
  value: text,
4611
5322
  readOnly: true,
4612
- className: (0, import_classnames21.default)("text-ellipsis", inputAlignmentClasses)
5323
+ className: (0, import_classnames23.default)("text-ellipsis", inputAlignmentClasses)
4613
5324
  }
4614
5325
  ),
4615
- /* @__PURE__ */ jsx72(Button7, { v2: true, block: true, onClick: copy, children: formatMessage(paragraph_messages_default.copy) })
5326
+ /* @__PURE__ */ jsx74(Button7, { v2: true, block: true, onClick: copy, children: formatMessage(paragraph_messages_default.copy) })
4616
5327
  ] });
4617
5328
  }
4618
5329
  var ParagraphRenderer_default = ParagraphRenderer;
4619
5330
 
4620
5331
  // ../renderers/src/ProgressRenderer.tsx
4621
- var import_classnames22 = __toESM(require_classnames());
5332
+ var import_classnames24 = __toESM(require_classnames());
4622
5333
  import { ProgressBar } from "@transferwise/components";
4623
- import { jsx as jsx73 } from "react/jsx-runtime";
5334
+ import { jsx as jsx75 } from "react/jsx-runtime";
4624
5335
  var ProgressRenderer = {
4625
5336
  canRenderType: "progress",
4626
5337
  render: ({ uid, title, help, progress, progressText, margin, description, control, tags }) => {
4627
- return /* @__PURE__ */ jsx73(
5338
+ return /* @__PURE__ */ jsx75(
4628
5339
  ProgressBar,
4629
5340
  {
4630
5341
  id: uid,
4631
- className: (0, import_classnames22.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
4632
- title: title && help ? /* @__PURE__ */ jsx73(LabelContentWithHelp, { text: title, help }) : title,
5342
+ className: (0, import_classnames24.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
5343
+ title: title && help ? /* @__PURE__ */ jsx75(LabelContentWithHelp, { text: title, help }) : title,
4633
5344
  description,
4634
5345
  progress: {
4635
5346
  max: 1,
@@ -4642,15 +5353,15 @@ var ProgressRenderer = {
4642
5353
  };
4643
5354
 
4644
5355
  // ../renderers/src/RepeatableRenderer.tsx
4645
- var import_classnames23 = __toESM(require_classnames());
5356
+ var import_classnames25 = __toESM(require_classnames());
4646
5357
  import { Button as Button8, Header as Header6, InlineAlert as InlineAlert3, Modal as Modal4, NavigationOption } from "@transferwise/components";
4647
5358
  import { Plus } from "@transferwise/icons";
4648
- import { useState as useState14 } from "react";
4649
- import { useIntl as useIntl14 } from "react-intl";
5359
+ import { useState as useState15 } from "react";
5360
+ import { useIntl as useIntl15 } from "react-intl";
4650
5361
 
4651
5362
  // ../renderers/src/messages/repeatable.messages.ts
4652
- import { defineMessages as defineMessages11 } from "react-intl";
4653
- var repeatable_messages_default = defineMessages11({
5363
+ import { defineMessages as defineMessages12 } from "react-intl";
5364
+ var repeatable_messages_default = defineMessages12({
4654
5365
  addItemTitle: {
4655
5366
  id: "df.wise.ArraySchema.addItemTitle",
4656
5367
  defaultMessage: "Add Item",
@@ -4674,10 +5385,10 @@ var repeatable_messages_default = defineMessages11({
4674
5385
  });
4675
5386
 
4676
5387
  // ../renderers/src/RepeatableRenderer.tsx
4677
- import { Fragment as Fragment9, jsx as jsx74, jsxs as jsxs19 } from "react/jsx-runtime";
5388
+ import { Fragment as Fragment9, jsx as jsx76, jsxs as jsxs20 } from "react/jsx-runtime";
4678
5389
  var RepeatableRenderer = {
4679
5390
  canRenderType: "repeatable",
4680
- render: (props) => /* @__PURE__ */ jsx74(Repeatable, __spreadValues({}, props))
5391
+ render: (props) => /* @__PURE__ */ jsx76(Repeatable, __spreadValues({}, props))
4681
5392
  };
4682
5393
  function Repeatable(props) {
4683
5394
  const {
@@ -4694,8 +5405,8 @@ function Repeatable(props) {
4694
5405
  onSave,
4695
5406
  onRemove
4696
5407
  } = props;
4697
- const { formatMessage } = useIntl14();
4698
- const [openModalType, setOpenModalType] = useState14(null);
5408
+ const { formatMessage } = useIntl15();
5409
+ const [openModalType, setOpenModalType] = useState15(null);
4699
5410
  const { ref } = useScrollToError(validationState, features);
4700
5411
  const onAddItem = () => {
4701
5412
  onAdd();
@@ -4718,42 +5429,42 @@ function Repeatable(props) {
4718
5429
  const onCancelEdit = () => {
4719
5430
  setOpenModalType(null);
4720
5431
  };
4721
- return /* @__PURE__ */ jsxs19(Fragment9, { children: [
4722
- /* @__PURE__ */ jsxs19("div", { ref, className: controlAndTagsToCSSClass(props), children: [
4723
- title && /* @__PURE__ */ jsx74(Header6, { title }),
4724
- description && /* @__PURE__ */ jsx74("p", { children: description }),
4725
- /* @__PURE__ */ jsxs19(
5432
+ return /* @__PURE__ */ jsxs20(Fragment9, { children: [
5433
+ /* @__PURE__ */ jsxs20("div", { ref, className: controlAndTagsToCSSClass(props), children: [
5434
+ title && /* @__PURE__ */ jsx76(Header6, { title }),
5435
+ description && /* @__PURE__ */ jsx76("p", { children: description }),
5436
+ /* @__PURE__ */ jsxs20(
4726
5437
  "div",
4727
5438
  {
4728
- className: (0, import_classnames23.default)("form-group", {
5439
+ className: (0, import_classnames25.default)("form-group", {
4729
5440
  "has-error": (validationState == null ? void 0 : validationState.status) === "invalid"
4730
5441
  }),
4731
5442
  children: [
4732
- items == null ? void 0 : items.map((item, index) => /* @__PURE__ */ jsx74(ItemSummaryOption, { item, onClick: () => onEditItem(index) }, item.id)),
4733
- /* @__PURE__ */ jsx74(
5443
+ items == null ? void 0 : items.map((item, index) => /* @__PURE__ */ jsx76(ItemSummaryOption, { item, onClick: () => onEditItem(index) }, item.id)),
5444
+ /* @__PURE__ */ jsx76(
4734
5445
  NavigationOption,
4735
5446
  {
4736
- media: /* @__PURE__ */ jsx74(Plus, {}),
5447
+ media: /* @__PURE__ */ jsx76(Plus, {}),
4737
5448
  title: addItemTitle || formatMessage(repeatable_messages_default.addItemTitle),
4738
5449
  showMediaAtAllSizes: true,
4739
5450
  onClick: () => onAddItem()
4740
5451
  }
4741
5452
  ),
4742
- (validationState == null ? void 0 : validationState.status) === "invalid" && /* @__PURE__ */ jsx74(InlineAlert3, { type: "negative", children: validationState.message })
5453
+ (validationState == null ? void 0 : validationState.status) === "invalid" && /* @__PURE__ */ jsx76(InlineAlert3, { type: "negative", children: validationState.message })
4743
5454
  ]
4744
5455
  }
4745
5456
  )
4746
5457
  ] }),
4747
- /* @__PURE__ */ jsx74(
5458
+ /* @__PURE__ */ jsx76(
4748
5459
  Modal4,
4749
5460
  {
4750
5461
  open: openModalType !== null,
4751
5462
  title: (openModalType === "add" ? addItemTitle : editItemTitle) || formatMessage(repeatable_messages_default.addItemTitle),
4752
- body: /* @__PURE__ */ jsxs19(Fragment9, { children: [
4753
- /* @__PURE__ */ jsx74("div", { className: "m-b-2", children: editableItem }),
4754
- /* @__PURE__ */ jsxs19("div", { children: [
4755
- /* @__PURE__ */ jsx74(Button8, { priority: "primary", block: true, className: "m-b-2", onClick: () => onSaveItem(), children: formatMessage(repeatable_messages_default.addItem) }),
4756
- /* @__PURE__ */ jsx74(
5463
+ body: /* @__PURE__ */ jsxs20(Fragment9, { children: [
5464
+ /* @__PURE__ */ jsx76("div", { className: "m-b-2", children: editableItem }),
5465
+ /* @__PURE__ */ jsxs20("div", { children: [
5466
+ /* @__PURE__ */ jsx76(Button8, { priority: "primary", block: true, className: "m-b-2", onClick: () => onSaveItem(), children: formatMessage(repeatable_messages_default.addItem) }),
5467
+ /* @__PURE__ */ jsx76(
4757
5468
  Button8,
4758
5469
  {
4759
5470
  v2: true,
@@ -4775,10 +5486,10 @@ function ItemSummaryOption({
4775
5486
  item,
4776
5487
  onClick
4777
5488
  }) {
4778
- return /* @__PURE__ */ jsx74(
5489
+ return /* @__PURE__ */ jsx76(
4779
5490
  NavigationOption,
4780
5491
  {
4781
- media: /* @__PURE__ */ jsx74(OptionMedia, { media: item.media, preferAvatar: false }),
5492
+ media: /* @__PURE__ */ jsx76(OptionMedia, { media: item.media, preferAvatar: false }),
4782
5493
  title: item.title,
4783
5494
  content: item.description,
4784
5495
  showMediaAtAllSizes: true,
@@ -4790,16 +5501,16 @@ function ItemSummaryOption({
4790
5501
  var RepeatableRenderer_default = RepeatableRenderer;
4791
5502
 
4792
5503
  // ../renderers/src/ReviewLegacyRenderer.tsx
4793
- var import_classnames24 = __toESM(require_classnames());
5504
+ var import_classnames26 = __toESM(require_classnames());
4794
5505
  import { DefinitionList } from "@transferwise/components";
4795
- import { Fragment as Fragment10, jsx as jsx75, jsxs as jsxs20 } from "react/jsx-runtime";
5506
+ import { Fragment as Fragment10, jsx as jsx77, jsxs as jsxs21 } from "react/jsx-runtime";
4796
5507
  var ReviewRenderer = {
4797
5508
  canRenderType: "review",
4798
5509
  render: ({ callToAction, control, fields, margin, title, trackEvent, tags }) => {
4799
5510
  const orientation = mapControlToDefinitionListLayout(control);
4800
- return /* @__PURE__ */ jsxs20("div", { className: (0, import_classnames24.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
4801
- /* @__PURE__ */ jsx75(Header, { title, callToAction }),
4802
- /* @__PURE__ */ jsx75("div", { className: margin, children: /* @__PURE__ */ jsx75(
5511
+ return /* @__PURE__ */ jsxs21("div", { className: (0, import_classnames26.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
5512
+ /* @__PURE__ */ jsx77(Header, { title, callToAction }),
5513
+ /* @__PURE__ */ jsx77("div", { className: margin, children: /* @__PURE__ */ jsx77(
4803
5514
  DefinitionList,
4804
5515
  {
4805
5516
  layout: orientation,
@@ -4837,21 +5548,21 @@ var mapControlToDefinitionListLayout = (control) => {
4837
5548
  };
4838
5549
  var getFieldLabel = (label, help, onClick) => {
4839
5550
  if (help) {
4840
- return /* @__PURE__ */ jsxs20(Fragment10, { children: [
5551
+ return /* @__PURE__ */ jsxs21(Fragment10, { children: [
4841
5552
  label,
4842
5553
  " ",
4843
- /* @__PURE__ */ jsx75(Help_default, { help, onClick })
5554
+ /* @__PURE__ */ jsx77(Help_default, { help, onClick })
4844
5555
  ] });
4845
5556
  }
4846
5557
  return label;
4847
5558
  };
4848
5559
 
4849
5560
  // ../renderers/src/ReviewRenderer.tsx
4850
- var import_classnames25 = __toESM(require_classnames());
5561
+ var import_classnames27 = __toESM(require_classnames());
4851
5562
  import { ListItem as ListItem10, Markdown as Markdown5, Popover } from "@transferwise/components";
4852
5563
  import { QuestionMarkCircle } from "@transferwise/icons";
4853
- import { useIntl as useIntl15 } from "react-intl";
4854
- import { jsx as jsx76, jsxs as jsxs21 } from "react/jsx-runtime";
5564
+ import { useIntl as useIntl16 } from "react-intl";
5565
+ import { jsx as jsx78, jsxs as jsxs22 } from "react/jsx-runtime";
4855
5566
  var IGNORED_CONTROLS = [
4856
5567
  "horizontal",
4857
5568
  "horizontal-end-aligned",
@@ -4861,7 +5572,7 @@ var IGNORED_CONTROLS = [
4861
5572
  var ReviewRenderer2 = {
4862
5573
  canRenderType: "review",
4863
5574
  canRender: ({ control }) => control ? !IGNORED_CONTROLS.includes(control) : true,
4864
- render: (props) => /* @__PURE__ */ jsx76(Review, __spreadValues({}, props))
5575
+ render: (props) => /* @__PURE__ */ jsx78(Review, __spreadValues({}, props))
4865
5576
  };
4866
5577
  var Review = ({
4867
5578
  callToAction,
@@ -4872,9 +5583,9 @@ var Review = ({
4872
5583
  title,
4873
5584
  trackEvent
4874
5585
  }) => {
4875
- const intl = useIntl15();
4876
- return /* @__PURE__ */ jsxs21("div", { className: (0, import_classnames25.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
4877
- /* @__PURE__ */ jsx76(Header, { title, callToAction }),
5586
+ const intl = useIntl16();
5587
+ return /* @__PURE__ */ jsxs22("div", { className: (0, import_classnames27.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
5588
+ /* @__PURE__ */ jsx78(Header, { title, callToAction }),
4878
5589
  fields.map((field) => {
4879
5590
  var _a, _b, _c;
4880
5591
  const {
@@ -4892,7 +5603,7 @@ var Review = ({
4892
5603
  ctaSecondary: (_a = itemTags == null ? void 0 : itemTags.includes("cta-secondary")) != null ? _a : false,
4893
5604
  fullyInteractive: (_b = (tags == null ? void 0 : tags.includes("fully-interactive")) && (additionalInfo == null ? void 0 : additionalInfo.onClick) == null) != null ? _b : false
4894
5605
  };
4895
- return /* @__PURE__ */ jsx76(
5606
+ return /* @__PURE__ */ jsx78(
4896
5607
  ListItem10,
4897
5608
  {
4898
5609
  title: value,
@@ -4913,18 +5624,18 @@ var Review = ({
4913
5624
  ] });
4914
5625
  };
4915
5626
  var getHelpControl = (help, ariaLabel, onClick) => {
4916
- return /* @__PURE__ */ jsx76(Popover, { content: /* @__PURE__ */ jsx76(Markdown5, { config: { link: { target: "_blank" } }, children: help }), children: /* @__PURE__ */ jsx76(ListItem10.IconButton, { partiallyInteractive: true, "aria-label": ariaLabel, onClick, children: /* @__PURE__ */ jsx76(QuestionMarkCircle, {}) }) });
5627
+ return /* @__PURE__ */ jsx78(Popover, { content: /* @__PURE__ */ jsx78(Markdown5, { config: { link: { target: "_blank" } }, children: help }), children: /* @__PURE__ */ jsx78(ListItem10.IconButton, { partiallyInteractive: true, "aria-label": ariaLabel, onClick, children: /* @__PURE__ */ jsx78(QuestionMarkCircle, {}) }) });
4917
5628
  };
4918
5629
  var ReviewRenderer_default = ReviewRenderer2;
4919
5630
 
4920
5631
  // ../renderers/src/SearchRenderer/BlockSearchRendererComponent.tsx
4921
5632
  import { Input as Input5, InputGroup as InputGroup4, List, ListItem as ListItem11, Markdown as Markdown6 } from "@transferwise/components";
4922
- import { useState as useState15 } from "react";
4923
- import { useIntl as useIntl17 } from "react-intl";
5633
+ import { useState as useState16 } from "react";
5634
+ import { useIntl as useIntl18 } from "react-intl";
4924
5635
 
4925
5636
  // ../renderers/src/messages/search.messages.ts
4926
- import { defineMessages as defineMessages12 } from "react-intl";
4927
- var search_messages_default = defineMessages12({
5637
+ import { defineMessages as defineMessages13 } from "react-intl";
5638
+ var search_messages_default = defineMessages13({
4928
5639
  loading: {
4929
5640
  id: "df.wise.SearchLayout.loading",
4930
5641
  defaultMessage: "Loading...",
@@ -4933,21 +5644,21 @@ var search_messages_default = defineMessages12({
4933
5644
  });
4934
5645
 
4935
5646
  // ../renderers/src/SearchRenderer/ErrorResult.tsx
4936
- import { useIntl as useIntl16 } from "react-intl";
5647
+ import { useIntl as useIntl17 } from "react-intl";
4937
5648
  import { Link as DSLink2 } from "@transferwise/components";
4938
- import { jsx as jsx77, jsxs as jsxs22 } from "react/jsx-runtime";
5649
+ import { jsx as jsx79, jsxs as jsxs23 } from "react/jsx-runtime";
4939
5650
  function ErrorResult({ state }) {
4940
- const intl = useIntl16();
4941
- return /* @__PURE__ */ jsxs22("p", { className: "m-t-2", children: [
5651
+ const intl = useIntl17();
5652
+ return /* @__PURE__ */ jsxs23("p", { className: "m-t-2", children: [
4942
5653
  intl.formatMessage(generic_error_messages_default.genericError),
4943
5654
  "\xA0",
4944
- /* @__PURE__ */ jsx77(DSLink2, { onClick: () => state.onRetry(), children: intl.formatMessage(generic_error_messages_default.retry) })
5655
+ /* @__PURE__ */ jsx79(DSLink2, { onClick: () => state.onRetry(), children: intl.formatMessage(generic_error_messages_default.retry) })
4945
5656
  ] });
4946
5657
  }
4947
5658
 
4948
5659
  // ../renderers/src/SearchRenderer/BlockSearchRendererComponent.tsx
4949
5660
  import { Search as Search2 } from "@transferwise/icons";
4950
- import { Fragment as Fragment11, jsx as jsx78, jsxs as jsxs23 } from "react/jsx-runtime";
5661
+ import { Fragment as Fragment11, jsx as jsx80, jsxs as jsxs24 } from "react/jsx-runtime";
4951
5662
  function BlockSearchRendererComponent({
4952
5663
  id,
4953
5664
  hint,
@@ -4962,10 +5673,10 @@ function BlockSearchRendererComponent({
4962
5673
  trackEvent,
4963
5674
  onChange
4964
5675
  }) {
4965
- const [hasSearched, setHasSearched] = useState15(false);
4966
- const { formatMessage } = useIntl17();
4967
- return /* @__PURE__ */ jsxs23("div", { className: getMargin(margin), children: [
4968
- /* @__PURE__ */ jsx78(
5676
+ const [hasSearched, setHasSearched] = useState16(false);
5677
+ const { formatMessage } = useIntl18();
5678
+ return /* @__PURE__ */ jsxs24("div", { className: getMargin(margin), children: [
5679
+ /* @__PURE__ */ jsx80(
4969
5680
  FieldInput_default,
4970
5681
  {
4971
5682
  id,
@@ -4976,7 +5687,7 @@ function BlockSearchRendererComponent({
4976
5687
  features,
4977
5688
  control,
4978
5689
  tags,
4979
- children: /* @__PURE__ */ jsx78(InputGroup4, { addonStart: { content: /* @__PURE__ */ jsx78(Search2, { size: 24 }) }, children: /* @__PURE__ */ jsx78(
5690
+ children: /* @__PURE__ */ jsx80(InputGroup4, { addonStart: { content: /* @__PURE__ */ jsx80(Search2, { size: 24 }) }, children: /* @__PURE__ */ jsx80(
4980
5691
  Input5,
4981
5692
  {
4982
5693
  id,
@@ -4996,7 +5707,7 @@ function BlockSearchRendererComponent({
4996
5707
  ) })
4997
5708
  }
4998
5709
  ),
4999
- isLoading ? /* @__PURE__ */ jsx78("span", { children: formatMessage(search_messages_default.loading) }) : /* @__PURE__ */ jsx78(SearchResultContent, { state, trackEvent })
5710
+ isLoading ? /* @__PURE__ */ jsx80("span", { children: formatMessage(search_messages_default.loading) }) : /* @__PURE__ */ jsx80(SearchResultContent, { state, trackEvent })
5000
5711
  ] });
5001
5712
  }
5002
5713
  function SearchResultContent({
@@ -5005,38 +5716,38 @@ function SearchResultContent({
5005
5716
  }) {
5006
5717
  switch (state.type) {
5007
5718
  case "error":
5008
- return /* @__PURE__ */ jsx78(ErrorResult, { state });
5719
+ return /* @__PURE__ */ jsx80(ErrorResult, { state });
5009
5720
  case "results":
5010
- return /* @__PURE__ */ jsx78(SearchResults, { state, trackEvent });
5721
+ return /* @__PURE__ */ jsx80(SearchResults, { state, trackEvent });
5011
5722
  case "layout":
5012
- return /* @__PURE__ */ jsxs23(Fragment11, { children: [
5723
+ return /* @__PURE__ */ jsxs24(Fragment11, { children: [
5013
5724
  " ",
5014
5725
  state.layout,
5015
5726
  " "
5016
5727
  ] });
5017
5728
  case "noResults":
5018
- return /* @__PURE__ */ jsx78(EmptySearchResult, { state });
5729
+ return /* @__PURE__ */ jsx80(EmptySearchResult, { state });
5019
5730
  case "pending":
5020
5731
  default:
5021
5732
  return null;
5022
5733
  }
5023
5734
  }
5024
5735
  function EmptySearchResult({ state }) {
5025
- return /* @__PURE__ */ jsx78(Markdown6, { className: "m-t-2", config: { link: { target: "_blank" } }, children: state.message });
5736
+ return /* @__PURE__ */ jsx80(Markdown6, { className: "m-t-2", config: { link: { target: "_blank" } }, children: state.message });
5026
5737
  }
5027
5738
  function SearchResults({
5028
5739
  state,
5029
5740
  trackEvent
5030
5741
  }) {
5031
- return /* @__PURE__ */ jsx78(List, { children: state.results.map((result) => {
5742
+ return /* @__PURE__ */ jsx80(List, { children: state.results.map((result) => {
5032
5743
  const { media } = result;
5033
- return /* @__PURE__ */ jsx78(
5744
+ return /* @__PURE__ */ jsx80(
5034
5745
  ListItem11,
5035
5746
  {
5036
5747
  title: result.title,
5037
5748
  subtitle: result.description,
5038
- media: media ? /* @__PURE__ */ jsx78(OptionMedia, { media, preferAvatar: false }) : void 0,
5039
- control: /* @__PURE__ */ jsx78(
5749
+ media: media ? /* @__PURE__ */ jsx80(OptionMedia, { media, preferAvatar: false }) : void 0,
5750
+ control: /* @__PURE__ */ jsx80(
5040
5751
  ListItem11.Navigation,
5041
5752
  {
5042
5753
  onClick: () => {
@@ -5057,9 +5768,9 @@ var BlockSearchRendererComponent_default = BlockSearchRendererComponent;
5057
5768
  // ../renderers/src/SearchRenderer/InlineSearchRendererComponent.tsx
5058
5769
  import { Markdown as Markdown7, Typeahead } from "@transferwise/components";
5059
5770
  import { Search as Search3 } from "@transferwise/icons";
5060
- import { useState as useState16 } from "react";
5061
- import { useIntl as useIntl18 } from "react-intl";
5062
- import { jsx as jsx79 } from "react/jsx-runtime";
5771
+ import { useState as useState17 } from "react";
5772
+ import { useIntl as useIntl19 } from "react-intl";
5773
+ import { jsx as jsx81 } from "react/jsx-runtime";
5063
5774
  function InlineSearchRenderer({
5064
5775
  id,
5065
5776
  hint,
@@ -5073,9 +5784,9 @@ function InlineSearchRenderer({
5073
5784
  onChange,
5074
5785
  trackEvent
5075
5786
  }) {
5076
- const [hasSearched, setHasSearched] = useState16(false);
5077
- const intl = useIntl18();
5078
- return /* @__PURE__ */ jsx79("div", { className: getMargin(margin), children: /* @__PURE__ */ jsx79(
5787
+ const [hasSearched, setHasSearched] = useState17(false);
5788
+ const intl = useIntl19();
5789
+ return /* @__PURE__ */ jsx81("div", { className: getMargin(margin), children: /* @__PURE__ */ jsx81(
5079
5790
  FieldInput_default,
5080
5791
  {
5081
5792
  id,
@@ -5086,7 +5797,7 @@ function InlineSearchRenderer({
5086
5797
  features,
5087
5798
  control,
5088
5799
  tags,
5089
- children: /* @__PURE__ */ jsx79(
5800
+ children: /* @__PURE__ */ jsx81(
5090
5801
  Typeahead,
5091
5802
  {
5092
5803
  id: "typeahead-input-id",
@@ -5095,10 +5806,10 @@ function InlineSearchRenderer({
5095
5806
  size: "md",
5096
5807
  placeholder: hint,
5097
5808
  maxHeight: 100,
5098
- footer: /* @__PURE__ */ jsx79(TypeaheadFooter, { state, isLoading }),
5809
+ footer: /* @__PURE__ */ jsx81(TypeaheadFooter, { state, isLoading }),
5099
5810
  multiple: false,
5100
5811
  clearable: false,
5101
- addon: /* @__PURE__ */ jsx79(Search3, { size: 24 }),
5812
+ addon: /* @__PURE__ */ jsx81(Search3, { size: 24 }),
5102
5813
  options: state.type === "results" ? state.results.map(mapResultToTypeaheadOption) : [],
5103
5814
  minQueryLength: 1,
5104
5815
  onChange: (values) => {
@@ -5135,33 +5846,33 @@ function mapResultToTypeaheadOption(result) {
5135
5846
  };
5136
5847
  }
5137
5848
  function TypeaheadFooter({ state, isLoading }) {
5138
- const { formatMessage } = useIntl18();
5849
+ const { formatMessage } = useIntl19();
5139
5850
  if (state.type === "layout") {
5140
- return /* @__PURE__ */ jsx79("div", { className: "m-x-1 m-y-1", children: state.layout });
5851
+ return /* @__PURE__ */ jsx81("div", { className: "m-x-1 m-y-1", children: state.layout });
5141
5852
  }
5142
5853
  if (state.type === "noResults") {
5143
- return /* @__PURE__ */ jsx79(Markdown7, { className: "m-t-2 m-x-2", config: { link: { target: "_blank" } }, children: state.message });
5854
+ return /* @__PURE__ */ jsx81(Markdown7, { className: "m-t-2 m-x-2", config: { link: { target: "_blank" } }, children: state.message });
5144
5855
  }
5145
5856
  if (state.type === "error") {
5146
- return /* @__PURE__ */ jsx79("div", { className: "m-t-2 m-x-2", children: /* @__PURE__ */ jsx79(ErrorResult, { state }) });
5857
+ return /* @__PURE__ */ jsx81("div", { className: "m-t-2 m-x-2", children: /* @__PURE__ */ jsx81(ErrorResult, { state }) });
5147
5858
  }
5148
5859
  if (state.type === "pending" || isLoading) {
5149
- return /* @__PURE__ */ jsx79("p", { className: "m-t-2 m-x-2", children: formatMessage(search_messages_default.loading) });
5860
+ return /* @__PURE__ */ jsx81("p", { className: "m-t-2 m-x-2", children: formatMessage(search_messages_default.loading) });
5150
5861
  }
5151
5862
  return null;
5152
5863
  }
5153
5864
  var InlineSearchRendererComponent_default = InlineSearchRenderer;
5154
5865
 
5155
5866
  // ../renderers/src/SearchRenderer/SearchRenderer.tsx
5156
- import { jsx as jsx80 } from "react/jsx-runtime";
5867
+ import { jsx as jsx82 } from "react/jsx-runtime";
5157
5868
  var SearchRenderer = {
5158
5869
  canRenderType: "search",
5159
- render: (props) => props.control === "inline" ? /* @__PURE__ */ jsx80(InlineSearchRendererComponent_default, __spreadValues({}, props)) : /* @__PURE__ */ jsx80(BlockSearchRendererComponent_default, __spreadValues({}, props))
5870
+ render: (props) => props.control === "inline" ? /* @__PURE__ */ jsx82(InlineSearchRendererComponent_default, __spreadValues({}, props)) : /* @__PURE__ */ jsx82(BlockSearchRendererComponent_default, __spreadValues({}, props))
5160
5871
  };
5161
5872
  var SearchRenderer_default = SearchRenderer;
5162
5873
 
5163
5874
  // ../renderers/src/SectionRenderer.tsx
5164
- var import_classnames26 = __toESM(require_classnames());
5875
+ var import_classnames28 = __toESM(require_classnames());
5165
5876
  import { Header as Header7 } from "@transferwise/components";
5166
5877
 
5167
5878
  // ../renderers/src/utils/getHeaderAction.tsx
@@ -5186,16 +5897,16 @@ var getHeaderAction2 = (callToAction) => {
5186
5897
  };
5187
5898
 
5188
5899
  // ../renderers/src/SectionRenderer.tsx
5189
- import { jsx as jsx81, jsxs as jsxs24 } from "react/jsx-runtime";
5900
+ import { jsx as jsx83, jsxs as jsxs25 } from "react/jsx-runtime";
5190
5901
  var SectionRenderer = {
5191
5902
  canRenderType: "section",
5192
5903
  render: ({ children, callToAction, margin, title, control, tags }) => {
5193
- return /* @__PURE__ */ jsxs24(
5904
+ return /* @__PURE__ */ jsxs25(
5194
5905
  "section",
5195
5906
  {
5196
- className: (0, import_classnames26.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
5907
+ className: (0, import_classnames28.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
5197
5908
  children: [
5198
- (title || callToAction) && /* @__PURE__ */ jsx81(Header7, { title: title != null ? title : "", action: getHeaderAction2(callToAction) }),
5909
+ (title || callToAction) && /* @__PURE__ */ jsx83(Header7, { title: title != null ? title : "", action: getHeaderAction2(callToAction) }),
5199
5910
  children
5200
5911
  ]
5201
5912
  }
@@ -5206,7 +5917,7 @@ var SectionRenderer_default = SectionRenderer;
5206
5917
 
5207
5918
  // ../renderers/src/SelectInputRenderer/RadioInputRendererComponent.tsx
5208
5919
  import { RadioGroup } from "@transferwise/components";
5209
- import { Fragment as Fragment12, jsx as jsx82, jsxs as jsxs25 } from "react/jsx-runtime";
5920
+ import { Fragment as Fragment12, jsx as jsx84, jsxs as jsxs26 } from "react/jsx-runtime";
5210
5921
  function RadioInputRendererComponent(props) {
5211
5922
  const {
5212
5923
  id,
@@ -5223,8 +5934,8 @@ function RadioInputRendererComponent(props) {
5223
5934
  tags,
5224
5935
  onSelect
5225
5936
  } = props;
5226
- return /* @__PURE__ */ jsxs25(Fragment12, { children: [
5227
- /* @__PURE__ */ jsx82(
5937
+ return /* @__PURE__ */ jsxs26(Fragment12, { children: [
5938
+ /* @__PURE__ */ jsx84(
5228
5939
  FieldInput_default,
5229
5940
  {
5230
5941
  id,
@@ -5235,7 +5946,7 @@ function RadioInputRendererComponent(props) {
5235
5946
  features,
5236
5947
  control,
5237
5948
  tags,
5238
- children: /* @__PURE__ */ jsx82("span", { children: /* @__PURE__ */ jsx82(
5949
+ children: /* @__PURE__ */ jsx84("span", { children: /* @__PURE__ */ jsx84(
5239
5950
  RadioGroup,
5240
5951
  {
5241
5952
  name: id,
@@ -5244,7 +5955,7 @@ function RadioInputRendererComponent(props) {
5244
5955
  value: index,
5245
5956
  secondary: option.description,
5246
5957
  disabled: option.disabled || disabled,
5247
- avatar: /* @__PURE__ */ jsx82(OptionMedia, { media: option.media, preferAvatar: false })
5958
+ avatar: /* @__PURE__ */ jsx84(OptionMedia, { media: option.media, preferAvatar: false })
5248
5959
  })),
5249
5960
  selectedValue: selectedIndex != null ? selectedIndex : void 0,
5250
5961
  onChange: onSelect
@@ -5260,7 +5971,7 @@ function RadioInputRendererComponent(props) {
5260
5971
  // ../renderers/src/SelectInputRenderer/TabInputRendererComponent.tsx
5261
5972
  import { Tabs } from "@transferwise/components";
5262
5973
  import { useEffect as useEffect12 } from "react";
5263
- import { Fragment as Fragment13, jsx as jsx83, jsxs as jsxs26 } from "react/jsx-runtime";
5974
+ import { Fragment as Fragment13, jsx as jsx85, jsxs as jsxs27 } from "react/jsx-runtime";
5264
5975
  function TabInputRendererComponent(props) {
5265
5976
  const {
5266
5977
  id,
@@ -5282,8 +5993,8 @@ function TabInputRendererComponent(props) {
5282
5993
  onSelect(0);
5283
5994
  }
5284
5995
  }, [selectedIndex, onSelect, options.length]);
5285
- return /* @__PURE__ */ jsxs26(Fragment13, { children: [
5286
- /* @__PURE__ */ jsx83(
5996
+ return /* @__PURE__ */ jsxs27(Fragment13, { children: [
5997
+ /* @__PURE__ */ jsx85(
5287
5998
  FieldInput_default,
5288
5999
  {
5289
6000
  id,
@@ -5294,7 +6005,7 @@ function TabInputRendererComponent(props) {
5294
6005
  features,
5295
6006
  control,
5296
6007
  tags,
5297
- children: /* @__PURE__ */ jsx83(
6008
+ children: /* @__PURE__ */ jsx85(
5298
6009
  Tabs,
5299
6010
  {
5300
6011
  name: id,
@@ -5303,7 +6014,7 @@ function TabInputRendererComponent(props) {
5303
6014
  title: option.title,
5304
6015
  // if we pass null, we get some props-types console errors
5305
6016
  // eslint-disable-next-line react/jsx-no-useless-fragment
5306
- content: /* @__PURE__ */ jsx83(Fragment13, {}),
6017
+ content: /* @__PURE__ */ jsx85(Fragment13, {}),
5307
6018
  disabled: option.disabled || disabled
5308
6019
  })),
5309
6020
  onTabSelect: onSelect
@@ -5318,7 +6029,7 @@ var isValidIndex2 = (index, options) => index !== null && index >= 0 && index <
5318
6029
 
5319
6030
  // ../renderers/src/SelectInputRenderer/SelectInputRendererComponent.tsx
5320
6031
  import { SelectInput as SelectInput2, SelectInputOptionContent as SelectInputOptionContent2 } from "@transferwise/components";
5321
- import { Fragment as Fragment14, jsx as jsx84, jsxs as jsxs27 } from "react/jsx-runtime";
6032
+ import { Fragment as Fragment14, jsx as jsx86, jsxs as jsxs28 } from "react/jsx-runtime";
5322
6033
  function SelectInputRendererComponent(props) {
5323
6034
  const {
5324
6035
  id,
@@ -5361,13 +6072,13 @@ function SelectInputRendererComponent(props) {
5361
6072
  } : {
5362
6073
  title: option.title,
5363
6074
  description: option.description,
5364
- icon: /* @__PURE__ */ jsx84(OptionMedia, { media: option.media, preferAvatar: false })
6075
+ icon: /* @__PURE__ */ jsx86(OptionMedia, { media: option.media, preferAvatar: false })
5365
6076
  };
5366
- return /* @__PURE__ */ jsx84(SelectInputOptionContent2, __spreadValues({}, contentProps));
6077
+ return /* @__PURE__ */ jsx86(SelectInputOptionContent2, __spreadValues({}, contentProps));
5367
6078
  };
5368
6079
  const extraProps = { autoComplete };
5369
- return /* @__PURE__ */ jsxs27(Fragment14, { children: [
5370
- /* @__PURE__ */ jsx84(
6080
+ return /* @__PURE__ */ jsxs28(Fragment14, { children: [
6081
+ /* @__PURE__ */ jsx86(
5371
6082
  FieldInput_default,
5372
6083
  {
5373
6084
  id,
@@ -5378,7 +6089,7 @@ function SelectInputRendererComponent(props) {
5378
6089
  features,
5379
6090
  control,
5380
6091
  tags,
5381
- children: /* @__PURE__ */ jsx84(
6092
+ children: /* @__PURE__ */ jsx86(
5382
6093
  SelectInput2,
5383
6094
  __spreadValues({
5384
6095
  name: id,
@@ -5401,7 +6112,7 @@ function SelectInputRendererComponent(props) {
5401
6112
  // ../renderers/src/SelectInputRenderer/SegmentedInputRendererComponent.tsx
5402
6113
  import { useEffect as useEffect13 } from "react";
5403
6114
  import { SegmentedControl } from "@transferwise/components";
5404
- import { Fragment as Fragment15, jsx as jsx85, jsxs as jsxs28 } from "react/jsx-runtime";
6115
+ import { Fragment as Fragment15, jsx as jsx87, jsxs as jsxs29 } from "react/jsx-runtime";
5405
6116
  function SegmentedInputRendererComponent(props) {
5406
6117
  const {
5407
6118
  id,
@@ -5422,8 +6133,8 @@ function SegmentedInputRendererComponent(props) {
5422
6133
  onSelect(0);
5423
6134
  }
5424
6135
  }, [selectedIndex, onSelect, options.length]);
5425
- return /* @__PURE__ */ jsxs28(Fragment15, { children: [
5426
- /* @__PURE__ */ jsx85(
6136
+ return /* @__PURE__ */ jsxs29(Fragment15, { children: [
6137
+ /* @__PURE__ */ jsx87(
5427
6138
  FieldInput_default,
5428
6139
  {
5429
6140
  id,
@@ -5434,7 +6145,7 @@ function SegmentedInputRendererComponent(props) {
5434
6145
  features,
5435
6146
  control,
5436
6147
  tags,
5437
- children: /* @__PURE__ */ jsx85(
6148
+ children: /* @__PURE__ */ jsx87(
5438
6149
  SegmentedControl,
5439
6150
  {
5440
6151
  name: `${id}-segmented-control`,
@@ -5451,14 +6162,14 @@ function SegmentedInputRendererComponent(props) {
5451
6162
  )
5452
6163
  }
5453
6164
  ),
5454
- /* @__PURE__ */ jsx85("div", { id: `${id}-children`, children })
6165
+ /* @__PURE__ */ jsx87("div", { id: `${id}-children`, children })
5455
6166
  ] });
5456
6167
  }
5457
6168
  var isValidIndex3 = (index, options) => index !== null && index >= 0 && index < options;
5458
6169
 
5459
6170
  // ../renderers/src/SelectInputRenderer/RadioItemRendererComponent.tsx
5460
6171
  import { Header as Header8, InlineAlert as InlineAlert4, List as List2, ListItem as ListItem12 } from "@transferwise/components";
5461
- import { jsx as jsx86, jsxs as jsxs29 } from "react/jsx-runtime";
6172
+ import { jsx as jsx88, jsxs as jsxs30 } from "react/jsx-runtime";
5462
6173
  function RadioItemRendererComponent(props) {
5463
6174
  const {
5464
6175
  id,
@@ -5474,22 +6185,22 @@ function RadioItemRendererComponent(props) {
5474
6185
  onSelect
5475
6186
  } = props;
5476
6187
  const { ref } = useScrollToError(validationState, features);
5477
- return /* @__PURE__ */ jsxs29("div", { ref, className: controlAndTagsToCSSClass(props), children: [
5478
- rootTitle && /* @__PURE__ */ jsx86(
6188
+ return /* @__PURE__ */ jsxs30("div", { ref, className: controlAndTagsToCSSClass(props), children: [
6189
+ rootTitle && /* @__PURE__ */ jsx88(
5479
6190
  Header8,
5480
6191
  {
5481
6192
  as: "h2",
5482
- title: help ? /* @__PURE__ */ jsx86(LabelContentWithHelp, { text: rootTitle, help }) : rootTitle
6193
+ title: help ? /* @__PURE__ */ jsx88(LabelContentWithHelp, { text: rootTitle, help }) : rootTitle
5483
6194
  }
5484
6195
  ),
5485
- rootDescription && /* @__PURE__ */ jsx86("p", { children: rootDescription }),
5486
- /* @__PURE__ */ jsx86(List2, { children: options.map(
5487
- ({ title, description, additionalText, inlineAlert, disabled, media, supportingValues }, index) => /* @__PURE__ */ jsx86(
6196
+ rootDescription && /* @__PURE__ */ jsx88("p", { children: rootDescription }),
6197
+ /* @__PURE__ */ jsx88(List2, { children: options.map(
6198
+ ({ title, description, additionalText, inlineAlert, disabled, media, supportingValues }, index) => /* @__PURE__ */ jsx88(
5488
6199
  ListItem12,
5489
6200
  __spreadValues({
5490
6201
  title,
5491
6202
  subtitle: description,
5492
- control: /* @__PURE__ */ jsx86(
6203
+ control: /* @__PURE__ */ jsx88(
5493
6204
  ListItem12.Radio,
5494
6205
  {
5495
6206
  name: title,
@@ -5505,50 +6216,50 @@ function RadioItemRendererComponent(props) {
5505
6216
  title
5506
6217
  )
5507
6218
  ) }, `${id}-${selectedIndex}`),
5508
- (validationState == null ? void 0 : validationState.status) === "invalid" && /* @__PURE__ */ jsx86(InlineAlert4, { type: "negative", children: validationState.message }),
6219
+ (validationState == null ? void 0 : validationState.status) === "invalid" && /* @__PURE__ */ jsx88(InlineAlert4, { type: "negative", children: validationState.message }),
5509
6220
  children
5510
6221
  ] });
5511
6222
  }
5512
6223
 
5513
6224
  // ../renderers/src/SelectInputRenderer/SelectInputRenderer.tsx
5514
- import { jsx as jsx87 } from "react/jsx-runtime";
6225
+ import { jsx as jsx89 } from "react/jsx-runtime";
5515
6226
  var SelectInputRenderer = {
5516
6227
  canRenderType: "input-select",
5517
6228
  render: (props) => {
5518
6229
  switch (props.control) {
5519
6230
  case "radio":
5520
- return /* @__PURE__ */ jsx87(RadioInputRendererComponent, __spreadValues({}, props));
6231
+ return /* @__PURE__ */ jsx89(RadioInputRendererComponent, __spreadValues({}, props));
5521
6232
  case "radio-item":
5522
- return /* @__PURE__ */ jsx87(RadioItemRendererComponent, __spreadValues({}, props));
6233
+ return /* @__PURE__ */ jsx89(RadioItemRendererComponent, __spreadValues({}, props));
5523
6234
  case "tab":
5524
- return props.options.length > 3 ? /* @__PURE__ */ jsx87(SelectInputRendererComponent, __spreadValues({}, props)) : /* @__PURE__ */ jsx87(TabInputRendererComponent, __spreadValues({}, props));
6235
+ return props.options.length > 3 ? /* @__PURE__ */ jsx89(SelectInputRendererComponent, __spreadValues({}, props)) : /* @__PURE__ */ jsx89(TabInputRendererComponent, __spreadValues({}, props));
5525
6236
  case "segmented":
5526
- return props.options.length > 3 ? /* @__PURE__ */ jsx87(SelectInputRendererComponent, __spreadValues({}, props)) : /* @__PURE__ */ jsx87(SegmentedInputRendererComponent, __spreadValues({}, props));
6237
+ return props.options.length > 3 ? /* @__PURE__ */ jsx89(SelectInputRendererComponent, __spreadValues({}, props)) : /* @__PURE__ */ jsx89(SegmentedInputRendererComponent, __spreadValues({}, props));
5527
6238
  case "select":
5528
6239
  default:
5529
- return /* @__PURE__ */ jsx87(SelectInputRendererComponent, __spreadValues({}, props));
6240
+ return /* @__PURE__ */ jsx89(SelectInputRendererComponent, __spreadValues({}, props));
5530
6241
  }
5531
6242
  }
5532
6243
  };
5533
6244
  var SelectInputRenderer_default = SelectInputRenderer;
5534
6245
 
5535
6246
  // ../renderers/src/StatusListRenderer.tsx
5536
- var import_classnames27 = __toESM(require_classnames());
6247
+ var import_classnames29 = __toESM(require_classnames());
5537
6248
  import { AvatarView as AvatarView4, Header as Header9, ListItem as ListItem13 } from "@transferwise/components";
5538
- import { jsx as jsx88, jsxs as jsxs30 } from "react/jsx-runtime";
6249
+ import { jsx as jsx90, jsxs as jsxs31 } from "react/jsx-runtime";
5539
6250
  var StatusListRenderer = {
5540
6251
  canRenderType: "status-list",
5541
- render: ({ margin, items, title, control, tags }) => /* @__PURE__ */ jsxs30("div", { className: (0, import_classnames27.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
5542
- title ? /* @__PURE__ */ jsx88(Header9, { title }) : null,
6252
+ render: ({ margin, items, title, control, tags }) => /* @__PURE__ */ jsxs31("div", { className: (0, import_classnames29.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
6253
+ title ? /* @__PURE__ */ jsx90(Header9, { title }) : null,
5543
6254
  items.map((item) => {
5544
6255
  const { callToAction, description, title: itemTitle } = item;
5545
- return /* @__PURE__ */ jsx88(
6256
+ return /* @__PURE__ */ jsx90(
5546
6257
  ListItem13,
5547
6258
  {
5548
6259
  title: itemTitle,
5549
6260
  subtitle: description,
5550
- media: /* @__PURE__ */ jsx88(StatusListItemMedia, __spreadValues({}, item)),
5551
- additionalInfo: callToAction ? /* @__PURE__ */ jsx88(
6261
+ media: /* @__PURE__ */ jsx90(StatusListItemMedia, __spreadValues({}, item)),
6262
+ additionalInfo: callToAction ? /* @__PURE__ */ jsx90(
5552
6263
  ListItem13.AdditionalInfo,
5553
6264
  {
5554
6265
  action: __spreadValues({
@@ -5567,10 +6278,10 @@ var StatusListItemMedia = ({ icon, status }) => {
5567
6278
  return void 0;
5568
6279
  }
5569
6280
  if ("name" in icon) {
5570
- return /* @__PURE__ */ jsx88(AvatarView4, { badge: { status: mapStatus(status) }, children: /* @__PURE__ */ jsx88(DynamicIcon_default, { name: icon.name }) });
6281
+ return /* @__PURE__ */ jsx90(AvatarView4, { badge: { status: mapStatus(status) }, children: /* @__PURE__ */ jsx90(DynamicIcon_default, { name: icon.name }) });
5571
6282
  }
5572
6283
  if ("text" in icon) {
5573
- return /* @__PURE__ */ jsx88(AvatarView4, { badge: { status: mapStatus(status) }, children: icon.text });
6284
+ return /* @__PURE__ */ jsx90(AvatarView4, { badge: { status: mapStatus(status) }, children: icon.text });
5574
6285
  }
5575
6286
  return void 0;
5576
6287
  };
@@ -5587,7 +6298,7 @@ var mapStatus = (status) => {
5587
6298
  var StatusListRenderer_default = StatusListRenderer;
5588
6299
 
5589
6300
  // ../renderers/src/step/SplashCelebrationStepRenderer.tsx
5590
- var import_classnames28 = __toESM(require_classnames());
6301
+ var import_classnames30 = __toESM(require_classnames());
5591
6302
 
5592
6303
  // ../renderers/src/utils/useCustomTheme.ts
5593
6304
  import { useTheme } from "@wise/components-theming";
@@ -5609,12 +6320,12 @@ var useCustomTheme = (theme, trackEvent) => {
5609
6320
 
5610
6321
  // ../renderers/src/step/StepHeader.tsx
5611
6322
  import { Title as Title2 } from "@transferwise/components";
5612
- import { Fragment as Fragment16, jsx as jsx89, jsxs as jsxs31 } from "react/jsx-runtime";
6323
+ import { Fragment as Fragment16, jsx as jsx91, jsxs as jsxs32 } from "react/jsx-runtime";
5613
6324
  var StepHeader = ({ title, description, tags }) => {
5614
6325
  const { titleType, alignmentClassName } = getHeaderStyle(tags);
5615
- return /* @__PURE__ */ jsxs31(Fragment16, { children: [
5616
- title ? /* @__PURE__ */ jsx89(Title2, { as: "h1", type: titleType, className: `${alignmentClassName} m-b-2`, children: title }) : void 0,
5617
- description ? /* @__PURE__ */ jsx89("p", { className: `${alignmentClassName} np-text-body-large`, children: description }) : void 0
6326
+ return /* @__PURE__ */ jsxs32(Fragment16, { children: [
6327
+ title ? /* @__PURE__ */ jsx91(Title2, { as: "h1", type: titleType, className: `${alignmentClassName} m-b-2`, children: title }) : void 0,
6328
+ description ? /* @__PURE__ */ jsx91("p", { className: `${alignmentClassName} np-text-body-large`, children: description }) : void 0
5618
6329
  ] });
5619
6330
  };
5620
6331
  var getHeaderStyle = (tags) => {
@@ -5627,11 +6338,11 @@ var getHeaderStyle = (tags) => {
5627
6338
  // ../renderers/src/step/topbar/BackButton.tsx
5628
6339
  import { IconButton as IconButton2 } from "@transferwise/components";
5629
6340
  import { ArrowLeft } from "@transferwise/icons";
5630
- import { useIntl as useIntl19 } from "react-intl";
6341
+ import { useIntl as useIntl20 } from "react-intl";
5631
6342
 
5632
6343
  // ../renderers/src/messages/back.messages.ts
5633
- import { defineMessages as defineMessages13 } from "react-intl";
5634
- var back_messages_default = defineMessages13({
6344
+ import { defineMessages as defineMessages14 } from "react-intl";
6345
+ var back_messages_default = defineMessages14({
5635
6346
  back: {
5636
6347
  id: "df.wise.back.label",
5637
6348
  defaultMessage: "Back",
@@ -5640,30 +6351,30 @@ var back_messages_default = defineMessages13({
5640
6351
  });
5641
6352
 
5642
6353
  // ../renderers/src/step/topbar/BackButton.tsx
5643
- import { jsx as jsx90, jsxs as jsxs32 } from "react/jsx-runtime";
6354
+ import { jsx as jsx92, jsxs as jsxs33 } from "react/jsx-runtime";
5644
6355
  function BackButton({ title, onClick }) {
5645
- const { formatMessage } = useIntl19();
5646
- return /* @__PURE__ */ jsxs32(IconButton2, { className: "df-back-button", priority: "tertiary", onClick, children: [
5647
- /* @__PURE__ */ jsx90("span", { className: "sr-only", children: title != null ? title : formatMessage(back_messages_default.back) }),
5648
- /* @__PURE__ */ jsx90(ArrowLeft, {})
6356
+ const { formatMessage } = useIntl20();
6357
+ return /* @__PURE__ */ jsxs33(IconButton2, { className: "df-back-button", priority: "tertiary", onClick, children: [
6358
+ /* @__PURE__ */ jsx92("span", { className: "sr-only", children: title != null ? title : formatMessage(back_messages_default.back) }),
6359
+ /* @__PURE__ */ jsx92(ArrowLeft, {})
5649
6360
  ] });
5650
6361
  }
5651
6362
 
5652
6363
  // ../renderers/src/step/topbar/Toolbar.tsx
5653
6364
  import { Button as Button9, IconButton as IconButton3 } from "@transferwise/components";
5654
- import { jsx as jsx91, jsxs as jsxs33 } from "react/jsx-runtime";
6365
+ import { jsx as jsx93, jsxs as jsxs34 } from "react/jsx-runtime";
5655
6366
  var Toolbar = ({ items }) => {
5656
- return (items == null ? void 0 : items.length) > 0 ? /* @__PURE__ */ jsx91("div", { className: "df-toolbar", children: items.map((item, index) => /* @__PURE__ */ jsx91(ToolbarButton, __spreadValues({}, item), `${item.type}-${index}-${item.title}`)) }) : null;
6367
+ return (items == null ? void 0 : items.length) > 0 ? /* @__PURE__ */ jsx93("div", { className: "df-toolbar", children: items.map((item, index) => /* @__PURE__ */ jsx93(ToolbarButton, __spreadValues({}, item), `${item.type}-${index}-${item.title}`)) }) : null;
5657
6368
  };
5658
6369
  function ToolbarButton(props) {
5659
- return prefersMedia(props.control) ? /* @__PURE__ */ jsx91(MediaToolbarButton, __spreadValues({}, props)) : /* @__PURE__ */ jsx91(TextToolbarButton, __spreadValues({}, props));
6370
+ return prefersMedia(props.control) ? /* @__PURE__ */ jsx93(MediaToolbarButton, __spreadValues({}, props)) : /* @__PURE__ */ jsx93(TextToolbarButton, __spreadValues({}, props));
5660
6371
  }
5661
6372
  function MediaToolbarButton(props) {
5662
6373
  var _a;
5663
6374
  const { context, control, media, accessibilityDescription, disabled, onClick } = props;
5664
6375
  const priority = getIconButtonPriority(control);
5665
6376
  const type = getSentiment2(context);
5666
- return /* @__PURE__ */ jsxs33(
6377
+ return /* @__PURE__ */ jsxs34(
5667
6378
  IconButton3,
5668
6379
  {
5669
6380
  className: "df-toolbar-button",
@@ -5673,7 +6384,7 @@ function MediaToolbarButton(props) {
5673
6384
  type,
5674
6385
  onClick,
5675
6386
  children: [
5676
- accessibilityDescription ? /* @__PURE__ */ jsx91("span", { className: "sr-only", children: accessibilityDescription }) : null,
6387
+ accessibilityDescription ? /* @__PURE__ */ jsx93("span", { className: "sr-only", children: accessibilityDescription }) : null,
5677
6388
  media ? (_a = getAddonStartMedia(media)) == null ? void 0 : _a.value : null
5678
6389
  ]
5679
6390
  }
@@ -5684,7 +6395,7 @@ function TextToolbarButton(props) {
5684
6395
  const addonStart = media ? getAddonStartMedia(media) : void 0;
5685
6396
  const priority = getPriority2(control);
5686
6397
  const sentiment = getSentiment2(context);
5687
- return /* @__PURE__ */ jsx91(
6398
+ return /* @__PURE__ */ jsx93(
5688
6399
  Button9,
5689
6400
  {
5690
6401
  v2: true,
@@ -5714,18 +6425,18 @@ var getIconButtonPriority = (control) => {
5714
6425
  };
5715
6426
 
5716
6427
  // ../renderers/src/step/topbar/TopBar.tsx
5717
- import { jsx as jsx92, jsxs as jsxs34 } from "react/jsx-runtime";
6428
+ import { jsx as jsx94, jsxs as jsxs35 } from "react/jsx-runtime";
5718
6429
  function TopBar({ back, toolbar, tags }) {
5719
6430
  const isBackAllowed = !(tags == null ? void 0 : tags.includes("non-dismissible"));
5720
6431
  const backCTA = isBackAllowed ? back : void 0;
5721
- return backCTA || toolbar ? /* @__PURE__ */ jsxs34("div", { className: "d-flex m-b-2", children: [
5722
- backCTA ? /* @__PURE__ */ jsx92(BackButton, __spreadValues({}, backCTA)) : null,
5723
- toolbar ? /* @__PURE__ */ jsx92(Toolbar, __spreadValues({}, toolbar)) : null
6432
+ return backCTA || toolbar ? /* @__PURE__ */ jsxs35("div", { className: "d-flex m-b-2", children: [
6433
+ backCTA ? /* @__PURE__ */ jsx94(BackButton, __spreadValues({}, backCTA)) : null,
6434
+ toolbar ? /* @__PURE__ */ jsx94(Toolbar, __spreadValues({}, toolbar)) : null
5724
6435
  ] }) : null;
5725
6436
  }
5726
6437
 
5727
6438
  // ../renderers/src/step/SplashCelebrationStepRenderer.tsx
5728
- import { jsx as jsx93, jsxs as jsxs35 } from "react/jsx-runtime";
6439
+ import { jsx as jsx95, jsxs as jsxs36 } from "react/jsx-runtime";
5729
6440
  var SplashCelebrationStepRenderer = {
5730
6441
  canRenderType: "step",
5731
6442
  canRender: ({ control }) => control === "splash-celebration",
@@ -5734,23 +6445,23 @@ var SplashCelebrationStepRenderer = {
5734
6445
  function SplashCelebrationStepRendererComponent(props) {
5735
6446
  const { back, title, description, toolbar, children, footer, control, tags, trackEvent } = props;
5736
6447
  useCustomTheme("forest-green", trackEvent);
5737
- return /* @__PURE__ */ jsxs35(
6448
+ return /* @__PURE__ */ jsxs36(
5738
6449
  "div",
5739
6450
  {
5740
- className: (0, import_classnames28.default)("splash-screen", "m-t-5", controlAndTagsToCSSClass({ control, tags })),
6451
+ className: (0, import_classnames30.default)("splash-screen", "m-t-5", controlAndTagsToCSSClass({ control, tags })),
5741
6452
  children: [
5742
- /* @__PURE__ */ jsx93(TopBar, { back, toolbar, tags }),
5743
- title || description ? /* @__PURE__ */ jsx93("div", { className: "m-b-4", children: /* @__PURE__ */ jsx93(StepHeader, { title, description, tags }) }) : void 0,
6453
+ /* @__PURE__ */ jsx95(TopBar, { back, toolbar, tags }),
6454
+ title || description ? /* @__PURE__ */ jsx95("div", { className: "m-b-4", children: /* @__PURE__ */ jsx95(StepHeader, { title, description, tags }) }) : void 0,
5744
6455
  children,
5745
- /* @__PURE__ */ jsx93(StepFooter, { footer, tags })
6456
+ /* @__PURE__ */ jsx95(StepFooter, { footer, tags })
5746
6457
  ]
5747
6458
  }
5748
6459
  );
5749
6460
  }
5750
6461
 
5751
6462
  // ../renderers/src/step/SplashStepRenderer.tsx
5752
- var import_classnames29 = __toESM(require_classnames());
5753
- import { jsx as jsx94, jsxs as jsxs36 } from "react/jsx-runtime";
6463
+ var import_classnames31 = __toESM(require_classnames());
6464
+ import { jsx as jsx96, jsxs as jsxs37 } from "react/jsx-runtime";
5754
6465
  var SplashStepRenderer = {
5755
6466
  canRenderType: "step",
5756
6467
  canRender: ({ control }) => control === "splash",
@@ -5758,15 +6469,15 @@ var SplashStepRenderer = {
5758
6469
  };
5759
6470
  function SplashStepRendererComponent(props) {
5760
6471
  const { back, title, description, toolbar, children, footer, control, tags } = props;
5761
- return /* @__PURE__ */ jsxs36(
6472
+ return /* @__PURE__ */ jsxs37(
5762
6473
  "div",
5763
6474
  {
5764
- className: (0, import_classnames29.default)("splash-screen", "m-t-5", controlAndTagsToCSSClass({ control, tags })),
6475
+ className: (0, import_classnames31.default)("splash-screen", "m-t-5", controlAndTagsToCSSClass({ control, tags })),
5765
6476
  children: [
5766
- /* @__PURE__ */ jsx94(TopBar, { back, toolbar, tags }),
5767
- title || description ? /* @__PURE__ */ jsx94("div", { className: "m-b-4", children: /* @__PURE__ */ jsx94(StepHeader, { title, description, tags }) }) : void 0,
6477
+ /* @__PURE__ */ jsx96(TopBar, { back, toolbar, tags }),
6478
+ title || description ? /* @__PURE__ */ jsx96("div", { className: "m-b-4", children: /* @__PURE__ */ jsx96(StepHeader, { title, description, tags }) }) : void 0,
5768
6479
  children,
5769
- /* @__PURE__ */ jsx94(StepFooter, { footer, tags })
6480
+ /* @__PURE__ */ jsx96(StepFooter, { footer, tags })
5770
6481
  ]
5771
6482
  }
5772
6483
  );
@@ -5774,46 +6485,46 @@ function SplashStepRendererComponent(props) {
5774
6485
 
5775
6486
  // ../renderers/src/step/StepRenderer.tsx
5776
6487
  import { Alert } from "@transferwise/components";
5777
- import { jsx as jsx95, jsxs as jsxs37 } from "react/jsx-runtime";
6488
+ import { jsx as jsx97, jsxs as jsxs38 } from "react/jsx-runtime";
5778
6489
  var StepRenderer = {
5779
6490
  canRenderType: "step",
5780
6491
  render: StepRendererComponent
5781
6492
  };
5782
6493
  function StepRendererComponent(props) {
5783
6494
  const { back, description, error, title, children, toolbar, footer, control, tags } = props;
5784
- return /* @__PURE__ */ jsxs37("div", { className: controlAndTagsToCSSClass({ control, tags }), children: [
5785
- /* @__PURE__ */ jsx95(TopBar, { back, toolbar, tags }),
5786
- title || description ? /* @__PURE__ */ jsx95("div", { className: "m-b-4", children: /* @__PURE__ */ jsx95(StepHeader, { title, description, tags }) }) : void 0,
5787
- error ? /* @__PURE__ */ jsx95(Alert, { type: "negative", className: "m-b-2", message: error }) : null,
6495
+ return /* @__PURE__ */ jsxs38("div", { className: controlAndTagsToCSSClass({ control, tags }), children: [
6496
+ /* @__PURE__ */ jsx97(TopBar, { back, toolbar, tags }),
6497
+ title || description ? /* @__PURE__ */ jsx97("div", { className: "m-b-4", children: /* @__PURE__ */ jsx97(StepHeader, { title, description, tags }) }) : void 0,
6498
+ error ? /* @__PURE__ */ jsx97(Alert, { type: "negative", className: "m-b-2", message: error }) : null,
5788
6499
  children,
5789
- /* @__PURE__ */ jsx95(StepFooter, { footer, tags })
6500
+ /* @__PURE__ */ jsx97(StepFooter, { footer, tags })
5790
6501
  ] });
5791
6502
  }
5792
6503
 
5793
6504
  // ../renderers/src/TabsRenderer.tsx
5794
- var import_classnames30 = __toESM(require_classnames());
6505
+ var import_classnames32 = __toESM(require_classnames());
5795
6506
  import { Chips as Chips2, SegmentedControl as SegmentedControl2, Tabs as Tabs2 } from "@transferwise/components";
5796
- import { useState as useState17 } from "react";
5797
- import { jsx as jsx96, jsxs as jsxs38 } from "react/jsx-runtime";
6507
+ import { useState as useState18 } from "react";
6508
+ import { jsx as jsx98, jsxs as jsxs39 } from "react/jsx-runtime";
5798
6509
  var TabsRenderer = {
5799
6510
  canRenderType: "tabs",
5800
6511
  render: (props) => {
5801
6512
  switch (props.control) {
5802
6513
  case "segmented":
5803
6514
  if (props.tabs.length > 3) {
5804
- return /* @__PURE__ */ jsx96(TabsRendererComponent, __spreadValues({}, props));
6515
+ return /* @__PURE__ */ jsx98(TabsRendererComponent, __spreadValues({}, props));
5805
6516
  }
5806
- return /* @__PURE__ */ jsx96(SegmentedTabsRendererComponent, __spreadValues({}, props));
6517
+ return /* @__PURE__ */ jsx98(SegmentedTabsRendererComponent, __spreadValues({}, props));
5807
6518
  case "chips":
5808
- return /* @__PURE__ */ jsx96(ChipsTabsRendererComponent, __spreadValues({}, props));
6519
+ return /* @__PURE__ */ jsx98(ChipsTabsRendererComponent, __spreadValues({}, props));
5809
6520
  default:
5810
- return /* @__PURE__ */ jsx96(TabsRendererComponent, __spreadValues({}, props));
6521
+ return /* @__PURE__ */ jsx98(TabsRendererComponent, __spreadValues({}, props));
5811
6522
  }
5812
6523
  }
5813
6524
  };
5814
6525
  function TabsRendererComponent({ uid, margin, tabs, control, tags }) {
5815
- const [selectedIndex, setSelectedIndex] = useState17(0);
5816
- return /* @__PURE__ */ jsx96("div", { className: (0, import_classnames30.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: /* @__PURE__ */ jsx96(
6526
+ const [selectedIndex, setSelectedIndex] = useState18(0);
6527
+ return /* @__PURE__ */ jsx98("div", { className: (0, import_classnames32.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: /* @__PURE__ */ jsx98(
5817
6528
  Tabs2,
5818
6529
  {
5819
6530
  name: uid,
@@ -5821,7 +6532,7 @@ function TabsRendererComponent({ uid, margin, tabs, control, tags }) {
5821
6532
  tabs: tabs.map((option) => ({
5822
6533
  title: option.title,
5823
6534
  disabled: false,
5824
- content: /* @__PURE__ */ jsxs38("div", { className: "m-t-2", children: [
6535
+ content: /* @__PURE__ */ jsxs39("div", { className: "m-t-2", children: [
5825
6536
  " ",
5826
6537
  option.children,
5827
6538
  " "
@@ -5833,9 +6544,9 @@ function TabsRendererComponent({ uid, margin, tabs, control, tags }) {
5833
6544
  }
5834
6545
  function SegmentedTabsRendererComponent({ uid, margin, tabs, control, tags }) {
5835
6546
  var _a;
5836
- const [selectedIndex, setSelectedIndex] = useState17(0);
5837
- return /* @__PURE__ */ jsxs38("div", { className: (0, import_classnames30.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
5838
- /* @__PURE__ */ jsx96(
6547
+ const [selectedIndex, setSelectedIndex] = useState18(0);
6548
+ return /* @__PURE__ */ jsxs39("div", { className: (0, import_classnames32.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
6549
+ /* @__PURE__ */ jsx98(
5839
6550
  SegmentedControl2,
5840
6551
  {
5841
6552
  name: uid,
@@ -5850,14 +6561,14 @@ function SegmentedTabsRendererComponent({ uid, margin, tabs, control, tags }) {
5850
6561
  onChange: (value) => setSelectedIndex(Number(value))
5851
6562
  }
5852
6563
  ),
5853
- /* @__PURE__ */ jsx96("div", { id: `${uid}-children`, className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
6564
+ /* @__PURE__ */ jsx98("div", { id: `${uid}-children`, className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
5854
6565
  ] });
5855
6566
  }
5856
6567
  function ChipsTabsRendererComponent({ margin, tabs, control, tags }) {
5857
6568
  var _a;
5858
- const [selectedIndex, setSelectedIndex] = useState17(0);
5859
- return /* @__PURE__ */ jsxs38("div", { className: (0, import_classnames30.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
5860
- /* @__PURE__ */ jsx96("div", { className: "chips-container", children: /* @__PURE__ */ jsx96(
6569
+ const [selectedIndex, setSelectedIndex] = useState18(0);
6570
+ return /* @__PURE__ */ jsxs39("div", { className: (0, import_classnames32.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
6571
+ /* @__PURE__ */ jsx98("div", { className: "chips-container", children: /* @__PURE__ */ jsx98(
5861
6572
  Chips2,
5862
6573
  {
5863
6574
  chips: tabs.map((tab, index) => ({ label: tab.title, value: index })),
@@ -5865,7 +6576,7 @@ function ChipsTabsRendererComponent({ margin, tabs, control, tags }) {
5865
6576
  onChange: ({ selectedValue }) => setSelectedIndex(Number(selectedValue))
5866
6577
  }
5867
6578
  ) }),
5868
- /* @__PURE__ */ jsx96("div", { className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
6579
+ /* @__PURE__ */ jsx98("div", { className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
5869
6580
  ] });
5870
6581
  }
5871
6582
 
@@ -5880,7 +6591,7 @@ import {
5880
6591
  TextArea,
5881
6592
  TextareaWithDisplayFormat
5882
6593
  } from "@transferwise/components";
5883
- import { jsx as jsx97 } from "react/jsx-runtime";
6594
+ import { jsx as jsx99 } from "react/jsx-runtime";
5884
6595
  var commonKeys = [
5885
6596
  "autoComplete",
5886
6597
  "autoCapitalize",
@@ -5899,12 +6610,12 @@ function VariableTextInput(inputProps) {
5899
6610
  const commonProps = __spreadProps(__spreadValues({}, pick(inputProps, ...commonKeys)), { name: id });
5900
6611
  switch (control) {
5901
6612
  case "email":
5902
- return /* @__PURE__ */ jsx97(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "email", onChange }));
6613
+ return /* @__PURE__ */ jsx99(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "email", onChange }));
5903
6614
  case "password":
5904
- return /* @__PURE__ */ jsx97(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "password", onChange }));
6615
+ return /* @__PURE__ */ jsx99(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "password", onChange }));
5905
6616
  case "numeric": {
5906
6617
  const numericProps = __spreadProps(__spreadValues({}, commonProps), { type: "number", onWheel });
5907
- return /* @__PURE__ */ jsx97(
6618
+ return /* @__PURE__ */ jsx99(
5908
6619
  TextInput,
5909
6620
  __spreadProps(__spreadValues({}, numericProps), {
5910
6621
  onChange: (newValue) => {
@@ -5915,9 +6626,9 @@ function VariableTextInput(inputProps) {
5915
6626
  );
5916
6627
  }
5917
6628
  case "phone-number":
5918
- return /* @__PURE__ */ jsx97(PhoneNumberInput, __spreadProps(__spreadValues({ initialValue: value }, commonProps), { onChange }));
6629
+ return /* @__PURE__ */ jsx99(PhoneNumberInput, __spreadProps(__spreadValues({ initialValue: value }, commonProps), { onChange }));
5919
6630
  default: {
5920
- return /* @__PURE__ */ jsx97(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "text", onChange }));
6631
+ return /* @__PURE__ */ jsx99(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "text", onChange }));
5921
6632
  }
5922
6633
  }
5923
6634
  }
@@ -5925,11 +6636,11 @@ function TextInput(props) {
5925
6636
  const _a = props, { control, displayFormat, onChange } = _a, commonProps = __objRest(_a, ["control", "displayFormat", "onChange"]);
5926
6637
  const InputWithPattern = control === "textarea" ? TextareaWithDisplayFormat : InputWithDisplayFormat;
5927
6638
  const InputWithoutPattern = control === "textarea" ? TextArea : Input6;
5928
- return displayFormat ? /* @__PURE__ */ jsx97(InputWithPattern, __spreadProps(__spreadValues({ displayPattern: displayFormat }, commonProps), { onChange })) : /* @__PURE__ */ jsx97(InputWithoutPattern, __spreadProps(__spreadValues({}, commonProps), { onChange: (e) => onChange(e.target.value) }));
6639
+ return displayFormat ? /* @__PURE__ */ jsx99(InputWithPattern, __spreadProps(__spreadValues({ displayPattern: displayFormat }, commonProps), { onChange })) : /* @__PURE__ */ jsx99(InputWithoutPattern, __spreadProps(__spreadValues({}, commonProps), { onChange: (e) => onChange(e.target.value) }));
5929
6640
  }
5930
6641
 
5931
6642
  // ../renderers/src/TextInputRenderer.tsx
5932
- import { jsx as jsx98 } from "react/jsx-runtime";
6643
+ import { jsx as jsx100 } from "react/jsx-runtime";
5933
6644
  var TextInputRenderer = {
5934
6645
  canRenderType: "input-text",
5935
6646
  render: (props) => {
@@ -5962,7 +6673,7 @@ var TextInputRenderer = {
5962
6673
  }
5963
6674
  }
5964
6675
  });
5965
- return /* @__PURE__ */ jsx98(
6676
+ return /* @__PURE__ */ jsx100(
5966
6677
  FieldInput_default,
5967
6678
  {
5968
6679
  id,
@@ -5975,7 +6686,7 @@ var TextInputRenderer = {
5975
6686
  features: props.features,
5976
6687
  control: props.control,
5977
6688
  tags: props.tags,
5978
- children: /* @__PURE__ */ jsx98(InputGroup5, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx98(VariableTextInput, __spreadValues({}, inputProps)) })
6689
+ children: /* @__PURE__ */ jsx100(InputGroup5, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx100(VariableTextInput, __spreadValues({}, inputProps)) })
5979
6690
  }
5980
6691
  );
5981
6692
  }
@@ -5989,7 +6700,7 @@ import { Status as Status2, Upload, UploadInput as UploadInput2 } from "@transfe
5989
6700
  var getRandomId = () => Math.random().toString(36).substring(2);
5990
6701
 
5991
6702
  // ../renderers/src/UploadInputRenderer.tsx
5992
- import { jsx as jsx99 } from "react/jsx-runtime";
6703
+ import { jsx as jsx101 } from "react/jsx-runtime";
5993
6704
  var UploadInputRenderer = {
5994
6705
  canRenderType: "input-upload",
5995
6706
  render: (props) => {
@@ -6018,7 +6729,7 @@ var UploadInputRenderer = {
6018
6729
  };
6019
6730
  return (
6020
6731
  // We don't pass help here as there is no sensible place to display it
6021
- /* @__PURE__ */ jsx99(
6732
+ /* @__PURE__ */ jsx101(
6022
6733
  UploadFieldInput_default,
6023
6734
  {
6024
6735
  id,
@@ -6028,7 +6739,7 @@ var UploadInputRenderer = {
6028
6739
  features,
6029
6740
  control,
6030
6741
  tags,
6031
- children: /* @__PURE__ */ jsx99(
6742
+ children: /* @__PURE__ */ jsx101(
6032
6743
  UploadInput2,
6033
6744
  {
6034
6745
  id,
@@ -6098,7 +6809,7 @@ var LargeUploadRenderer = {
6098
6809
  };
6099
6810
  const filetypes = acceptsToFileTypes(accepts);
6100
6811
  const usAccept = filetypes === "*" ? "*" : filetypes.join(",");
6101
- return /* @__PURE__ */ jsx99(
6812
+ return /* @__PURE__ */ jsx101(
6102
6813
  FieldInput_default,
6103
6814
  {
6104
6815
  id,
@@ -6109,7 +6820,7 @@ var LargeUploadRenderer = {
6109
6820
  features,
6110
6821
  control,
6111
6822
  tags,
6112
- children: /* @__PURE__ */ jsx99(
6823
+ children: /* @__PURE__ */ jsx101(
6113
6824
  Upload,
6114
6825
  __spreadProps(__spreadValues({}, uploadProps), {
6115
6826
  usAccept,
@@ -6125,21 +6836,21 @@ var LargeUploadRenderer = {
6125
6836
  };
6126
6837
 
6127
6838
  // ../renderers/src/UpsellRenderer.tsx
6128
- var import_classnames31 = __toESM(require_classnames());
6839
+ var import_classnames33 = __toESM(require_classnames());
6129
6840
  import { Nudge } from "@transferwise/components";
6130
- import { useState as useState18 } from "react";
6131
- import { jsx as jsx100 } from "react/jsx-runtime";
6841
+ import { useState as useState19 } from "react";
6842
+ import { jsx as jsx102 } from "react/jsx-runtime";
6132
6843
  var UpsellRenderer = {
6133
6844
  canRenderType: "upsell",
6134
6845
  render: UpsellRendererComponent
6135
6846
  };
6136
6847
  function UpsellRendererComponent(props) {
6137
6848
  const { text, callToAction, media, margin, onDismiss, control, tags } = props;
6138
- const [isVisible, setIsVisible] = useState18(true);
6139
- return isVisible ? /* @__PURE__ */ jsx100(
6849
+ const [isVisible, setIsVisible] = useState19(true);
6850
+ return isVisible ? /* @__PURE__ */ jsx102(
6140
6851
  Nudge,
6141
6852
  {
6142
- className: (0, import_classnames31.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
6853
+ className: (0, import_classnames33.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
6143
6854
  mediaName: getMediaName(media),
6144
6855
  title: text,
6145
6856
  action: __spreadValues({
@@ -6183,9 +6894,9 @@ var supportedMediaNames = [
6183
6894
  ];
6184
6895
 
6185
6896
  // ../renderers/src/ButtonRenderer/CircularButtonRenderer.tsx
6186
- var import_classnames32 = __toESM(require_classnames());
6897
+ var import_classnames34 = __toESM(require_classnames());
6187
6898
  import { CircularButton } from "@transferwise/components";
6188
- import { jsx as jsx101 } from "react/jsx-runtime";
6899
+ import { jsx as jsx103 } from "react/jsx-runtime";
6189
6900
  var CircularButtonRenderer = {
6190
6901
  canRenderType: "button",
6191
6902
  canRender: ({ control }) => control === "circular",
@@ -6195,16 +6906,16 @@ function CircularButtonComponent(props) {
6195
6906
  var _a;
6196
6907
  const { context, control, disabled, margin, media, tags, title, onClick } = props;
6197
6908
  const priority = tags == null ? void 0 : tags.find((tag) => tag === "primary" || tag === "secondary");
6198
- return /* @__PURE__ */ jsx101(
6909
+ return /* @__PURE__ */ jsx103(
6199
6910
  "div",
6200
6911
  {
6201
- className: (0, import_classnames32.default)(
6912
+ className: (0, import_classnames34.default)(
6202
6913
  getMargin(margin),
6203
6914
  "df-button",
6204
6915
  "circular",
6205
6916
  controlAndTagsToCSSClass({ control, tags })
6206
6917
  ),
6207
- children: /* @__PURE__ */ jsx101(
6918
+ children: /* @__PURE__ */ jsx103(
6208
6919
  CircularButton,
6209
6920
  {
6210
6921
  disabled,
@@ -6225,6 +6936,7 @@ var getWiseRenderers = () => [
6225
6936
  AlertRenderer_default,
6226
6937
  CheckboxInputRenderer_default,
6227
6938
  CircularButtonRenderer,
6939
+ BorderedBackgroundColoredBoxRenderer,
6228
6940
  BoxRenderer_default,
6229
6941
  CollectionRenderer_default,
6230
6942
  ButtonRenderer,
@@ -6261,6 +6973,7 @@ var getWiseRenderers = () => [
6261
6973
  TabsRenderer,
6262
6974
  TextInputRenderer_default,
6263
6975
  UploadInputRenderer,
6976
+ ColoredUpsellRenderer,
6264
6977
  UpsellRenderer,
6265
6978
  SplashStepRenderer,
6266
6979
  SplashCelebrationStepRenderer,
@@ -6271,11 +6984,11 @@ var getWiseRenderers = () => [
6271
6984
 
6272
6985
  // ../renderers/src/InitialLoadingStateRenderer.tsx
6273
6986
  import { Loader as Loader2 } from "@transferwise/components";
6274
- import { jsx as jsx102 } from "react/jsx-runtime";
6987
+ import { jsx as jsx104 } from "react/jsx-runtime";
6275
6988
  var InitialLoadingStateRenderer = {
6276
6989
  canRenderType: "loading-state",
6277
6990
  canRender: ({ stepLoadingState }) => stepLoadingState === "initial",
6278
- render: () => /* @__PURE__ */ jsx102(
6991
+ render: () => /* @__PURE__ */ jsx104(
6279
6992
  Loader2,
6280
6993
  {
6281
6994
  size: "md",
@@ -6288,24 +7001,24 @@ var InitialLoadingStateRenderer = {
6288
7001
  // src/dynamicFlow/DynamicFlowModal.tsx
6289
7002
  import { useDynamicFlowModal } from "@wise/dynamic-flow-client";
6290
7003
  import { Modal as Modal5 } from "@transferwise/components";
6291
- import { jsx as jsx103 } from "react/jsx-runtime";
7004
+ import { jsx as jsx105 } from "react/jsx-runtime";
6292
7005
  function DynamicFlowModal(props) {
6293
7006
  const _a = props, { className = "" } = _a, rest = __objRest(_a, ["className"]);
6294
7007
  const dfProps = useWiseToCoreProps(rest);
6295
7008
  const df = useDynamicFlowModal(dfProps);
6296
- return /* @__PURE__ */ jsx103(
7009
+ return /* @__PURE__ */ jsx105(
6297
7010
  Modal5,
6298
7011
  __spreadProps(__spreadValues({
6299
7012
  className: `dynamic-flow-modal ${className}`,
6300
7013
  disableDimmerClickToClose: true
6301
7014
  }, df.modal), {
6302
- body: /* @__PURE__ */ jsx103("div", { className: "dynamic-flow-modal", children: df.modal.body })
7015
+ body: /* @__PURE__ */ jsx105("div", { className: "dynamic-flow-modal", children: df.modal.body })
6303
7016
  })
6304
7017
  );
6305
7018
  }
6306
7019
 
6307
7020
  // src/dynamicFlow/getMergedRenderers.tsx
6308
- import { jsx as jsx104 } from "react/jsx-runtime";
7021
+ import { jsx as jsx106 } from "react/jsx-runtime";
6309
7022
  var wiseRenderers = getWiseRenderers();
6310
7023
  var getMergedRenderers = (props) => {
6311
7024
  var _d, _e;
@@ -6319,7 +7032,7 @@ var getMergedRenderers = (props) => {
6319
7032
  method: initialRequest.method,
6320
7033
  data: initialRequest.body
6321
7034
  };
6322
- return presentation.type === "push" ? /* @__PURE__ */ jsx104(DynamicFlow, __spreadProps(__spreadValues(__spreadValues({}, restProps), rest), { features: subflowFeatures, initialAction: action })) : /* @__PURE__ */ jsx104(
7035
+ return presentation.type === "push" ? /* @__PURE__ */ jsx106(DynamicFlow, __spreadProps(__spreadValues(__spreadValues({}, restProps), rest), { features: subflowFeatures, initialAction: action })) : /* @__PURE__ */ jsx106(
6323
7036
  DynamicFlowModal,
6324
7037
  __spreadProps(__spreadValues(__spreadValues({}, restProps), rest), {
6325
7038
  features: subflowFeatures,
@@ -6399,11 +7112,11 @@ var customEventsToAnalytics = {
6399
7112
 
6400
7113
  // src/dynamicFlow/useOnCopy.tsx
6401
7114
  import { useCallback as useCallback2 } from "react";
6402
- import { useIntl as useIntl20 } from "react-intl";
7115
+ import { useIntl as useIntl21 } from "react-intl";
6403
7116
 
6404
7117
  // src/dynamicFlow/messages.ts
6405
- import { defineMessages as defineMessages14 } from "react-intl";
6406
- var messages_default = defineMessages14({
7118
+ import { defineMessages as defineMessages15 } from "react-intl";
7119
+ var messages_default = defineMessages15({
6407
7120
  copied: {
6408
7121
  id: "df.wise.CopyFeedback.copy",
6409
7122
  defaultMessage: "Copied to clipboard",
@@ -6418,7 +7131,7 @@ var messages_default = defineMessages14({
6418
7131
 
6419
7132
  // src/dynamicFlow/useOnCopy.tsx
6420
7133
  var useOnCopy = () => {
6421
- const { formatMessage } = useIntl20();
7134
+ const { formatMessage } = useIntl21();
6422
7135
  const createSnackBar = useSnackBarIfAvailable();
6423
7136
  return useCallback2(
6424
7137
  (copiedContent) => {
@@ -6434,9 +7147,9 @@ var useOnCopy = () => {
6434
7147
 
6435
7148
  // src/dynamicFlow/useWiseHttpClient.tsx
6436
7149
  import { useCallback as useCallback3 } from "react";
6437
- import { useIntl as useIntl21 } from "react-intl";
7150
+ import { useIntl as useIntl22 } from "react-intl";
6438
7151
  var useWiseHttpClient = (httpClient) => {
6439
- const { locale } = useIntl21();
7152
+ const { locale } = useIntl22();
6440
7153
  return useCallback3(
6441
7154
  async (input, init = {}) => {
6442
7155
  const headers = new Headers(init.headers);
@@ -6516,13 +7229,13 @@ var openLinkInNewTab = (url) => {
6516
7229
  };
6517
7230
 
6518
7231
  // src/dynamicFlow/DynamicFlow.tsx
6519
- import { jsxs as jsxs39 } from "react/jsx-runtime";
7232
+ import { jsxs as jsxs40 } from "react/jsx-runtime";
6520
7233
  function DynamicFlow(props) {
6521
7234
  const { className = "" } = props;
6522
7235
  const dfProps = useWiseToCoreProps(props);
6523
7236
  const df = useDynamicFlow(dfProps);
6524
7237
  const { onContextMenu, contextMenu } = useDFContextMenu(df.controller);
6525
- return /* @__PURE__ */ jsxs39("div", { className, onContextMenu, children: [
7238
+ return /* @__PURE__ */ jsxs40("div", { className, onContextMenu, children: [
6526
7239
  df.view,
6527
7240
  contextMenu
6528
7241
  ] });
@@ -6534,7 +7247,7 @@ import {
6534
7247
  useImperativeHandle
6535
7248
  } from "react";
6536
7249
  import { useDynamicFlow as useDynamicFlow2 } from "@wise/dynamic-flow-client";
6537
- import { jsx as jsx105 } from "react/jsx-runtime";
7250
+ import { jsx as jsx107 } from "react/jsx-runtime";
6538
7251
  var DynamicFlowWithRef = forwardRef(function DynamicFlowWithRef2(props, ref) {
6539
7252
  const { className = "" } = props;
6540
7253
  const dfProps = useWiseToCoreProps(props);
@@ -6550,7 +7263,7 @@ var DynamicFlowWithRef = forwardRef(function DynamicFlowWithRef2(props, ref) {
6550
7263
  }),
6551
7264
  [df]
6552
7265
  );
6553
- return /* @__PURE__ */ jsx105("div", { className, children: df.view });
7266
+ return /* @__PURE__ */ jsx107("div", { className, children: df.view });
6554
7267
  });
6555
7268
 
6556
7269
  // src/index.ts
@@ -6588,6 +7301,7 @@ var cs_default = {
6588
7301
  "df.wise.ControlFeedback.type": "Nespr\xE1vn\xFD typ",
6589
7302
  "df.wise.CopyFeedback.copy": "Zkop\xEDrov\xE1no do schr\xE1nky",
6590
7303
  "df.wise.CopyFeedback.copyFailed": "Kop\xEDrov\xE1n\xED do schr\xE1nky se nezda\u0159ilo",
7304
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
6591
7305
  "df.wise.DynamicParagraph.copied": "Zkop\xEDrov\xE1no do schr\xE1nky",
6592
7306
  "df.wise.DynamicParagraph.copy": "Kop\xEDrovat",
6593
7307
  "df.wise.ErrorBoundary.errorAlert": "N\u011Bco se pokazilo.",
@@ -6637,6 +7351,7 @@ var de_default = {
6637
7351
  "df.wise.ControlFeedback.type": "Falscher Typ",
6638
7352
  "df.wise.CopyFeedback.copy": "In Zwischenablage kopiert",
6639
7353
  "df.wise.CopyFeedback.copyFailed": "Kopieren in Zwischenablage fehlgeschlagen",
7354
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
6640
7355
  "df.wise.DynamicParagraph.copied": "In Zwischenablage kopiert",
6641
7356
  "df.wise.DynamicParagraph.copy": "Kopieren",
6642
7357
  "df.wise.ErrorBoundary.errorAlert": "Da ist etwas schiefgegangen.",
@@ -6686,6 +7401,7 @@ var en_default = {
6686
7401
  "df.wise.ControlFeedback.type": "Incorrect type",
6687
7402
  "df.wise.CopyFeedback.copy": "Copied to clipboard",
6688
7403
  "df.wise.CopyFeedback.copyFailed": "Failed to copy to clipboard",
7404
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
6689
7405
  "df.wise.DynamicParagraph.copied": "Copied to clipboard",
6690
7406
  "df.wise.DynamicParagraph.copy": "Copy",
6691
7407
  "df.wise.ErrorBoundary.errorAlert": "Something went wrong.",
@@ -6735,6 +7451,7 @@ var es_default = {
6735
7451
  "df.wise.ControlFeedback.type": "Tipo incorrecto",
6736
7452
  "df.wise.CopyFeedback.copy": "Copiado al portapapeles",
6737
7453
  "df.wise.CopyFeedback.copyFailed": "Error al copiar al portapapeles",
7454
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
6738
7455
  "df.wise.DynamicParagraph.copied": "Copiado al portapapeles",
6739
7456
  "df.wise.DynamicParagraph.copy": "Copiar",
6740
7457
  "df.wise.ErrorBoundary.errorAlert": "Ha habido un error.",
@@ -6784,6 +7501,7 @@ var fr_default = {
6784
7501
  "df.wise.ControlFeedback.type": "Type incorrect",
6785
7502
  "df.wise.CopyFeedback.copy": "Copi\xE9 dans le presse-papier",
6786
7503
  "df.wise.CopyFeedback.copyFailed": "Impossible de copier dans le presse-papier",
7504
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
6787
7505
  "df.wise.DynamicParagraph.copied": "Copi\xE9 dans le presse-papier",
6788
7506
  "df.wise.DynamicParagraph.copy": "Copier",
6789
7507
  "df.wise.ErrorBoundary.errorAlert": "Une erreur s'est produite.",
@@ -6833,6 +7551,7 @@ var hu_default = {
6833
7551
  "df.wise.ControlFeedback.type": "Helytelen t\xEDpus",
6834
7552
  "df.wise.CopyFeedback.copy": "V\xE1g\xF3lapra m\xE1solva",
6835
7553
  "df.wise.CopyFeedback.copyFailed": "Nem siker\xFClt a v\xE1g\xF3lapra m\xE1solni",
7554
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
6836
7555
  "df.wise.DynamicParagraph.copied": "V\xE1g\xF3lapra m\xE1solva",
6837
7556
  "df.wise.DynamicParagraph.copy": "M\xE1sol\xE1s",
6838
7557
  "df.wise.ErrorBoundary.errorAlert": "Valami hiba t\xF6rt\xE9nt.",
@@ -6882,6 +7601,7 @@ var id_default = {
6882
7601
  "df.wise.ControlFeedback.type": "Tipe salah",
6883
7602
  "df.wise.CopyFeedback.copy": "Disalin ke clipboard",
6884
7603
  "df.wise.CopyFeedback.copyFailed": "Gagal menyalin ke clipboard",
7604
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
6885
7605
  "df.wise.DynamicParagraph.copied": "Disalin ke clipboard",
6886
7606
  "df.wise.DynamicParagraph.copy": "Salin",
6887
7607
  "df.wise.ErrorBoundary.errorAlert": "Terjadi kesalahan.",
@@ -6931,6 +7651,7 @@ var it_default = {
6931
7651
  "df.wise.ControlFeedback.type": "Tipo errato",
6932
7652
  "df.wise.CopyFeedback.copy": "Copiato negli appunti",
6933
7653
  "df.wise.CopyFeedback.copyFailed": "Impossibile copiare negli appunti",
7654
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
6934
7655
  "df.wise.DynamicParagraph.copied": "Copiato negli appunti",
6935
7656
  "df.wise.DynamicParagraph.copy": "Copia",
6936
7657
  "df.wise.ErrorBoundary.errorAlert": "Qualcosa non ha funzionato.",
@@ -6980,6 +7701,7 @@ var ja_default = {
6980
7701
  "df.wise.ControlFeedback.type": "\u4E0D\u6B63\u306A\u30BF\u30A4\u30D7",
6981
7702
  "df.wise.CopyFeedback.copy": "\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u3078\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",
6982
7703
  "df.wise.CopyFeedback.copyFailed": "\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F",
7704
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
6983
7705
  "df.wise.DynamicParagraph.copied": "\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u3078\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",
6984
7706
  "df.wise.DynamicParagraph.copy": "\u30B3\u30D4\u30FC\u3059\u308B",
6985
7707
  "df.wise.ErrorBoundary.errorAlert": "\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002",
@@ -7029,6 +7751,7 @@ var nl_default = {
7029
7751
  "df.wise.ControlFeedback.type": "Onjuist type",
7030
7752
  "df.wise.CopyFeedback.copy": "Naar klembord gekopieerd",
7031
7753
  "df.wise.CopyFeedback.copyFailed": "Naar klembord kopi\xEBren mislukt",
7754
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
7032
7755
  "df.wise.DynamicParagraph.copied": "Naar klembord gekopieerd",
7033
7756
  "df.wise.DynamicParagraph.copy": "Kopi\xEBren",
7034
7757
  "df.wise.ErrorBoundary.errorAlert": "Er is iets misgegaan.",
@@ -7078,6 +7801,7 @@ var pl_default = {
7078
7801
  "df.wise.ControlFeedback.type": "Nieprawid\u0142owy typ",
7079
7802
  "df.wise.CopyFeedback.copy": "Skopiowano do schowka",
7080
7803
  "df.wise.CopyFeedback.copyFailed": "Nie uda\u0142o si\u0119 skopiowa\u0107 do schowka",
7804
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
7081
7805
  "df.wise.DynamicParagraph.copied": "Skopiowano do schowka",
7082
7806
  "df.wise.DynamicParagraph.copy": "Kopiuj",
7083
7807
  "df.wise.ErrorBoundary.errorAlert": "Co\u015B posz\u0142o nie tak.",
@@ -7127,6 +7851,7 @@ var pt_default = {
7127
7851
  "df.wise.ControlFeedback.type": "Tipo incorreto",
7128
7852
  "df.wise.CopyFeedback.copy": "Copiado",
7129
7853
  "df.wise.CopyFeedback.copyFailed": "Falha ao copiar para \xE1rea de transfer\xEAncia",
7854
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
7130
7855
  "df.wise.DynamicParagraph.copied": "Copiado",
7131
7856
  "df.wise.DynamicParagraph.copy": "Copiar",
7132
7857
  "df.wise.ErrorBoundary.errorAlert": "Algo deu errado.",
@@ -7176,6 +7901,7 @@ var ro_default = {
7176
7901
  "df.wise.ControlFeedback.type": "Tip incorect",
7177
7902
  "df.wise.CopyFeedback.copy": "Copiat \xEEn clipboard",
7178
7903
  "df.wise.CopyFeedback.copyFailed": "Copierea \xEEn clipboard a e\u0219uat",
7904
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
7179
7905
  "df.wise.DynamicParagraph.copied": "Copiat \xEEn clipboard",
7180
7906
  "df.wise.DynamicParagraph.copy": "Copiaz\u0103",
7181
7907
  "df.wise.ErrorBoundary.errorAlert": "Ceva nu a mers bine.",
@@ -7225,6 +7951,7 @@ var ru_default = {
7225
7951
  "df.wise.ControlFeedback.type": "\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0442\u0438\u043F",
7226
7952
  "df.wise.CopyFeedback.copy": "\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0435\u043D\u0430",
7227
7953
  "df.wise.CopyFeedback.copyFailed": "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0441\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0435\u043D\u0430",
7954
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
7228
7955
  "df.wise.DynamicParagraph.copied": "\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0435\u043D\u0430",
7229
7956
  "df.wise.DynamicParagraph.copy": "\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C",
7230
7957
  "df.wise.ErrorBoundary.errorAlert": "\u0427\u0442\u043E-\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A.",
@@ -7274,6 +8001,7 @@ var th_default = {
7274
8001
  "df.wise.ControlFeedback.type": "\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07",
7275
8002
  "df.wise.CopyFeedback.copy": "\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01\u0E44\u0E1B\u0E22\u0E31\u0E07\u0E04\u0E25\u0E34\u0E1B\u0E1A\u0E2D\u0E23\u0E4C\u0E14",
7276
8003
  "df.wise.CopyFeedback.copyFailed": "\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01\u0E44\u0E1B\u0E22\u0E31\u0E07\u0E04\u0E25\u0E34\u0E1B\u0E1A\u0E2D\u0E23\u0E4C\u0E14\u0E44\u0E21\u0E48\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08",
8004
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
7277
8005
  "df.wise.DynamicParagraph.copied": "\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01\u0E44\u0E1B\u0E22\u0E31\u0E07\u0E04\u0E25\u0E34\u0E1B\u0E1A\u0E2D\u0E23\u0E4C\u0E14",
7278
8006
  "df.wise.DynamicParagraph.copy": "\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01",
7279
8007
  "df.wise.ErrorBoundary.errorAlert": "\u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14\u0E1A\u0E32\u0E07\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E02\u0E36\u0E49\u0E19",
@@ -7323,6 +8051,7 @@ var tr_default = {
7323
8051
  "df.wise.ControlFeedback.type": "Ge\xE7ersiz se\xE7im",
7324
8052
  "df.wise.CopyFeedback.copy": "Panoya kopyaland\u0131",
7325
8053
  "df.wise.CopyFeedback.copyFailed": "Panoya kopyalama ba\u015Far\u0131s\u0131z oldu",
8054
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
7326
8055
  "df.wise.DynamicParagraph.copied": "Panoya kopyaland\u0131",
7327
8056
  "df.wise.DynamicParagraph.copy": "Kopyala",
7328
8057
  "df.wise.ErrorBoundary.errorAlert": "Bir sorun olu\u015Ftu.",
@@ -7372,6 +8101,7 @@ var zh_CN_default = {
7372
8101
  "df.wise.ControlFeedback.type": "\u7C7B\u578B\u9519\u8BEF",
7373
8102
  "df.wise.CopyFeedback.copy": "\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F",
7374
8103
  "df.wise.CopyFeedback.copyFailed": "\u65E0\u6CD5\u590D\u5236\u5230\u526A\u8D34\u677F",
8104
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
7375
8105
  "df.wise.DynamicParagraph.copied": "\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F",
7376
8106
  "df.wise.DynamicParagraph.copy": "\u590D\u5236",
7377
8107
  "df.wise.ErrorBoundary.errorAlert": "\u51FA\u9519\u4E86\u3002",
@@ -7421,6 +8151,7 @@ var zh_HK_default = {
7421
8151
  "df.wise.ControlFeedback.type": "\u932F\u8AA4\u7684\u985E\u578B",
7422
8152
  "df.wise.CopyFeedback.copy": "\u8907\u88FD\u5230\u526A\u8CBC\u677F",
7423
8153
  "df.wise.CopyFeedback.copyFailed": "\u7121\u6CD5\u8907\u88FD\u5230\u526A\u8CBC\u677F",
8154
+ "df.wise.DateInput.unavailableDates": "Some dates are unavailable.",
7424
8155
  "df.wise.DynamicParagraph.copied": "\u8907\u88FD\u5230\u526A\u8CBC\u677F",
7425
8156
  "df.wise.DynamicParagraph.copy": "\u8907\u88FD",
7426
8157
  "df.wise.ErrorBoundary.errorAlert": "\u51FA\u4E86\u4E9B\u554F\u984C\u3002",