@wise/dynamic-flow-client-internal 5.33.0 → 5.34.0-experimental-7a76ef5

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.
Files changed (61) hide show
  1. package/build/i18n/en.json +2 -0
  2. package/build/main.css +97 -0
  3. package/build/main.js +1191 -827
  4. package/build/main.mjs +964 -595
  5. package/build/tsconfig.types.tsbuildinfo +1 -1
  6. package/build/types/dynamicFlow/renderers.d.ts +2 -0
  7. package/build/types/dynamicFlow/renderers.d.ts.map +1 -1
  8. package/build/types/index.d.ts +1 -1
  9. package/build/types/index.d.ts.map +1 -1
  10. package/package.json +4 -4
  11. package/build/dynamicFlow/DynamicFlow.js +0 -11
  12. package/build/dynamicFlow/DynamicFlowModal.js +0 -21
  13. package/build/dynamicFlow/DynamicFlowWiseProps.js +0 -1
  14. package/build/dynamicFlow/DynamicFlowWithRef.js +0 -19
  15. package/build/dynamicFlow/context-menu/useContextMenu.js +0 -33
  16. package/build/dynamicFlow/context-menu/useDFContextMenu.js +0 -135
  17. package/build/dynamicFlow/context-menu/useDFContextMenu.test.js +0 -101
  18. package/build/dynamicFlow/getMergedRenderers.js +0 -36
  19. package/build/dynamicFlow/messages.js +0 -13
  20. package/build/dynamicFlow/renderers.js +0 -10
  21. package/build/dynamicFlow/telemetry/app-version.js +0 -4
  22. package/build/dynamicFlow/telemetry/dispatchAnalyticsEvent.js +0 -8
  23. package/build/dynamicFlow/telemetry/getLogEvent.js +0 -22
  24. package/build/dynamicFlow/telemetry/getTrackEvent.js +0 -39
  25. package/build/dynamicFlow/telemetry/index.js +0 -2
  26. package/build/dynamicFlow/useCreateSnackBar.js +0 -9
  27. package/build/dynamicFlow/useOnCopy.js +0 -16
  28. package/build/dynamicFlow/useWiseHttpClient.js +0 -24
  29. package/build/dynamicFlow/useWiseToCoreProps.js +0 -42
  30. package/build/i18n/index.js +0 -43
  31. package/build/index.js +0 -6
  32. package/build/stories/ButtonLoader.story.js +0 -109
  33. package/build/stories/ContainerQueries.story.js +0 -74
  34. package/build/stories/DynamicFlow.story.js +0 -37
  35. package/build/stories/DynamicFlowWithRef.story.js +0 -72
  36. package/build/stories/Editable.story.js +0 -58
  37. package/build/stories/Initialisation.story.js +0 -33
  38. package/build/stories/PinnedButtons.story.js +0 -94
  39. package/build/stories/SCAIntegration.story.js +0 -67
  40. package/build/stories/utils/fixtureHttpClient.js +0 -59
  41. package/build/test-utils/NeptuneProviders.js +0 -11
  42. package/build/test-utils/index.js +0 -4
  43. package/build/test-utils/respond-with.js +0 -6
  44. package/build/test-utils/rtl-utils.js +0 -7
  45. package/build/test-utils/wait.js +0 -3
  46. package/build/tests/DynamicFlow.test.js +0 -177
  47. package/build/tests/HideStepTitle.test.js +0 -58
  48. package/build/tests/RequestCache.test.js +0 -34
  49. package/build/tests/SCARejectionHandling.test.js +0 -71
  50. package/build/tests/Subflow.Wise.test.js +0 -650
  51. package/build/tests/events.test.js +0 -124
  52. package/build/tests/logging.test.js +0 -12
  53. package/build/tests/onNotification.test.js +0 -96
  54. package/build/tests/renderers/ControlAndTags.test.js +0 -225
  55. package/build/tests/renderers/ImageRenderer.test.js +0 -129
  56. package/build/tests/renderers/RadioInputRendererComponent.test.js +0 -89
  57. package/build/tests/renderers/ReviewRenderer.test.js +0 -41
  58. package/build/tests/renderers/TextInputRenderer.test.js +0 -245
  59. package/build/tests/renderers/TimeZoneHeader.test.js +0 -19
  60. package/build/tests/renderers/UploadInputRenderer.maxSize.test.js +0 -22
  61. package/build/tests/renderers/value-utils.test.js +0 -24
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 classNames37() {
67
+ function classNames39() {
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 classNames37.apply(null, arg);
85
+ return classNames39.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
- classNames37.default = classNames37;
109
- module.exports = classNames37;
108
+ classNames39.default = classNames39;
109
+ module.exports = classNames39;
110
110
  } else if (typeof define === "function" && typeof define.amd === "object" && define.amd) {
111
111
  define("classnames", [], function() {
112
- return classNames37;
112
+ return classNames39;
113
113
  });
114
114
  } else {
115
- window.classNames = classNames37;
115
+ window.classNames = classNames39;
116
116
  }
117
117
  })();
118
118
  }
@@ -1643,7 +1643,7 @@ var getInlineAlertOrValidation = (validationState, inlineAlert) => {
1643
1643
  };
1644
1644
  var CheckboxInputRenderer_default = CheckboxInputRenderer;
1645
1645
 
1646
- // ../renderers/src/CollectionRenderer/CollectionRenderer.tsx
1646
+ // ../renderers/src/CollectionRenderer/CollectionRendererComponent.tsx
1647
1647
  import { InlinePrompt, Link as DSLink } from "@transferwise/components";
1648
1648
 
1649
1649
  // ../renderers/src/messages/generic-error.messages.ts
@@ -1666,6 +1666,29 @@ var generic_error_messages_default = defineMessages3({
1666
1666
  }
1667
1667
  });
1668
1668
 
1669
+ // ../renderers/src/CollectionRenderer/CollectionRendererComponent.tsx
1670
+ import { useIntl as useIntl3 } from "react-intl";
1671
+ import { Fragment as Fragment2, jsx as jsx35, jsxs as jsxs6 } from "react/jsx-runtime";
1672
+ var CollectionRendererComponent = (props) => {
1673
+ const { state, Search: Search5, AfterSearch, Filters, Results } = props;
1674
+ const { status } = state;
1675
+ const isError = status.type === "error" && (status.reason === "search" || status.reason === "filter");
1676
+ return /* @__PURE__ */ jsxs6(Fragment2, { children: [
1677
+ /* @__PURE__ */ jsx35(Search5, __spreadValues({}, props)),
1678
+ /* @__PURE__ */ jsx35(AfterSearch, __spreadValues({}, props)),
1679
+ /* @__PURE__ */ jsx35(Filters, __spreadValues({}, props)),
1680
+ isError ? /* @__PURE__ */ jsx35(SearchError, { retry: status.retry }) : /* @__PURE__ */ jsx35(Results, __spreadValues({}, props))
1681
+ ] });
1682
+ };
1683
+ var SearchError = ({ retry }) => {
1684
+ const { formatMessage } = useIntl3();
1685
+ return /* @__PURE__ */ jsxs6(InlinePrompt, { width: "full", sentiment: "negative", children: [
1686
+ formatMessage(generic_error_messages_default.genericError),
1687
+ "\xA0",
1688
+ /* @__PURE__ */ jsx35(DSLink, { onClick: retry, children: formatMessage(generic_error_messages_default.retry) })
1689
+ ] });
1690
+ };
1691
+
1669
1692
  // ../../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
1670
1693
  import * as React from "react";
1671
1694
  import { flushSync } from "react-dom";
@@ -3202,14 +3225,14 @@ function useWindowVirtualizer(options) {
3202
3225
  }, options));
3203
3226
  }
3204
3227
 
3205
- // ../renderers/src/CollectionRenderer/components/ContentComponent.tsx
3228
+ // ../renderers/src/CollectionRenderer/components/VirtualisedContentComponent.tsx
3206
3229
  import { ProcessIndicator, Button as Button4 } from "@transferwise/components";
3207
3230
  import { useRef as useRef4, useEffect as useEffect7, useLayoutEffect as useLayoutEffect2, useState as useState8 } from "react";
3208
3231
 
3209
3232
  // ../renderers/src/step/StepFooter.tsx
3210
3233
  import { Button as Button3 } from "@transferwise/components";
3211
3234
  import { useEffect as useEffect6, useRef as useRef3, useState as useState7 } from "react";
3212
- import { useIntl as useIntl3 } from "react-intl";
3235
+ import { useIntl as useIntl4 } from "react-intl";
3213
3236
 
3214
3237
  // ../renderers/src/messages/step.messages.ts
3215
3238
  import { defineMessages as defineMessages4 } from "react-intl";
@@ -3222,23 +3245,23 @@ var step_messages_default = defineMessages4({
3222
3245
  });
3223
3246
 
3224
3247
  // ../renderers/src/step/StepFooter.tsx
3225
- import { Fragment as Fragment2, jsx as jsx35, jsxs as jsxs6 } from "react/jsx-runtime";
3248
+ import { Fragment as Fragment3, jsx as jsx36, jsxs as jsxs7 } from "react/jsx-runtime";
3226
3249
  var SCROLL_TO_BOTTOM = "scroll-to-bottom";
3227
3250
  var StepFooter = ({ footer, tags }) => {
3228
3251
  if (tags == null ? void 0 : tags.includes(SCROLL_TO_BOTTOM)) {
3229
- return /* @__PURE__ */ jsx35(FooterWithScrollButton, { footer });
3252
+ return /* @__PURE__ */ jsx36(FooterWithScrollButton, { footer });
3230
3253
  }
3231
- return /* @__PURE__ */ jsx35(DefaultFooter, { footer });
3254
+ return /* @__PURE__ */ jsx36(DefaultFooter, { footer });
3232
3255
  };
3233
3256
  var DefaultFooter = ({ footer }) => {
3234
3257
  const hasFooter = footer && Array.isArray(footer) && footer.length > 0;
3235
- return hasFooter ? /* @__PURE__ */ jsx35("div", { className: "df-step-fixed__footer", children: footer }) : void 0;
3258
+ return hasFooter ? /* @__PURE__ */ jsx36("div", { className: "df-step-fixed__footer", children: footer }) : void 0;
3236
3259
  };
3237
3260
  var FooterWithScrollButton = ({ footer }) => {
3238
- const { formatMessage } = useIntl3();
3261
+ const { formatMessage } = useIntl4();
3239
3262
  const endOfLayoutRef = useRef3(null);
3240
3263
  const isElementVisible = useIsElementVisible(endOfLayoutRef);
3241
- const scrollButton = /* @__PURE__ */ jsx35(
3264
+ const scrollButton = /* @__PURE__ */ jsx36(
3242
3265
  Button3,
3243
3266
  {
3244
3267
  className: "m-b-1",
@@ -3254,11 +3277,11 @@ var FooterWithScrollButton = ({ footer }) => {
3254
3277
  );
3255
3278
  const hasStepFooterContent = footer && Array.isArray(footer) && footer.length > 0;
3256
3279
  if (isElementVisible && !hasStepFooterContent) {
3257
- return /* @__PURE__ */ jsx35("div", { ref: endOfLayoutRef, "aria-hidden": "true" });
3280
+ return /* @__PURE__ */ jsx36("div", { ref: endOfLayoutRef, "aria-hidden": "true" });
3258
3281
  }
3259
- return /* @__PURE__ */ jsxs6(Fragment2, { children: [
3260
- /* @__PURE__ */ jsx35("div", { ref: endOfLayoutRef, "aria-hidden": "true" }),
3261
- /* @__PURE__ */ jsxs6("div", { className: "df-step-fixed__footer", children: [
3282
+ return /* @__PURE__ */ jsxs7(Fragment3, { children: [
3283
+ /* @__PURE__ */ jsx36("div", { ref: endOfLayoutRef, "aria-hidden": "true" }),
3284
+ /* @__PURE__ */ jsxs7("div", { className: "df-step-fixed__footer", children: [
3262
3285
  !isElementVisible && scrollButton,
3263
3286
  footer
3264
3287
  ] })
@@ -3281,8 +3304,8 @@ var useIsElementVisible = (elementRef, root = null) => {
3281
3304
  return isVisible;
3282
3305
  };
3283
3306
 
3284
- // ../renderers/src/CollectionRenderer/components/ContentComponent.tsx
3285
- import { useIntl as useIntl4 } from "react-intl";
3307
+ // ../renderers/src/CollectionRenderer/components/VirtualisedContentComponent.tsx
3308
+ import { useIntl as useIntl5 } from "react-intl";
3286
3309
 
3287
3310
  // ../renderers/src/messages/collection.messages.ts
3288
3311
  import { defineMessages as defineMessages5 } from "react-intl";
@@ -3296,6 +3319,16 @@ var collection_messages_default = defineMessages5({
3296
3319
  id: "df.wise.Collection.clearText",
3297
3320
  defaultMessage: "Clear text",
3298
3321
  description: "A message shown at the edge of the search bar to clear the users query"
3322
+ },
3323
+ showMoreResultsButton: {
3324
+ id: "df.wise.Collection.showMoreResultsButton",
3325
+ defaultMessage: "Show all {count} results",
3326
+ description: "A message shown at the bottom of a truncated list of items, clicking will expand to show more"
3327
+ },
3328
+ showLessResultsButton: {
3329
+ id: "df.wise.Collection.showLessResultsButton",
3330
+ defaultMessage: "Show less results",
3331
+ description: "A message shown at the bottom of an expanded list of items, clicking will truncate to show only a few"
3299
3332
  }
3300
3333
  });
3301
3334
 
@@ -3319,10 +3352,48 @@ var getScrollableAncestor = (element) => {
3319
3352
  return null;
3320
3353
  };
3321
3354
 
3322
- // ../renderers/src/CollectionRenderer/components/ContentComponent.tsx
3323
- import { jsx as jsx36, jsxs as jsxs7 } from "react/jsx-runtime";
3324
- var ContentComponent = (props) => {
3325
- const { state, status, SectionHeader, Item } = props;
3355
+ // ../renderers/src/CollectionRenderer/components/flattenCollectionItems.ts
3356
+ var flattenCollectionItems = (sections) => {
3357
+ return sections.flatMap((section) => {
3358
+ if (section.type === "items") {
3359
+ return flattenItemsBody(section);
3360
+ }
3361
+ if (section.type === "layout") {
3362
+ return flattenLayoutBody(section);
3363
+ }
3364
+ return [];
3365
+ });
3366
+ };
3367
+ var flattenItemsBody = (section) => {
3368
+ return [
3369
+ ...flattenSectionHeader(section),
3370
+ ...section.items.map((item) => ({
3371
+ item,
3372
+ type: "item"
3373
+ }))
3374
+ ];
3375
+ };
3376
+ var flattenLayoutBody = (section) => [
3377
+ ...flattenSectionHeader(section),
3378
+ __spreadProps(__spreadValues({}, section), {
3379
+ type: "layout"
3380
+ })
3381
+ ];
3382
+ var flattenSectionHeader = (section) => section.title ? [
3383
+ {
3384
+ type: "header",
3385
+ title: section.title,
3386
+ items: section.type === "items" ? section.items : void 0,
3387
+ id: section.id,
3388
+ callToAction: section.callToAction
3389
+ }
3390
+ ] : [];
3391
+
3392
+ // ../renderers/src/CollectionRenderer/components/VirtualisedContentComponent.tsx
3393
+ import { jsx as jsx37, jsxs as jsxs8 } from "react/jsx-runtime";
3394
+ var VirtualisedContentComponent = (props) => {
3395
+ const { state, SectionHeader, Item } = props;
3396
+ const { status } = state;
3326
3397
  const contentRef = useRef4(null);
3327
3398
  const [scrollElement, setScrollElement] = useState8(null);
3328
3399
  useLayoutEffect2(() => {
@@ -3339,34 +3410,20 @@ var ContentComponent = (props) => {
3339
3410
  status.loadMore();
3340
3411
  }
3341
3412
  }, [isBottomVisible, state.afterSectionsProps.length, status]);
3342
- const stateCount = state.sections.reduce(
3343
- (total, section) => section.items.length + total + (section.title ? 1 : 0),
3344
- 0
3345
- );
3346
- const items = state.sections.flatMap((section) => [
3347
- ...section.title ? [
3348
- {
3349
- type: "header",
3350
- title: section.title,
3351
- items: section.items,
3352
- id: section.id,
3353
- callToAction: section.callToAction
3354
- }
3355
- ] : [],
3356
- ...section.items.map((item) => ({
3357
- item,
3358
- type: "item"
3359
- }))
3360
- ]);
3413
+ const stateCount = state.sections.reduce((total, section) => {
3414
+ const count = section.type === "items" ? section.items.length : 1;
3415
+ return count + total + (section.title ? 1 : 0);
3416
+ }, 0);
3417
+ const items = flattenCollectionItems(state.sections);
3361
3418
  const listRef = useRef4(null);
3362
3419
  const listOffsetRef = useRef4(0);
3363
3420
  useLayoutEffect2(() => {
3364
3421
  var _a, _b;
3365
3422
  listOffsetRef.current = (_b = (_a = listRef.current) == null ? void 0 : _a.offsetTop) != null ? _b : 0;
3366
3423
  });
3367
- return /* @__PURE__ */ jsxs7("div", { ref: contentRef, children: [
3424
+ return /* @__PURE__ */ jsxs8("div", { ref: contentRef, children: [
3368
3425
  state.beforeSections,
3369
- scrollElement ? /* @__PURE__ */ jsx36(
3426
+ scrollElement ? /* @__PURE__ */ jsx37(
3370
3427
  ElementVirtualizedItems,
3371
3428
  {
3372
3429
  Item,
@@ -3375,7 +3432,7 @@ var ContentComponent = (props) => {
3375
3432
  scrollElement,
3376
3433
  stateCount
3377
3434
  }
3378
- ) : /* @__PURE__ */ jsx36(
3435
+ ) : /* @__PURE__ */ jsx37(
3379
3436
  WindowVirtualizedItems,
3380
3437
  {
3381
3438
  Item,
@@ -3384,7 +3441,7 @@ var ContentComponent = (props) => {
3384
3441
  stateCount
3385
3442
  }
3386
3443
  ),
3387
- /* @__PURE__ */ jsx36("div", { ref: endOfContentRef, className: "d-flex m-x-auto m-y-2", children: /* @__PURE__ */ jsx36(PaginationComponent, { status, state }) }),
3444
+ /* @__PURE__ */ jsx37("div", { ref: endOfContentRef, className: "d-flex m-x-auto m-y-2", children: /* @__PURE__ */ jsx37(PaginationComponent, { state }) }),
3388
3445
  state.afterSections
3389
3446
  ] });
3390
3447
  };
@@ -3396,7 +3453,7 @@ var WindowVirtualizedItems = (props) => {
3396
3453
  estimateSize: () => 120,
3397
3454
  overscan: 10
3398
3455
  });
3399
- return /* @__PURE__ */ jsx36(VirtualizedItems, __spreadProps(__spreadValues({}, props), { virtualItemsRef, virtualizer }));
3456
+ return /* @__PURE__ */ jsx37(VirtualizedItems, __spreadProps(__spreadValues({}, props), { virtualItemsRef, virtualizer }));
3400
3457
  };
3401
3458
  var ElementVirtualizedItems = (props) => {
3402
3459
  const { scrollElement, stateCount } = props;
@@ -3407,7 +3464,7 @@ var ElementVirtualizedItems = (props) => {
3407
3464
  estimateSize: () => 120,
3408
3465
  overscan: 10
3409
3466
  });
3410
- return /* @__PURE__ */ jsx36(VirtualizedItems, __spreadProps(__spreadValues({}, props), { virtualItemsRef, virtualizer }));
3467
+ return /* @__PURE__ */ jsx37(VirtualizedItems, __spreadProps(__spreadValues({}, props), { virtualItemsRef, virtualizer }));
3411
3468
  };
3412
3469
  var VirtualizedItems = ({
3413
3470
  Item,
@@ -3415,7 +3472,7 @@ var VirtualizedItems = ({
3415
3472
  items,
3416
3473
  virtualItemsRef,
3417
3474
  virtualizer
3418
- }) => /* @__PURE__ */ jsx36(
3475
+ }) => /* @__PURE__ */ jsx37(
3419
3476
  "div",
3420
3477
  {
3421
3478
  ref: virtualItemsRef,
@@ -3429,7 +3486,7 @@ var VirtualizedItems = ({
3429
3486
  if (!i) {
3430
3487
  return null;
3431
3488
  }
3432
- return /* @__PURE__ */ jsx36(
3489
+ return /* @__PURE__ */ jsxs8(
3433
3490
  "div",
3434
3491
  {
3435
3492
  ref: virtualizer.measureElement,
@@ -3441,17 +3498,19 @@ var VirtualizedItems = ({
3441
3498
  width: "100%",
3442
3499
  transform: `translateY(${item.start - virtualizer.options.scrollMargin}px)`
3443
3500
  },
3444
- children: i.type === "header" ? /* @__PURE__ */ jsx36(SectionHeader, __spreadValues({}, i)) : /* @__PURE__ */ jsx36(Item, __spreadValues({}, i.item))
3501
+ children: [
3502
+ i.type === "header" && /* @__PURE__ */ jsx37(SectionHeader, __spreadValues({}, i)),
3503
+ i.type === "item" && /* @__PURE__ */ jsx37(Item, __spreadValues({}, i.item)),
3504
+ i.type === "layout" && i.children
3505
+ ]
3445
3506
  },
3446
3507
  item.key
3447
3508
  );
3448
3509
  })
3449
3510
  }
3450
3511
  );
3451
- var PaginationComponent = ({
3452
- status,
3453
- state
3454
- }) => {
3512
+ var PaginationComponent = ({ state }) => {
3513
+ const { status } = state;
3455
3514
  const isPaginationError = status.type === "error" && status.reason === "pagination";
3456
3515
  const isPaginationLoading = status.type === "loading" && status.reason === "pagination";
3457
3516
  const loadMore = status.type === "idle" ? status.loadMore : void 0;
@@ -3459,34 +3518,41 @@ var PaginationComponent = ({
3459
3518
  return null;
3460
3519
  }
3461
3520
  if (isPaginationError) {
3462
- return /* @__PURE__ */ jsx36(LoadMoreButton, { onClick: status.retry });
3521
+ return /* @__PURE__ */ jsx37(LoadMoreButton, { onClick: status.retry });
3463
3522
  }
3464
3523
  if (state.afterSectionsProps.length > 0 && loadMore) {
3465
- return /* @__PURE__ */ jsx36(LoadMoreButton, { onClick: loadMore });
3524
+ return /* @__PURE__ */ jsx37(LoadMoreButton, { onClick: loadMore });
3466
3525
  }
3467
- return /* @__PURE__ */ jsx36(ProcessIndicator, { size: "xs", "data-testid": "collection-pagination-loader" });
3526
+ return /* @__PURE__ */ jsx37(ProcessIndicator, { size: "xs", "data-testid": "collection-pagination-loader" });
3468
3527
  };
3469
3528
  var LoadMoreButton = ({ onClick }) => {
3470
- const { formatMessage } = useIntl4();
3471
- return /* @__PURE__ */ jsx36("div", { className: "d-flex m-x-auto", children: /* @__PURE__ */ jsx36(Button4, { v2: true, size: "sm", priority: "secondary-neutral", onClick, children: formatMessage(collection_messages_default.loadMoreButton) }) });
3529
+ const { formatMessage } = useIntl5();
3530
+ return /* @__PURE__ */ jsx37("div", { className: "d-flex m-x-auto", children: /* @__PURE__ */ jsx37(Button4, { v2: true, size: "sm", priority: "secondary-neutral", onClick, children: formatMessage(collection_messages_default.loadMoreButton) }) });
3472
3531
  };
3473
3532
 
3474
- // ../renderers/src/CollectionRenderer/components/FilterComponent.tsx
3533
+ // ../renderers/src/CollectionRenderer/v1/FilterComponent.tsx
3475
3534
  import { Chips } from "@transferwise/components";
3476
- import { jsx as jsx37 } from "react/jsx-runtime";
3477
- var FiltersComponent = ({ state }) => {
3478
- const { filters } = state;
3479
- return /* @__PURE__ */ jsx37("div", { className: "df-filters-container", children: filters.map((filter) => {
3480
- var _a;
3481
- return /* @__PURE__ */ jsx37(FilterComponent, __spreadValues({}, filter), JSON.stringify((_a = filter.options) == null ? void 0 : _a.map((o) => o.value)));
3535
+ import { jsx as jsx38 } from "react/jsx-runtime";
3536
+ var FiltersComponent = (props) => {
3537
+ const _a = props, { Filter } = _a, collectionProps = __objRest(_a, ["Filter"]);
3538
+ const { filters } = collectionProps.state;
3539
+ return /* @__PURE__ */ jsx38("div", { className: "df-filters-container", children: filters.map((filter) => {
3540
+ var _a2;
3541
+ return /* @__PURE__ */ jsx38(
3542
+ Filter,
3543
+ __spreadProps(__spreadValues({}, collectionProps), {
3544
+ filter
3545
+ }),
3546
+ JSON.stringify((_a2 = filter.options) == null ? void 0 : _a2.map((o) => o.value))
3547
+ );
3482
3548
  }) });
3483
3549
  };
3484
- var FilterComponent = (filter) => {
3550
+ var FilterComponent = ({ filter }) => {
3485
3551
  const { multiSelect, options } = filter;
3486
3552
  if (!options) {
3487
3553
  return null;
3488
3554
  }
3489
- return /* @__PURE__ */ jsx37(
3555
+ return /* @__PURE__ */ jsx38(
3490
3556
  Chips,
3491
3557
  {
3492
3558
  className: "m-b-1",
@@ -3516,7 +3582,7 @@ import { ListItem as ListItem6 } from "@transferwise/components";
3516
3582
 
3517
3583
  // ../renderers/src/utils/listItem/getAdditionalInfo.tsx
3518
3584
  import { ListItem as ListItem4 } from "@transferwise/components";
3519
- import { jsx as jsx38 } from "react/jsx-runtime";
3585
+ import { jsx as jsx39 } from "react/jsx-runtime";
3520
3586
  var getAdditionalInfo = (additionalInfo) => {
3521
3587
  var _a, _b;
3522
3588
  if (!additionalInfo) {
@@ -3524,7 +3590,7 @@ var getAdditionalInfo = (additionalInfo) => {
3524
3590
  }
3525
3591
  const { href, text, onClick } = additionalInfo;
3526
3592
  if (href || onClick) {
3527
- return /* @__PURE__ */ jsx38(
3593
+ return /* @__PURE__ */ jsx39(
3528
3594
  ListItem4.AdditionalInfo,
3529
3595
  {
3530
3596
  action: __spreadValues({
@@ -3533,19 +3599,19 @@ var getAdditionalInfo = (additionalInfo) => {
3533
3599
  }
3534
3600
  );
3535
3601
  }
3536
- return /* @__PURE__ */ jsx38(ListItem4.AdditionalInfo, { children: additionalInfo == null ? void 0 : additionalInfo.text });
3602
+ return /* @__PURE__ */ jsx39(ListItem4.AdditionalInfo, { children: additionalInfo == null ? void 0 : additionalInfo.text });
3537
3603
  };
3538
3604
 
3539
3605
  // ../renderers/src/utils/listItem/getCTAControl.tsx
3540
3606
  import { ListItem as ListItem5 } from "@transferwise/components";
3541
- import { jsx as jsx39 } from "react/jsx-runtime";
3607
+ import { jsx as jsx40 } from "react/jsx-runtime";
3542
3608
  var getCTAControl = (callToAction, { ctaSecondary, fullyInteractive }) => {
3543
3609
  if (!callToAction) {
3544
3610
  return void 0;
3545
3611
  }
3546
3612
  const { accessibilityDescription, title, context } = callToAction;
3547
3613
  const { priority, sentiment } = getPriorityAndSentiment(ctaSecondary, context);
3548
- return /* @__PURE__ */ jsx39(
3614
+ return /* @__PURE__ */ jsx40(
3549
3615
  ListItem5.Button,
3550
3616
  __spreadProps(__spreadValues({}, callToAction.getAnchorProps()), {
3551
3617
  partiallyInteractive: !fullyInteractive,
@@ -3570,7 +3636,7 @@ var shouldUseAvatar = (control, tags) => {
3570
3636
  };
3571
3637
 
3572
3638
  // ../renderers/src/CollectionRenderer/components/ItemComponent.tsx
3573
- import { jsx as jsx40 } from "react/jsx-runtime";
3639
+ import { jsx as jsx41 } from "react/jsx-runtime";
3574
3640
  var ItemComponent = (props) => {
3575
3641
  var _a, _b;
3576
3642
  const {
@@ -3592,7 +3658,7 @@ var ItemComponent = (props) => {
3592
3658
  ctaSecondary: (_a = tags == null ? void 0 : tags.includes("cta-secondary")) != null ? _a : false,
3593
3659
  fullyInteractive: (_b = (tags == null ? void 0 : tags.includes("fully-interactive")) && (additionalInfo == null ? void 0 : additionalInfo.onClick) == null) != null ? _b : false
3594
3660
  };
3595
- return /* @__PURE__ */ jsx40(
3661
+ return /* @__PURE__ */ jsx41(
3596
3662
  ListItem6,
3597
3663
  {
3598
3664
  title,
@@ -3609,15 +3675,15 @@ var ItemComponent = (props) => {
3609
3675
  };
3610
3676
  var getNavigationControl = (onClick, href) => {
3611
3677
  if (href) {
3612
- return /* @__PURE__ */ jsx40(ListItem6.Navigation, { href });
3678
+ return /* @__PURE__ */ jsx41(ListItem6.Navigation, { href });
3613
3679
  }
3614
3680
  if (onClick) {
3615
- return /* @__PURE__ */ jsx40(ListItem6.Navigation, { onClick });
3681
+ return /* @__PURE__ */ jsx41(ListItem6.Navigation, { onClick });
3616
3682
  }
3617
3683
  return null;
3618
3684
  };
3619
3685
 
3620
- // ../renderers/src/CollectionRenderer/components/SearchComponent.tsx
3686
+ // ../renderers/src/CollectionRenderer/v1/SearchComponent.tsx
3621
3687
  import {
3622
3688
  InputGroup,
3623
3689
  Input,
@@ -3625,46 +3691,44 @@ import {
3625
3691
  IconButton
3626
3692
  } from "@transferwise/components";
3627
3693
  import { CrossCircleFill, Search } from "@transferwise/icons";
3628
- import { useIntl as useIntl5 } from "react-intl";
3629
- import { jsx as jsx41 } from "react/jsx-runtime";
3694
+ import { useIntl as useIntl6 } from "react-intl";
3695
+ import { jsx as jsx42 } from "react/jsx-runtime";
3630
3696
  var SearchComponent = ({
3631
3697
  state,
3632
- status,
3633
3698
  features,
3634
3699
  control,
3635
- tags
3700
+ tags,
3701
+ onSearchChange
3636
3702
  }) => {
3703
+ var _a;
3637
3704
  const { search } = state;
3638
- const { formatMessage } = useIntl5();
3705
+ const { formatMessage } = useIntl6();
3639
3706
  if (!search) {
3640
3707
  return;
3641
3708
  }
3642
3709
  const getAddon = () => {
3643
- var _a;
3644
- if (status.type === "loading") {
3645
- return { content: /* @__PURE__ */ jsx41(ProcessIndicator2, { size: "xs", "data-testid": "collection-search-loader" }) };
3710
+ var _a2;
3711
+ if (state.status.type === "loading") {
3712
+ return { content: /* @__PURE__ */ jsx42(ProcessIndicator2, { size: "xs", "data-testid": "collection-search-loader" }) };
3646
3713
  }
3647
- if ((_a = state.search) == null ? void 0 : _a.query) {
3714
+ if ((_a2 = state.search) == null ? void 0 : _a2.query) {
3648
3715
  return {
3649
3716
  interactive: true,
3650
- content: /* @__PURE__ */ jsx41(
3717
+ content: /* @__PURE__ */ jsx42(
3651
3718
  IconButton,
3652
3719
  {
3653
3720
  priority: "minimal",
3654
3721
  size: 24,
3655
3722
  "aria-label": formatMessage(collection_messages_default.clearTextLabel),
3656
- onClick: () => {
3657
- var _a2;
3658
- return (_a2 = state.search) == null ? void 0 : _a2.onChange("");
3659
- },
3660
- children: /* @__PURE__ */ jsx41(CrossCircleFill, {})
3723
+ onClick: () => onSearchChange(""),
3724
+ children: /* @__PURE__ */ jsx42(CrossCircleFill, {})
3661
3725
  }
3662
3726
  )
3663
3727
  };
3664
3728
  }
3665
3729
  return void 0;
3666
3730
  };
3667
- return /* @__PURE__ */ jsx41(
3731
+ return /* @__PURE__ */ jsx42(
3668
3732
  FieldInput_default,
3669
3733
  {
3670
3734
  id: "search",
@@ -3675,17 +3739,17 @@ var SearchComponent = ({
3675
3739
  features,
3676
3740
  control,
3677
3741
  tags,
3678
- children: /* @__PURE__ */ jsx41(InputGroup, { addonStart: { content: /* @__PURE__ */ jsx41(Search, { size: 24 }) }, addonEnd: getAddon(), children: /* @__PURE__ */ jsx41(
3742
+ children: /* @__PURE__ */ jsx42(InputGroup, { addonStart: { content: /* @__PURE__ */ jsx42(Search, { size: 24 }) }, addonEnd: getAddon(), children: /* @__PURE__ */ jsx42(
3679
3743
  Input,
3680
3744
  {
3681
3745
  id: "search",
3682
3746
  name: "search",
3683
3747
  shape: "pill",
3684
- placeholder: search.hint,
3748
+ placeholder: (_a = search.hints) == null ? void 0 : _a[0],
3685
3749
  type: "text",
3686
3750
  value: search.query,
3687
3751
  onChange: ({ currentTarget: { value } }) => {
3688
- search.onChange(value);
3752
+ onSearchChange(value);
3689
3753
  }
3690
3754
  }
3691
3755
  ) })
@@ -3694,66 +3758,366 @@ var SearchComponent = ({
3694
3758
  };
3695
3759
 
3696
3760
  // ../renderers/src/CollectionRenderer/components/SectionHeaderComponent.tsx
3697
- import { jsx as jsx42 } from "react/jsx-runtime";
3761
+ import { jsx as jsx43 } from "react/jsx-runtime";
3698
3762
  var SectionHeaderComponent = ({
3699
3763
  title,
3700
3764
  callToAction
3701
- }) => /* @__PURE__ */ jsx42(Header, { title, callToAction });
3765
+ }) => /* @__PURE__ */ jsx43(Header, { title, callToAction });
3702
3766
 
3703
3767
  // ../renderers/src/CollectionRenderer/createCollectionRenderer.tsx
3704
- import { jsx as jsx43 } from "react/jsx-runtime";
3768
+ import { jsx as jsx44 } from "react/jsx-runtime";
3705
3769
  var createCollectionRenderer = (canRender, components) => {
3706
3770
  const componentsWithDefaults = __spreadValues({
3707
3771
  Search: SearchComponent,
3772
+ AfterSearch: () => null,
3708
3773
  Filters: FiltersComponent,
3709
3774
  Filter: FilterComponent,
3710
3775
  Item: ItemComponent,
3711
3776
  SectionHeader: SectionHeaderComponent,
3712
- Results: ContentComponent
3777
+ Results: VirtualisedContentComponent
3713
3778
  }, components);
3714
3779
  return {
3715
3780
  canRenderType: "collection",
3716
3781
  canRender,
3717
3782
  render: (props) => {
3718
- return /* @__PURE__ */ jsx43(CollectionRendererComponent, __spreadValues(__spreadValues({}, props), componentsWithDefaults));
3783
+ return /* @__PURE__ */ jsx44(CollectionRendererComponent, __spreadValues(__spreadValues({}, props), componentsWithDefaults));
3719
3784
  }
3720
3785
  };
3721
3786
  };
3722
3787
 
3723
- // ../renderers/src/CollectionRenderer/CollectionRenderer.tsx
3724
- import { useIntl as useIntl6 } from "react-intl";
3725
- import { Fragment as Fragment3, jsx as jsx44, jsxs as jsxs8 } from "react/jsx-runtime";
3726
- var CollectionRendererComponent = (props) => {
3727
- const { status, Search: Search4, Filters, Results } = props;
3728
- return /* @__PURE__ */ jsxs8(Fragment3, { children: [
3729
- /* @__PURE__ */ jsx44(Search4, __spreadValues({}, props)),
3730
- /* @__PURE__ */ jsx44(Filters, __spreadValues({}, props)),
3731
- status.type === "error" && status.reason === "search" ? /* @__PURE__ */ jsx44(SearchError, { retry: status.retry }) : /* @__PURE__ */ jsx44(Results, __spreadValues({}, props))
3788
+ // ../renderers/src/CollectionRenderer/v1/CollectionRendererV1.tsx
3789
+ var CollectionRendererV1 = createCollectionRenderer(
3790
+ () => true
3791
+ );
3792
+ var CollectionRendererV1_default = CollectionRendererV1;
3793
+
3794
+ // ../renderers/src/CollectionRenderer/v2/FilterComponent.tsx
3795
+ var import_classnames12 = __toESM(require_classnames());
3796
+ import { Chips as Chips2, Divider } from "@transferwise/components";
3797
+ import { useState as useState9 } from "react";
3798
+ import { jsx as jsx45, jsxs as jsxs9 } from "react/jsx-runtime";
3799
+ var FiltersComponent2 = (props) => {
3800
+ const _a = props, { Filter } = _a, collectionProps = __objRest(_a, ["Filter"]);
3801
+ const { state, depth, tags } = collectionProps;
3802
+ const { filters, status, search } = state;
3803
+ const isForked = depth > 0;
3804
+ const isSearching = status.type === "loading" && status.reason === "search";
3805
+ const [searchedStateId, setSearchedStateId] = useState9();
3806
+ if (isForked && !isSearching && (search == null ? void 0 : search.query) && searchedStateId !== state.id) {
3807
+ setSearchedStateId(state.id);
3808
+ }
3809
+ const showDivider = (search == null ? void 0 : search.query) === "" && (tags == null ? void 0 : tags.includes("filter-divider"));
3810
+ const isFirstSearchPending = isForked && isSearching && searchedStateId !== state.id;
3811
+ return /* @__PURE__ */ jsx45(
3812
+ "div",
3813
+ {
3814
+ className: (0, import_classnames12.default)("df-filters-collapsible m-t-5", {
3815
+ "df-filters-collapsible--hidden": isFirstSearchPending
3816
+ }),
3817
+ "aria-hidden": isFirstSearchPending,
3818
+ inert: isFirstSearchPending,
3819
+ children: /* @__PURE__ */ jsxs9("div", { className: "df-filters-collapsible-content", children: [
3820
+ showDivider && /* @__PURE__ */ jsx45(Divider, { className: "m-b-4", level: "subsection" }),
3821
+ /* @__PURE__ */ jsx45("div", { className: (0, import_classnames12.default)("df-filters-container", { "df-filter-loader": isSearching }), children: filters.map((filter) => {
3822
+ var _a2;
3823
+ return /* @__PURE__ */ jsx45(
3824
+ Filter,
3825
+ __spreadProps(__spreadValues({}, collectionProps), {
3826
+ filter
3827
+ }),
3828
+ JSON.stringify((_a2 = filter.options) == null ? void 0 : _a2.map((o) => o.value))
3829
+ );
3830
+ }) })
3831
+ ] })
3832
+ }
3833
+ );
3834
+ };
3835
+ var FilterComponent2 = ({
3836
+ filter,
3837
+ state
3838
+ }) => {
3839
+ const { multiSelect, options } = filter;
3840
+ const { status } = state;
3841
+ const disabled = status.type === "loading" && status.reason === "search";
3842
+ if (!options) {
3843
+ return null;
3844
+ }
3845
+ return /* @__PURE__ */ jsx45(
3846
+ Chips2,
3847
+ {
3848
+ className: "m-b-1",
3849
+ multiple: multiSelect,
3850
+ selected: options.some((option) => option.selected) ? options.filter((option) => option.selected).map((option) => option.value) : multiSelect ? [] : "",
3851
+ chips: [
3852
+ ...options.map((option) => ({
3853
+ value: option.value,
3854
+ label: option.title
3855
+ }))
3856
+ ],
3857
+ onChange: (value) => {
3858
+ var _a;
3859
+ if (disabled) {
3860
+ return;
3861
+ }
3862
+ if (value.selectedValue === "") {
3863
+ options == null ? void 0 : options.filter((option) => option.selected).map((option) => option == null ? void 0 : option.onSelect());
3864
+ return;
3865
+ }
3866
+ (_a = options == null ? void 0 : options.find((option) => value.selectedValue === option.value)) == null ? void 0 : _a.onSelect();
3867
+ }
3868
+ },
3869
+ JSON.stringify(options)
3870
+ );
3871
+ };
3872
+
3873
+ // ../renderers/src/CollectionRenderer/v2/SearchComponent.tsx
3874
+ import {
3875
+ InputGroup as InputGroup2,
3876
+ Input as Input2,
3877
+ ProcessIndicator as ProcessIndicator3,
3878
+ IconButton as IconButton2
3879
+ } from "@transferwise/components";
3880
+ import { CrossCircleFill as CrossCircleFill2, Search as Search2 } from "@transferwise/icons";
3881
+ import { useRef as useRef5 } from "react";
3882
+ import { useIntl as useIntl8 } from "react-intl";
3883
+
3884
+ // ../renderers/src/CollectionRenderer/v2/AnimatedSearchHint.tsx
3885
+ var import_classnames13 = __toESM(require_classnames());
3886
+ import { useEffect as useEffect8, useState as useState10 } from "react";
3887
+ import { useIntl as useIntl7 } from "react-intl";
3888
+ import { jsx as jsx46, jsxs as jsxs10 } from "react/jsx-runtime";
3889
+ var STEP_DURATION = 3e3;
3890
+ var AnimatedSearchHint = ({ hints }) => {
3891
+ const { prefix: prefix2, words, allWords } = useSearchHints(hints);
3892
+ const [step, setStep] = useState10(0);
3893
+ useEffect8(() => {
3894
+ const interval = setInterval(() => setStep((current) => current + 1), STEP_DURATION);
3895
+ return () => clearInterval(interval);
3896
+ }, []);
3897
+ return /* @__PURE__ */ jsxs10(
3898
+ "span",
3899
+ {
3900
+ "aria-hidden": true,
3901
+ className: "df-search-hint np-text-body-large",
3902
+ "data-testid": "collection-search-hint",
3903
+ children: [
3904
+ /* @__PURE__ */ jsx46("span", { className: "df-search-hint-prefix", children: prefix2 }),
3905
+ /* @__PURE__ */ jsx46("span", { className: "df-search-hint-viewport", children: [...words, allWords].map((word, index) => /* @__PURE__ */ jsx46(
3906
+ "span",
3907
+ {
3908
+ className: (0, import_classnames13.default)("df-search-hint-word", {
3909
+ "df-search-hint-word--current": index === step,
3910
+ "df-search-hint-word--past": index < step
3911
+ }),
3912
+ children: word
3913
+ },
3914
+ word
3915
+ )) })
3916
+ ]
3917
+ }
3918
+ );
3919
+ };
3920
+ var useSearchHints = (hints) => {
3921
+ var _a;
3922
+ const { formatList } = useIntl7();
3923
+ if (hints.length < 2) {
3924
+ return { prefix: "", words: [], allWords: "", placeholder: (_a = hints[0]) != null ? _a : "" };
3925
+ }
3926
+ const [hintPrefix, ...words] = hints;
3927
+ const prefix2 = `${hintPrefix} `;
3928
+ const allWords = formatList(words, { type: "disjunction" });
3929
+ return { prefix: prefix2, words, allWords, placeholder: `${prefix2}${allWords}` };
3930
+ };
3931
+
3932
+ // ../renderers/src/utils/prefersReducedMotion.ts
3933
+ var REDUCED_MOTION_QUERY = "(prefers-reduced-motion: reduce)";
3934
+ var prefersReducedMotion = () => {
3935
+ return typeof window !== "undefined" && window.matchMedia(REDUCED_MOTION_QUERY).matches;
3936
+ };
3937
+
3938
+ // ../renderers/src/CollectionRenderer/v2/SearchComponent.tsx
3939
+ import { jsx as jsx47, jsxs as jsxs11 } from "react/jsx-runtime";
3940
+ var SearchComponent2 = ({
3941
+ state,
3942
+ depth,
3943
+ fork,
3944
+ pop,
3945
+ features,
3946
+ control,
3947
+ tags,
3948
+ onSearchChange
3949
+ }) => {
3950
+ var _a, _b, _c;
3951
+ const { search } = state;
3952
+ const { formatMessage } = useIntl8();
3953
+ const inputRef = useRef5(null);
3954
+ const { words, placeholder } = useSearchHints((_a = search == null ? void 0 : search.hints) != null ? _a : []);
3955
+ if (!search) {
3956
+ return;
3957
+ }
3958
+ const showAnimatedHint = !search.query && !prefersReducedMotion() && words.length > 1;
3959
+ const getAddon = () => {
3960
+ if (state.status.type === "loading") {
3961
+ return { content: /* @__PURE__ */ jsx47(ProcessIndicator3, { size: "xs", "data-testid": "collection-search-loader" }) };
3962
+ }
3963
+ if (search.query) {
3964
+ return {
3965
+ interactive: true,
3966
+ content: /* @__PURE__ */ jsx47(
3967
+ IconButton2,
3968
+ {
3969
+ priority: "minimal",
3970
+ size: 24,
3971
+ "aria-label": formatMessage(collection_messages_default.clearTextLabel),
3972
+ onClick: () => {
3973
+ onSearchChange("");
3974
+ pop();
3975
+ },
3976
+ children: /* @__PURE__ */ jsx47(CrossCircleFill2, {})
3977
+ }
3978
+ )
3979
+ };
3980
+ }
3981
+ return void 0;
3982
+ };
3983
+ return /* @__PURE__ */ jsx47(
3984
+ FieldInput_default,
3985
+ {
3986
+ id: "search",
3987
+ description: "",
3988
+ validation: void 0,
3989
+ help: "",
3990
+ label: search.title,
3991
+ features,
3992
+ control,
3993
+ tags,
3994
+ children: /* @__PURE__ */ jsxs11(
3995
+ InputGroup2,
3996
+ {
3997
+ addonStart: { content: /* @__PURE__ */ jsx47(Search2, { size: 24 }), initialContentWidth: 24 },
3998
+ addonEnd: getAddon(),
3999
+ children: [
4000
+ /* @__PURE__ */ jsx47(
4001
+ Input2,
4002
+ {
4003
+ ref: inputRef,
4004
+ id: "search",
4005
+ name: "search",
4006
+ shape: "pill",
4007
+ "aria-label": (_b = search.title) != null ? _b : placeholder,
4008
+ placeholder: showAnimatedHint ? "" : placeholder,
4009
+ type: "text",
4010
+ value: search.query,
4011
+ onChange: ({ currentTarget: { value } }) => {
4012
+ if (depth === 0) {
4013
+ fork();
4014
+ }
4015
+ onSearchChange(value);
4016
+ if (value === "") {
4017
+ pop();
4018
+ }
4019
+ }
4020
+ }
4021
+ ),
4022
+ showAnimatedHint && /* @__PURE__ */ jsx47(AnimatedSearchHint, { hints: (_c = search.hints) != null ? _c : [] })
4023
+ ]
4024
+ }
4025
+ )
4026
+ }
4027
+ );
4028
+ };
4029
+
4030
+ // ../renderers/src/CollectionRenderer/components/CollapsibleContentComponent.tsx
4031
+ import { useState as useState11 } from "react";
4032
+ import { Button as Button5 } from "@transferwise/components";
4033
+ import { useIntl as useIntl9 } from "react-intl";
4034
+ import { Fragment as Fragment4, jsx as jsx48, jsxs as jsxs12 } from "react/jsx-runtime";
4035
+ var CollapsibleContentComponent = (props) => {
4036
+ const { state, SectionHeader, Item } = props;
4037
+ return /* @__PURE__ */ jsxs12(Fragment4, { children: [
4038
+ state.beforeSections,
4039
+ state.sections.map((section) => {
4040
+ return /* @__PURE__ */ jsx48(Section, { section, SectionHeader, Item }, section.id);
4041
+ }),
4042
+ state.afterSections
3732
4043
  ] });
3733
4044
  };
3734
- var SearchError = ({ retry }) => {
3735
- const { formatMessage } = useIntl6();
3736
- return /* @__PURE__ */ jsxs8(InlinePrompt, { width: "full", sentiment: "negative", children: [
3737
- formatMessage(generic_error_messages_default.genericError),
3738
- "\xA0",
3739
- /* @__PURE__ */ jsx44(DSLink, { onClick: retry, children: formatMessage(generic_error_messages_default.retry) })
4045
+ var Section = ({ section, SectionHeader, Item }) => {
4046
+ const { formatMessage } = useIntl9();
4047
+ const [expanded, setExpanded] = useState11(false);
4048
+ const itemIds = section.type === "items" ? section.items.map(({ id }) => id).join("") : section.id;
4049
+ const [prevItemIds, setPrevItemIds] = useState11(itemIds);
4050
+ if (itemIds !== prevItemIds) {
4051
+ setExpanded(false);
4052
+ setPrevItemIds(itemIds);
4053
+ }
4054
+ const showLoadMore = section.type === "items" && section.items.some((item) => {
4055
+ var _a;
4056
+ return (_a = item.tags) == null ? void 0 : _a.includes("hidden");
4057
+ });
4058
+ return /* @__PURE__ */ jsxs12(Fragment4, { children: [
4059
+ /* @__PURE__ */ jsx48(SectionHeader, __spreadValues({}, section)),
4060
+ section.type === "items" && section.items.filter((item) => {
4061
+ var _a;
4062
+ return expanded || !((_a = item.tags) == null ? void 0 : _a.includes("hidden"));
4063
+ }).map((item) => /* @__PURE__ */ jsx48(Item, __spreadValues({}, item), item.id)),
4064
+ section.type === "layout" && section.children,
4065
+ showLoadMore ? /* @__PURE__ */ jsx48(
4066
+ Button5,
4067
+ {
4068
+ priority: "tertiary",
4069
+ onClick: () => {
4070
+ setExpanded(!expanded);
4071
+ },
4072
+ children: expanded ? /* @__PURE__ */ jsxs12("span", { children: [
4073
+ formatMessage(collection_messages_default.showLessResultsButton),
4074
+ " "
4075
+ ] }) : /* @__PURE__ */ jsx48("span", { children: formatMessage(collection_messages_default.showMoreResultsButton, { count: section.items.length }) })
4076
+ }
4077
+ ) : void 0
3740
4078
  ] });
3741
4079
  };
3742
- var CollectionRenderer = createCollectionRenderer(() => true);
3743
- var CollectionRenderer_default = CollectionRenderer;
4080
+
4081
+ // ../renderers/src/CollectionRenderer/v2/createContactsCollectionRenderer.tsx
4082
+ import { jsx as jsx49 } from "react/jsx-runtime";
4083
+ var createContactsCollectionRenderer = (canRender, components) => {
4084
+ const componentsWithDefaults = __spreadValues({
4085
+ Search: SearchComponent2,
4086
+ AfterSearch: () => null,
4087
+ Filters: FiltersComponent2,
4088
+ Filter: FilterComponent2,
4089
+ Item: ItemComponent,
4090
+ SectionHeader: SectionHeaderComponent,
4091
+ Results: (props) => {
4092
+ const { depth } = props;
4093
+ return depth > 0 ? /* @__PURE__ */ jsx49(CollapsibleContentComponent, __spreadValues({}, props)) : /* @__PURE__ */ jsx49(VirtualisedContentComponent, __spreadValues({}, props));
4094
+ }
4095
+ }, components);
4096
+ return {
4097
+ canRenderType: "collection",
4098
+ canRender,
4099
+ render: (props) => {
4100
+ return /* @__PURE__ */ jsx49(CollectionRendererComponent, __spreadValues(__spreadValues({}, props), componentsWithDefaults));
4101
+ }
4102
+ };
4103
+ };
4104
+
4105
+ // ../renderers/src/CollectionRenderer/v2/CollectionRendererV2.tsx
4106
+ var ContactsCollectionRenderer = createContactsCollectionRenderer(({ control }) => control === "contacts-collection-v2");
4107
+ var CollectionRendererV2_default = ContactsCollectionRenderer;
3744
4108
 
3745
4109
  // ../renderers/src/ColumnsRenderer.tsx
3746
- var import_classnames12 = __toESM(require_classnames());
4110
+ var import_classnames14 = __toESM(require_classnames());
3747
4111
 
3748
4112
  // ../renderers/src/utils/useIsCollapsed.ts
3749
- import { useEffect as useEffect8, useState as useState9 } from "react";
4113
+ import { useEffect as useEffect9, useState as useState12 } from "react";
3750
4114
  var COLLAPSE_QUERY = "(max-width: 767.98px)";
3751
4115
  var supportsMatchMedia = () => typeof window !== "undefined" && !!window.matchMedia;
3752
4116
  var useIsCollapsed = () => {
3753
- const [collapsed, setCollapsed] = useState9(
4117
+ const [collapsed, setCollapsed] = useState12(
3754
4118
  () => supportsMatchMedia() && window.matchMedia(COLLAPSE_QUERY).matches
3755
4119
  );
3756
- useEffect8(() => {
4120
+ useEffect9(() => {
3757
4121
  if (supportsMatchMedia()) {
3758
4122
  const mql = window.matchMedia(COLLAPSE_QUERY);
3759
4123
  const update = () => setCollapsed(mql.matches);
@@ -3766,7 +4130,7 @@ var useIsCollapsed = () => {
3766
4130
  };
3767
4131
 
3768
4132
  // ../renderers/src/ColumnsRenderer.tsx
3769
- import { jsx as jsx45, jsxs as jsxs9 } from "react/jsx-runtime";
4133
+ import { jsx as jsx50, jsxs as jsxs13 } from "react/jsx-runtime";
3770
4134
  var RIGHT_FIRST_STACKING = "right-first-stacking";
3771
4135
  var ColumnsRenderer = {
3772
4136
  canRenderType: "columns",
@@ -3777,12 +4141,12 @@ function ColumnsRendererComponent(props) {
3777
4141
  const { bias, margin, startChildren, endChildren, tags } = props;
3778
4142
  const isCollapsed = useIsCollapsed();
3779
4143
  const reverse = isCollapsed && ((_a = tags == null ? void 0 : tags.includes(RIGHT_FIRST_STACKING)) != null ? _a : false);
3780
- const startColumn = /* @__PURE__ */ jsx45("div", { className: "df-columns-renderer-column", children: startChildren });
3781
- const endColumn = /* @__PURE__ */ jsx45("div", { className: "df-columns-renderer-column", children: endChildren });
3782
- return /* @__PURE__ */ jsxs9(
4144
+ const startColumn = /* @__PURE__ */ jsx50("div", { className: "df-columns-renderer-column", children: startChildren });
4145
+ const endColumn = /* @__PURE__ */ jsx50("div", { className: "df-columns-renderer-column", children: endChildren });
4146
+ return /* @__PURE__ */ jsxs13(
3783
4147
  "div",
3784
4148
  {
3785
- className: (0, import_classnames12.default)(
4149
+ className: (0, import_classnames14.default)(
3786
4150
  "df-columns-renderer-container",
3787
4151
  getMargin(margin),
3788
4152
  {
@@ -3832,8 +4196,8 @@ var dateToDateString = (date) => {
3832
4196
  import { DateLookup } from "@transferwise/components";
3833
4197
 
3834
4198
  // ../renderers/src/hooks/useAvailabilityRules.ts
3835
- import { useState as useState10 } from "react";
3836
- import { useIntl as useIntl7 } from "react-intl";
4199
+ import { useState as useState13 } from "react";
4200
+ import { useIntl as useIntl10 } from "react-intl";
3837
4201
 
3838
4202
  // ../renderers/src/messages/date-input.messages.ts
3839
4203
  import { defineMessages as defineMessages6 } from "react-intl";
@@ -3848,8 +4212,8 @@ var date_input_messages_default = defineMessages6({
3848
4212
  // ../renderers/src/hooks/useAvailabilityRules.ts
3849
4213
  var useAvailabilityRules = (availability) => {
3850
4214
  var _a, _b;
3851
- const { formatMessage } = useIntl7();
3852
- const [focusedDate, setFocusedDate] = useState10(null);
4215
+ const { formatMessage } = useIntl10();
4216
+ const [focusedDate, setFocusedDate] = useState13(null);
3853
4217
  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);
3854
4218
  const onDateSelect = ({ date }) => {
3855
4219
  setFocusedDate((current) => (current == null ? void 0 : current.getTime()) === date.getTime() ? current : date);
@@ -3901,7 +4265,7 @@ var matchesDateRule = (date, weekday, rule) => {
3901
4265
  var isDate = (date) => date !== null;
3902
4266
 
3903
4267
  // ../renderers/src/DateInputRenderer/DateLookupControl.tsx
3904
- import { jsx as jsx46 } from "react/jsx-runtime";
4268
+ import { jsx as jsx51 } from "react/jsx-runtime";
3905
4269
  var DateLookupControl = ({
3906
4270
  value,
3907
4271
  minimumDate,
@@ -3914,7 +4278,7 @@ var DateLookupControl = ({
3914
4278
  onFocus
3915
4279
  }) => {
3916
4280
  const { disabledRules, onDateSelect, resetFocusedDate } = useAvailabilityRules(availability);
3917
- return /* @__PURE__ */ jsx46(
4281
+ return /* @__PURE__ */ jsx51(
3918
4282
  DateLookup,
3919
4283
  {
3920
4284
  value: dateStringToDateOrNull(value),
@@ -3938,7 +4302,7 @@ var DateLookupControl = ({
3938
4302
 
3939
4303
  // ../renderers/src/DateInputRenderer/CalendarControl.tsx
3940
4304
  import { Calendar } from "@transferwise/components";
3941
- import { jsx as jsx47 } from "react/jsx-runtime";
4305
+ import { jsx as jsx52 } from "react/jsx-runtime";
3942
4306
  var CalendarControl = ({
3943
4307
  id,
3944
4308
  title,
@@ -3961,7 +4325,7 @@ var CalendarControl = ({
3961
4325
  };
3962
4326
  return (
3963
4327
  // Wrapping in a <fieldset> to address some a11y gaps in the current inline Calendar component
3964
- /* @__PURE__ */ jsx47(
4328
+ /* @__PURE__ */ jsx52(
3965
4329
  "fieldset",
3966
4330
  {
3967
4331
  id,
@@ -3978,7 +4342,7 @@ var CalendarControl = ({
3978
4342
  onBlur();
3979
4343
  }
3980
4344
  },
3981
- children: /* @__PURE__ */ jsx47(
4345
+ children: /* @__PURE__ */ jsx52(
3982
4346
  Calendar,
3983
4347
  {
3984
4348
  value: dateStringToDateOrNull(value),
@@ -3998,10 +4362,10 @@ var CalendarControl = ({
3998
4362
 
3999
4363
  // ../renderers/src/DateInputRenderer/DateInputControl.tsx
4000
4364
  import { DateInput } from "@transferwise/components";
4001
- import { jsx as jsx48 } from "react/jsx-runtime";
4365
+ import { jsx as jsx53 } from "react/jsx-runtime";
4002
4366
  var DateInputControl = (_a) => {
4003
4367
  var _b = _a, { autoComplete } = _b, props = __objRest(_b, ["autoComplete"]);
4004
- return /* @__PURE__ */ jsx48(
4368
+ return /* @__PURE__ */ jsx53(
4005
4369
  DateInput,
4006
4370
  __spreadProps(__spreadValues({}, props), {
4007
4371
  dayAutoComplete: getAutocompleteString(autoComplete, "day"),
@@ -4017,7 +4381,7 @@ var getAutocompleteString = (value, suffix) => {
4017
4381
  };
4018
4382
 
4019
4383
  // ../renderers/src/DateInputRenderer/DateInputRenderer.tsx
4020
- import { jsx as jsx49 } from "react/jsx-runtime";
4384
+ import { jsx as jsx54 } from "react/jsx-runtime";
4021
4385
  var DateInputRenderer = {
4022
4386
  canRenderType: "input-date",
4023
4387
  render: (props) => {
@@ -4051,7 +4415,7 @@ var DateInputRenderer = {
4051
4415
  }
4052
4416
  return DateInputControl;
4053
4417
  })();
4054
- return /* @__PURE__ */ jsx49(
4418
+ return /* @__PURE__ */ jsx54(
4055
4419
  FieldInput_default,
4056
4420
  {
4057
4421
  id,
@@ -4064,7 +4428,7 @@ var DateInputRenderer = {
4064
4428
  features: props.features,
4065
4429
  control,
4066
4430
  tags: props.tags,
4067
- children: /* @__PURE__ */ jsx49(UIComponent, __spreadValues({}, inputProps))
4431
+ children: /* @__PURE__ */ jsx54(UIComponent, __spreadValues({}, inputProps))
4068
4432
  }
4069
4433
  );
4070
4434
  }
@@ -4076,8 +4440,8 @@ import { ListItem as ListItem7 } from "@transferwise/components";
4076
4440
 
4077
4441
  // ../renderers/src/DecisionRenderer/DecisionWrapper.tsx
4078
4442
  import { Header as Header3, SearchInput } from "@transferwise/components";
4079
- import { useState as useState11 } from "react";
4080
- import { useIntl as useIntl9 } from "react-intl";
4443
+ import { useState as useState14 } from "react";
4444
+ import { useIntl as useIntl12 } from "react-intl";
4081
4445
 
4082
4446
  // ../renderers/src/messages/filter.messages.ts
4083
4447
  import { defineMessages as defineMessages7 } from "react-intl";
@@ -4147,8 +4511,8 @@ function filterAndSortItems(options, query) {
4147
4511
  var normalizeAndRemoveAccents = (text) => text.trim().toLowerCase().normalize("NFKD").replace(new RegExp("\\p{Diacritic}", "gu"), "");
4148
4512
 
4149
4513
  // ../renderers/src/DecisionRenderer/GroupedDecisionList.tsx
4150
- import { Header as Header2, Section } from "@transferwise/components";
4151
- import { useIntl as useIntl8 } from "react-intl";
4514
+ import { Header as Header2, Section as Section2 } from "@transferwise/components";
4515
+ import { useIntl as useIntl11 } from "react-intl";
4152
4516
 
4153
4517
  // ../renderers/src/messages/group.messages.ts
4154
4518
  import { defineMessages as defineMessages8 } from "react-intl";
@@ -4186,18 +4550,18 @@ var getGroupsFromTags = (knownTags, items) => {
4186
4550
  };
4187
4551
 
4188
4552
  // ../renderers/src/DecisionRenderer/GroupedDecisionList.tsx
4189
- import { Fragment as Fragment4, jsx as jsx50, jsxs as jsxs10 } from "react/jsx-runtime";
4553
+ import { Fragment as Fragment5, jsx as jsx55, jsxs as jsxs14 } from "react/jsx-runtime";
4190
4554
  var groupingTags = Object.keys(group_messages_default).filter((key) => key !== "all");
4191
4555
  var isGroupedDecision = (options) => {
4192
4556
  return getGroupsFromTags(groupingTags, options).length > 0;
4193
4557
  };
4194
4558
  var GroupedDecisionList = (_a) => {
4195
4559
  var _b = _a, { renderDecisionList: renderDecisionList2 } = _b, rest = __objRest(_b, ["renderDecisionList"]);
4196
- const { formatMessage } = useIntl8();
4560
+ const { formatMessage } = useIntl11();
4197
4561
  const { options } = rest;
4198
4562
  const itemsByTag = [...getGroupsFromTags(groupingTags, options), { tag: "all", items: options }];
4199
- return /* @__PURE__ */ jsx50(Fragment4, { children: itemsByTag.map(({ tag, items }) => /* @__PURE__ */ jsxs10(Section, { children: [
4200
- /* @__PURE__ */ jsx50(
4563
+ return /* @__PURE__ */ jsx55(Fragment5, { children: itemsByTag.map(({ tag, items }) => /* @__PURE__ */ jsxs14(Section2, { children: [
4564
+ /* @__PURE__ */ jsx55(
4201
4565
  Header2,
4202
4566
  {
4203
4567
  as: "h2",
@@ -4209,27 +4573,27 @@ var GroupedDecisionList = (_a) => {
4209
4573
  };
4210
4574
 
4211
4575
  // ../renderers/src/DecisionRenderer/DecisionWrapper.tsx
4212
- var import_classnames13 = __toESM(require_classnames());
4213
- import { Fragment as Fragment5, jsx as jsx51, jsxs as jsxs11 } from "react/jsx-runtime";
4576
+ var import_classnames15 = __toESM(require_classnames());
4577
+ import { Fragment as Fragment6, jsx as jsx56, jsxs as jsxs15 } from "react/jsx-runtime";
4214
4578
  var DecisionWrapper = (props) => {
4215
4579
  const { margin, control, title, tags } = props;
4216
- return /* @__PURE__ */ jsxs11("div", { className: (0, import_classnames13.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
4217
- title && /* @__PURE__ */ jsx51(Header3, { as: "h2", title }),
4218
- control === "filtered" ? /* @__PURE__ */ jsx51(FilteredDecisionList, __spreadValues({}, props)) : /* @__PURE__ */ jsx51(UnfilteredDecisionList, __spreadValues({}, props))
4580
+ return /* @__PURE__ */ jsxs15("div", { className: (0, import_classnames15.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
4581
+ title && /* @__PURE__ */ jsx56(Header3, { as: "h2", title }),
4582
+ control === "filtered" ? /* @__PURE__ */ jsx56(FilteredDecisionList, __spreadValues({}, props)) : /* @__PURE__ */ jsx56(UnfilteredDecisionList, __spreadValues({}, props))
4219
4583
  ] });
4220
4584
  };
4221
4585
  var UnfilteredDecisionList = (_a) => {
4222
4586
  var _b = _a, { renderDecisionList: renderDecisionList2 } = _b, rest = __objRest(_b, ["renderDecisionList"]);
4223
- return isGroupedDecision(rest.options) ? /* @__PURE__ */ jsx51(GroupedDecisionList, __spreadProps(__spreadValues({}, rest), { renderDecisionList: renderDecisionList2 })) : renderDecisionList2(rest);
4587
+ return isGroupedDecision(rest.options) ? /* @__PURE__ */ jsx56(GroupedDecisionList, __spreadProps(__spreadValues({}, rest), { renderDecisionList: renderDecisionList2 })) : renderDecisionList2(rest);
4224
4588
  };
4225
4589
  var FilteredDecisionList = (props) => {
4226
- const { formatMessage } = useIntl9();
4227
- const [query, setQuery] = useState11("");
4590
+ const { formatMessage } = useIntl12();
4591
+ const [query, setQuery] = useState14("");
4228
4592
  const { control, options, renderDecisionList: renderDecisionList2 } = props;
4229
4593
  const filteredOptions = (query == null ? void 0 : query.length) > 0 ? filterAndSortItems(options, query) : options;
4230
4594
  const isGrouped = isGroupedDecision(options);
4231
- return /* @__PURE__ */ jsxs11(Fragment5, { children: [
4232
- /* @__PURE__ */ jsx51(
4595
+ return /* @__PURE__ */ jsxs15(Fragment6, { children: [
4596
+ /* @__PURE__ */ jsx56(
4233
4597
  SearchInput,
4234
4598
  {
4235
4599
  placeholder: formatMessage(filter_messages_default.placeholder),
@@ -4241,25 +4605,25 @@ var FilteredDecisionList = (props) => {
4241
4605
  }
4242
4606
  }
4243
4607
  ),
4244
- isGrouped && query.length === 0 ? /* @__PURE__ */ jsx51(GroupedDecisionList, __spreadValues({}, props)) : /* @__PURE__ */ jsxs11(Fragment5, { children: [
4245
- query.length > 0 && /* @__PURE__ */ jsx51(Header3, { as: "h2", title: formatMessage(filter_messages_default.results), className: "m-t-4" }),
4608
+ isGrouped && query.length === 0 ? /* @__PURE__ */ jsx56(GroupedDecisionList, __spreadValues({}, props)) : /* @__PURE__ */ jsxs15(Fragment6, { children: [
4609
+ query.length > 0 && /* @__PURE__ */ jsx56(Header3, { as: "h2", title: formatMessage(filter_messages_default.results), className: "m-t-4" }),
4246
4610
  filteredOptions.length > 0 ? renderDecisionList2({
4247
4611
  control,
4248
4612
  className: query.length === 0 ? "m-t-3" : "",
4249
4613
  options: filteredOptions
4250
- }) : /* @__PURE__ */ jsx51("p", { children: formatMessage(filter_messages_default.noResults) })
4614
+ }) : /* @__PURE__ */ jsx56("p", { children: formatMessage(filter_messages_default.noResults) })
4251
4615
  ] })
4252
4616
  ] });
4253
4617
  };
4254
4618
 
4255
4619
  // ../renderers/src/DecisionRenderer/DecisionRenderer.tsx
4256
- import { Fragment as Fragment6, jsx as jsx52 } from "react/jsx-runtime";
4620
+ import { Fragment as Fragment7, jsx as jsx57 } from "react/jsx-runtime";
4257
4621
  var DecisionRenderer = {
4258
4622
  canRenderType: "decision",
4259
- render: (props) => /* @__PURE__ */ jsx52(DecisionWrapper, __spreadProps(__spreadValues({}, props), { renderDecisionList }))
4623
+ render: (props) => /* @__PURE__ */ jsx57(DecisionWrapper, __spreadProps(__spreadValues({}, props), { renderDecisionList }))
4260
4624
  };
4261
4625
  var renderDecisionList = ({ options, control }) => {
4262
- return /* @__PURE__ */ jsx52(Fragment6, { children: options.map((_a) => {
4626
+ return /* @__PURE__ */ jsx57(Fragment7, { children: options.map((_a) => {
4263
4627
  var _b = _a, { onClick } = _b, rest = __objRest(_b, ["onClick"]);
4264
4628
  const {
4265
4629
  description,
@@ -4272,7 +4636,7 @@ var renderDecisionList = ({ options, control }) => {
4272
4636
  supportingValues,
4273
4637
  tags
4274
4638
  } = rest;
4275
- return /* @__PURE__ */ jsx52(
4639
+ return /* @__PURE__ */ jsx57(
4276
4640
  ListItem7,
4277
4641
  {
4278
4642
  title: itemTitle,
@@ -4284,7 +4648,7 @@ var renderDecisionList = ({ options, control }) => {
4284
4648
  media: getMedia(media, shouldUseAvatar(control, tags)),
4285
4649
  prompt: getInlineAlert(inlineAlert),
4286
4650
  additionalInfo: additionalText ? getAdditionalInfo({ text: additionalText }) : void 0,
4287
- control: /* @__PURE__ */ jsx52(ListItem7.Navigation, __spreadValues({}, getAnchorProps()))
4651
+ control: /* @__PURE__ */ jsx57(ListItem7.Navigation, __spreadValues({}, getAnchorProps()))
4288
4652
  },
4289
4653
  JSON.stringify(rest)
4290
4654
  );
@@ -4293,9 +4657,9 @@ var renderDecisionList = ({ options, control }) => {
4293
4657
  var DecisionRenderer_default = DecisionRenderer;
4294
4658
 
4295
4659
  // ../renderers/src/DividerRenderer.tsx
4296
- var import_classnames14 = __toESM(require_classnames());
4297
- import { Divider } from "@transferwise/components";
4298
- import { jsx as jsx53 } from "react/jsx-runtime";
4660
+ var import_classnames16 = __toESM(require_classnames());
4661
+ import { Divider as Divider2 } from "@transferwise/components";
4662
+ import { jsx as jsx58 } from "react/jsx-runtime";
4299
4663
  var mapControlToLevel = (control) => {
4300
4664
  switch (control) {
4301
4665
  case "section":
@@ -4308,10 +4672,10 @@ var mapControlToLevel = (control) => {
4308
4672
  };
4309
4673
  var DividerRenderer = {
4310
4674
  canRenderType: "divider",
4311
- render: ({ margin, control, tags }) => /* @__PURE__ */ jsx53(
4312
- Divider,
4675
+ render: ({ margin, control, tags }) => /* @__PURE__ */ jsx58(
4676
+ Divider2,
4313
4677
  {
4314
- className: (0, import_classnames14.default)(
4678
+ className: (0, import_classnames16.default)(
4315
4679
  "m-t-0",
4316
4680
  "d-block",
4317
4681
  getMargin(margin),
@@ -4324,7 +4688,7 @@ var DividerRenderer = {
4324
4688
  var DividerRenderer_default = DividerRenderer;
4325
4689
 
4326
4690
  // ../renderers/src/ExternalConfirmationRenderer.tsx
4327
- import { Button as Button5, Markdown as Markdown3, Modal } from "@transferwise/components";
4691
+ import { Button as Button6, Markdown as Markdown3, Modal } from "@transferwise/components";
4328
4692
 
4329
4693
  // ../renderers/src/messages/external-confirmation.messages.ts
4330
4694
  import { defineMessages as defineMessages9 } from "react-intl";
@@ -4352,9 +4716,9 @@ var external_confirmation_messages_default = defineMessages9({
4352
4716
  });
4353
4717
 
4354
4718
  // ../renderers/src/ExternalConfirmationRenderer.tsx
4355
- import { useIntl as useIntl10 } from "react-intl";
4356
- import { useEffect as useEffect9 } from "react";
4357
- import { Fragment as Fragment7, jsx as jsx54, jsxs as jsxs12 } from "react/jsx-runtime";
4719
+ import { useIntl as useIntl13 } from "react-intl";
4720
+ import { useEffect as useEffect10 } from "react";
4721
+ import { Fragment as Fragment8, jsx as jsx59, jsxs as jsxs16 } from "react/jsx-runtime";
4358
4722
  var ExternalConfirmationRenderer = {
4359
4723
  canRenderType: "external-confirmation",
4360
4724
  render: ExternalConfirmationRendererComponent
@@ -4367,20 +4731,20 @@ function ExternalConfirmationRendererComponent({
4367
4731
  control,
4368
4732
  tags
4369
4733
  }) {
4370
- const { formatMessage } = useIntl10();
4371
- useEffect9(() => {
4734
+ const { formatMessage } = useIntl13();
4735
+ useEffect10(() => {
4372
4736
  open();
4373
4737
  }, []);
4374
- return /* @__PURE__ */ jsx54(
4738
+ return /* @__PURE__ */ jsx59(
4375
4739
  Modal,
4376
4740
  {
4377
4741
  open: visible,
4378
4742
  title: formatMessage(external_confirmation_messages_default.title),
4379
- body: /* @__PURE__ */ jsxs12(Fragment7, { children: [
4380
- /* @__PURE__ */ jsx54(Markdown3, { config: { link: { target: "_blank" } }, className: "text-xs-center m-b-5", children: formatMessage(external_confirmation_messages_default.description, { origin: getOrigin(url) }) }),
4381
- /* @__PURE__ */ jsx54("div", { className: "df-box-renderer-fixed-width", children: /* @__PURE__ */ jsxs12("div", { className: "df-box-renderer-width-lg", children: [
4382
- /* @__PURE__ */ jsx54(
4383
- Button5,
4743
+ body: /* @__PURE__ */ jsxs16(Fragment8, { children: [
4744
+ /* @__PURE__ */ jsx59(Markdown3, { config: { link: { target: "_blank" } }, className: "text-xs-center m-b-5", children: formatMessage(external_confirmation_messages_default.description, { origin: getOrigin(url) }) }),
4745
+ /* @__PURE__ */ jsx59("div", { className: "df-box-renderer-fixed-width", children: /* @__PURE__ */ jsxs16("div", { className: "df-box-renderer-width-lg", children: [
4746
+ /* @__PURE__ */ jsx59(
4747
+ Button6,
4384
4748
  {
4385
4749
  v2: true,
4386
4750
  block: true,
@@ -4393,7 +4757,7 @@ function ExternalConfirmationRendererComponent({
4393
4757
  children: formatMessage(external_confirmation_messages_default.open)
4394
4758
  }
4395
4759
  ),
4396
- /* @__PURE__ */ jsx54(Button5, { v2: true, block: true, className: "m-b-2", priority: "tertiary", size: "md", onClick: onCancel, children: formatMessage(external_confirmation_messages_default.cancel) })
4760
+ /* @__PURE__ */ jsx59(Button6, { v2: true, block: true, className: "m-b-2", priority: "tertiary", size: "md", onClick: onCancel, children: formatMessage(external_confirmation_messages_default.cancel) })
4397
4761
  ] }) })
4398
4762
  ] }),
4399
4763
  className: controlAndTagsToCSSClass({ control, tags }),
@@ -4411,51 +4775,51 @@ function getOrigin(url) {
4411
4775
  var ExternalConfirmationRenderer_default = ExternalConfirmationRenderer;
4412
4776
 
4413
4777
  // ../renderers/src/FormRenderer.tsx
4414
- var import_classnames15 = __toESM(require_classnames());
4415
- import { jsx as jsx55 } from "react/jsx-runtime";
4778
+ var import_classnames17 = __toESM(require_classnames());
4779
+ import { jsx as jsx60 } from "react/jsx-runtime";
4416
4780
  var FormRenderer = {
4417
4781
  canRenderType: "form",
4418
- render: ({ children, margin, control, tags }) => /* @__PURE__ */ jsx55("div", { className: (0, import_classnames15.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children })
4782
+ render: ({ children, margin, control, tags }) => /* @__PURE__ */ jsx60("div", { className: (0, import_classnames17.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children })
4419
4783
  };
4420
4784
  var FormRenderer_default = FormRenderer;
4421
4785
 
4422
4786
  // ../renderers/src/FormSectionRenderer.tsx
4423
4787
  import { Header as Header4 } from "@transferwise/components";
4424
- import { jsx as jsx56, jsxs as jsxs13 } from "react/jsx-runtime";
4788
+ import { jsx as jsx61, jsxs as jsxs17 } from "react/jsx-runtime";
4425
4789
  var FormSectionRenderer = {
4426
4790
  canRenderType: "form-section",
4427
- render: ({ title, description, children, control, tags }) => /* @__PURE__ */ jsxs13("fieldset", { className: controlAndTagsToCSSClass({ control, tags }), children: [
4428
- title && /* @__PURE__ */ jsx56(
4791
+ render: ({ title, description, children, control, tags }) => /* @__PURE__ */ jsxs17("fieldset", { className: controlAndTagsToCSSClass({ control, tags }), children: [
4792
+ title && /* @__PURE__ */ jsx61(
4429
4793
  Header4,
4430
4794
  {
4431
4795
  as: "h2",
4432
4796
  title
4433
4797
  }
4434
4798
  ),
4435
- description && /* @__PURE__ */ jsx56("p", { children: description }),
4799
+ description && /* @__PURE__ */ jsx61("p", { children: description }),
4436
4800
  children
4437
4801
  ] })
4438
4802
  };
4439
4803
  var FormSectionRenderer_default = FormSectionRenderer;
4440
4804
 
4441
4805
  // ../renderers/src/HeadingRenderer.tsx
4442
- var import_classnames16 = __toESM(require_classnames());
4806
+ var import_classnames18 = __toESM(require_classnames());
4443
4807
  import { Display, Title } from "@transferwise/components";
4444
- import { jsx as jsx57 } from "react/jsx-runtime";
4808
+ import { jsx as jsx62 } from "react/jsx-runtime";
4445
4809
  var HeadingRenderer = {
4446
4810
  canRenderType: "heading",
4447
4811
  render: Heading
4448
4812
  };
4449
4813
  function Heading(props) {
4450
4814
  const { text, size, align, margin, control } = props;
4451
- const className = (0, import_classnames16.default)(
4815
+ const className = (0, import_classnames18.default)(
4452
4816
  getTextAlignmentAndMargin({ align, margin }),
4453
4817
  controlAndTagsToCSSClass(props)
4454
4818
  );
4455
- return control === "display" ? /* @__PURE__ */ jsx57(DisplayHeading, { size, text, className }) : /* @__PURE__ */ jsx57(StandardHeading, { size, text, className });
4819
+ return control === "display" ? /* @__PURE__ */ jsx62(DisplayHeading, { size, text, className }) : /* @__PURE__ */ jsx62(StandardHeading, { size, text, className });
4456
4820
  }
4457
4821
  function DisplayHeading({ size, text, className }) {
4458
- return /* @__PURE__ */ jsx57(Display, { type: getDisplayType(size), className, children: text });
4822
+ return /* @__PURE__ */ jsx62(Display, { type: getDisplayType(size), className, children: text });
4459
4823
  }
4460
4824
  var getDisplayType = (size) => {
4461
4825
  switch (size) {
@@ -4471,7 +4835,7 @@ var getDisplayType = (size) => {
4471
4835
  }
4472
4836
  };
4473
4837
  function StandardHeading({ size, text, className }) {
4474
- return /* @__PURE__ */ jsx57(Title, { type: getTitleTypeBySize(size), className, children: text });
4838
+ return /* @__PURE__ */ jsx62(Title, { type: getTitleTypeBySize(size), className, children: text });
4475
4839
  }
4476
4840
  var getTitleTypeBySize = (size) => {
4477
4841
  var _a;
@@ -4487,9 +4851,9 @@ var getTitleTypeBySize = (size) => {
4487
4851
  var HeadingRenderer_default = HeadingRenderer;
4488
4852
 
4489
4853
  // ../renderers/src/ImageRenderer/UrlImage.tsx
4490
- var import_classnames17 = __toESM(require_classnames());
4854
+ var import_classnames19 = __toESM(require_classnames());
4491
4855
  import { Image } from "@transferwise/components";
4492
- import { useEffect as useEffect10, useState as useState12 } from "react";
4856
+ import { useEffect as useEffect11, useState as useState15 } from "react";
4493
4857
 
4494
4858
  // ../renderers/src/utils/api-utils.ts
4495
4859
  function isRelativePath(url = "") {
@@ -4499,7 +4863,7 @@ function isRelativePath(url = "") {
4499
4863
  }
4500
4864
 
4501
4865
  // ../renderers/src/ImageRenderer/UrlImage.tsx
4502
- import { jsx as jsx58 } from "react/jsx-runtime";
4866
+ import { jsx as jsx63 } from "react/jsx-runtime";
4503
4867
  function UrlImage({
4504
4868
  accessibilityDescription,
4505
4869
  align,
@@ -4510,23 +4874,23 @@ function UrlImage({
4510
4874
  uri,
4511
4875
  httpClient
4512
4876
  }) {
4513
- const [imageSource, setImageSource] = useState12("");
4514
- useEffect10(() => {
4877
+ const [imageSource, setImageSource] = useState15("");
4878
+ useEffect11(() => {
4515
4879
  if (!uri.startsWith("urn:")) {
4516
4880
  void getImageSource(httpClient, uri).then(setImageSource);
4517
4881
  }
4518
4882
  }, [uri, httpClient]);
4519
- return /* @__PURE__ */ jsx58(
4883
+ return /* @__PURE__ */ jsx63(
4520
4884
  "div",
4521
4885
  {
4522
- className: (0, import_classnames17.default)(
4886
+ className: (0, import_classnames19.default)(
4523
4887
  "df-image",
4524
4888
  align,
4525
4889
  size || "md",
4526
4890
  getMargin(margin),
4527
4891
  controlAndTagsToCSSClass({ control, tags })
4528
4892
  ),
4529
- children: /* @__PURE__ */ jsx58(
4893
+ children: /* @__PURE__ */ jsx63(
4530
4894
  Image,
4531
4895
  {
4532
4896
  className: "df-reserve-space",
@@ -4572,19 +4936,19 @@ var getImageSource = async (httpClient, imageUrl) => {
4572
4936
  };
4573
4937
 
4574
4938
  // ../renderers/src/ImageRenderer/ImageRenderer.tsx
4575
- import { jsx as jsx59 } from "react/jsx-runtime";
4939
+ import { jsx as jsx64 } from "react/jsx-runtime";
4576
4940
  var ImageRenderer = {
4577
4941
  canRenderType: "image",
4578
- render: (props) => isUrnImage(props.uri) ? /* @__PURE__ */ jsx59(UrnImage, __spreadValues({}, props)) : /* @__PURE__ */ jsx59(UrlImage, __spreadValues({}, props))
4942
+ render: (props) => isUrnImage(props.uri) ? /* @__PURE__ */ jsx64(UrnImage, __spreadValues({}, props)) : /* @__PURE__ */ jsx64(UrlImage, __spreadValues({}, props))
4579
4943
  };
4580
4944
 
4581
4945
  // ../renderers/src/ImageRenderer/index.tsx
4582
4946
  var ImageRenderer_default = ImageRenderer;
4583
4947
 
4584
4948
  // ../renderers/src/InstructionsRenderer.tsx
4585
- var import_classnames18 = __toESM(require_classnames());
4949
+ var import_classnames20 = __toESM(require_classnames());
4586
4950
  import { Header as Header5, InstructionsList } from "@transferwise/components";
4587
- import { jsx as jsx60, jsxs as jsxs14 } from "react/jsx-runtime";
4951
+ import { jsx as jsx65, jsxs as jsxs18 } from "react/jsx-runtime";
4588
4952
  var doContext = ["positive", "neutral", "proposition"];
4589
4953
  var dontContext = ["warning", "negative"];
4590
4954
  var InstructionsRenderer = {
@@ -4592,16 +4956,16 @@ var InstructionsRenderer = {
4592
4956
  render: ({ items, margin, title, control, tags }) => {
4593
4957
  const dos = items.filter((item) => doContext.includes(item.context)).map(({ text }) => text);
4594
4958
  const donts = items.filter((item) => dontContext.includes(item.context)).map(({ text }) => text);
4595
- return /* @__PURE__ */ jsxs14("div", { className: (0, import_classnames18.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
4596
- title ? /* @__PURE__ */ jsx60(Header5, { title }) : null,
4597
- /* @__PURE__ */ jsx60(InstructionsList, { dos, donts })
4959
+ return /* @__PURE__ */ jsxs18("div", { className: (0, import_classnames20.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
4960
+ title ? /* @__PURE__ */ jsx65(Header5, { title }) : null,
4961
+ /* @__PURE__ */ jsx65(InstructionsList, { dos, donts })
4598
4962
  ] });
4599
4963
  }
4600
4964
  };
4601
4965
  var InstructionsRenderer_default = InstructionsRenderer;
4602
4966
 
4603
4967
  // ../renderers/src/IntegerInputRenderer.tsx
4604
- import { Input as Input2, InputGroup as InputGroup2 } from "@transferwise/components";
4968
+ import { Input as Input3, InputGroup as InputGroup3 } from "@transferwise/components";
4605
4969
 
4606
4970
  // ../renderers/src/utils/input-utils.ts
4607
4971
  var onWheel = (event) => {
@@ -4626,7 +4990,7 @@ function pick(obj, ...keys) {
4626
4990
  }
4627
4991
 
4628
4992
  // ../renderers/src/IntegerInputRenderer.tsx
4629
- import { jsx as jsx61 } from "react/jsx-runtime";
4993
+ import { jsx as jsx66 } from "react/jsx-runtime";
4630
4994
  var IntegerInputRenderer = {
4631
4995
  canRenderType: "input-integer",
4632
4996
  render: (props) => {
@@ -4641,7 +5005,7 @@ var IntegerInputRenderer = {
4641
5005
  "maximum",
4642
5006
  "minimum"
4643
5007
  );
4644
- return /* @__PURE__ */ jsx61(
5008
+ return /* @__PURE__ */ jsx66(
4645
5009
  FieldInput_default,
4646
5010
  {
4647
5011
  id,
@@ -4654,8 +5018,8 @@ var IntegerInputRenderer = {
4654
5018
  features: props.features,
4655
5019
  control: props.control,
4656
5020
  tags: props.tags,
4657
- children: /* @__PURE__ */ jsx61(InputGroup2, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx61(
4658
- Input2,
5021
+ children: /* @__PURE__ */ jsx66(InputGroup3, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx66(
5022
+ Input3,
4659
5023
  __spreadValues({
4660
5024
  id,
4661
5025
  name: id,
@@ -4677,13 +5041,13 @@ var IntegerInputRenderer = {
4677
5041
  var IntegerInputRenderer_default = IntegerInputRenderer;
4678
5042
 
4679
5043
  // ../renderers/src/ListRenderer.tsx
4680
- var import_classnames19 = __toESM(require_classnames());
5044
+ var import_classnames21 = __toESM(require_classnames());
4681
5045
  import { ListItem as ListItem8 } from "@transferwise/components";
4682
5046
 
4683
5047
  // ../renderers/src/components/Header.tsx
4684
5048
  import { Header as DSHeader } from "@transferwise/components";
4685
- import { jsx as jsx62 } from "react/jsx-runtime";
4686
- var Header = ({ title, callToAction }) => (title || callToAction) && /* @__PURE__ */ jsx62(DSHeader, { title: title != null ? title : "", action: getHeaderAction(callToAction) });
5049
+ import { jsx as jsx67 } from "react/jsx-runtime";
5050
+ var Header = ({ title, callToAction }) => (title || callToAction) && /* @__PURE__ */ jsx67(DSHeader, { title: title != null ? title : "", action: getHeaderAction(callToAction) });
4687
5051
  var getHeaderAction = (callToAction) => {
4688
5052
  if (!callToAction) {
4689
5053
  return void 0;
@@ -4695,11 +5059,11 @@ var getHeaderAction = (callToAction) => {
4695
5059
  };
4696
5060
 
4697
5061
  // ../renderers/src/ListRenderer.tsx
4698
- import { jsx as jsx63, jsxs as jsxs15 } from "react/jsx-runtime";
5062
+ import { jsx as jsx68, jsxs as jsxs19 } from "react/jsx-runtime";
4699
5063
  var ListRenderer = {
4700
5064
  canRenderType: "list",
4701
- render: ({ callToAction, control, margin, items, tags, title }) => /* @__PURE__ */ jsxs15("div", { className: (0, import_classnames19.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
4702
- /* @__PURE__ */ jsx63(Header, { title, callToAction }),
5065
+ render: ({ callToAction, control, margin, items, tags, title }) => /* @__PURE__ */ jsxs19("div", { className: (0, import_classnames21.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
5066
+ /* @__PURE__ */ jsx68(Header, { title, callToAction }),
4703
5067
  items.map((item) => {
4704
5068
  var _a, _b;
4705
5069
  const {
@@ -4716,7 +5080,7 @@ var ListRenderer = {
4716
5080
  ctaSecondary: (_a = itemTags == null ? void 0 : itemTags.includes("cta-secondary")) != null ? _a : false,
4717
5081
  fullyInteractive: (_b = (tags == null ? void 0 : tags.includes("fully-interactive")) && (additionalInfo == null ? void 0 : additionalInfo.onClick) == null) != null ? _b : false
4718
5082
  };
4719
- return /* @__PURE__ */ jsx63(
5083
+ return /* @__PURE__ */ jsx68(
4720
5084
  ListItem8,
4721
5085
  {
4722
5086
  title: itemTitle,
@@ -4736,17 +5100,17 @@ var ListRenderer = {
4736
5100
  var ListRenderer_default = ListRenderer;
4737
5101
 
4738
5102
  // ../renderers/src/LoadingIndicatorRenderer.tsx
4739
- var import_classnames20 = __toESM(require_classnames());
5103
+ var import_classnames22 = __toESM(require_classnames());
4740
5104
  import { Loader } from "@transferwise/components";
4741
- import { jsx as jsx64 } from "react/jsx-runtime";
5105
+ import { jsx as jsx69 } from "react/jsx-runtime";
4742
5106
  var LoadingIndicatorRenderer = {
4743
5107
  canRenderType: "loading-indicator",
4744
- render: ({ size, margin, control, tags }) => /* @__PURE__ */ jsx64(
5108
+ render: ({ size, margin, control, tags }) => /* @__PURE__ */ jsx69(
4745
5109
  Loader,
4746
5110
  {
4747
5111
  size,
4748
5112
  classNames: {
4749
- "tw-loader": (0, import_classnames20.default)(
5113
+ "tw-loader": (0, import_classnames22.default)(
4750
5114
  "tw-loader",
4751
5115
  "m-x-auto",
4752
5116
  getMargin(margin),
@@ -4760,24 +5124,24 @@ var LoadingIndicatorRenderer = {
4760
5124
  var LoadingIndicatorRenderer_default = LoadingIndicatorRenderer;
4761
5125
 
4762
5126
  // ../renderers/src/MarkdownRenderer.tsx
4763
- var import_classnames21 = __toESM(require_classnames());
5127
+ var import_classnames23 = __toESM(require_classnames());
4764
5128
  import { Markdown as Markdown4 } from "@transferwise/components";
4765
- import { jsx as jsx65 } from "react/jsx-runtime";
5129
+ import { jsx as jsx70 } from "react/jsx-runtime";
4766
5130
  var MarkdownRenderer = {
4767
5131
  canRenderType: "markdown",
4768
5132
  render: ({ content, align, margin, size, control, tags }) => {
4769
5133
  const isLarge = !["xs", "sm"].includes(size);
4770
- return /* @__PURE__ */ jsx65(
5134
+ return /* @__PURE__ */ jsx70(
4771
5135
  "div",
4772
5136
  {
4773
- className: (0, import_classnames21.default)(
5137
+ className: (0, import_classnames23.default)(
4774
5138
  getTextAlignmentAndMargin({ align, margin }),
4775
5139
  controlAndTagsToCSSClass({ control, tags })
4776
5140
  ),
4777
- children: /* @__PURE__ */ jsx65(
5141
+ children: /* @__PURE__ */ jsx70(
4778
5142
  Markdown4,
4779
5143
  {
4780
- className: (0, import_classnames21.default)("df-markdown", {
5144
+ className: (0, import_classnames23.default)("df-markdown", {
4781
5145
  "np-text-body-large": isLarge,
4782
5146
  "np-text-body-default": !isLarge
4783
5147
  }),
@@ -4792,17 +5156,17 @@ var MarkdownRenderer = {
4792
5156
  var MarkdownRenderer_default = MarkdownRenderer;
4793
5157
 
4794
5158
  // ../renderers/src/MediaRenderer.tsx
4795
- var import_classnames22 = __toESM(require_classnames());
4796
- import { jsx as jsx66 } from "react/jsx-runtime";
5159
+ var import_classnames24 = __toESM(require_classnames());
5160
+ import { jsx as jsx71 } from "react/jsx-runtime";
4797
5161
  var MediaRenderer = {
4798
5162
  canRenderType: "media",
4799
5163
  render: (_a) => {
4800
5164
  var _b = _a, { media } = _b, rest = __objRest(_b, ["media"]);
4801
5165
  switch (media.type) {
4802
5166
  case "avatar":
4803
- return /* @__PURE__ */ jsx66(AvatarMediaRendererComponent, __spreadValues({ media }, rest));
5167
+ return /* @__PURE__ */ jsx71(AvatarMediaRendererComponent, __spreadValues({ media }, rest));
4804
5168
  case "image":
4805
- return /* @__PURE__ */ jsx66(ImageMediaRendererComponent, __spreadValues({ media }, rest));
5169
+ return /* @__PURE__ */ jsx71(ImageMediaRendererComponent, __spreadValues({ media }, rest));
4806
5170
  case "legacy":
4807
5171
  return null;
4808
5172
  }
@@ -4816,16 +5180,16 @@ var AvatarMediaRendererComponent = ({
4816
5180
  control,
4817
5181
  tags
4818
5182
  }) => {
4819
- return /* @__PURE__ */ jsx66(
5183
+ return /* @__PURE__ */ jsx71(
4820
5184
  "div",
4821
5185
  {
4822
- className: (0, import_classnames22.default)(
5186
+ className: (0, import_classnames24.default)(
4823
5187
  "df-media-layout-avatar",
4824
5188
  align,
4825
5189
  getMargin(margin),
4826
5190
  controlAndTagsToCSSClass({ control, tags })
4827
5191
  ),
4828
- children: /* @__PURE__ */ jsx66(Media, { media, size: mapAvatarMediaSize(size) })
5192
+ children: /* @__PURE__ */ jsx71(Media, { media, size: mapAvatarMediaSize(size) })
4829
5193
  }
4830
5194
  );
4831
5195
  };
@@ -4838,14 +5202,14 @@ var ImageMediaRendererComponent = (_a) => {
4838
5202
  "size"
4839
5203
  ]);
4840
5204
  var _a2, _b2;
4841
- return isUrnImage(media.uri) ? /* @__PURE__ */ jsx66(
5205
+ return isUrnImage(media.uri) ? /* @__PURE__ */ jsx71(
4842
5206
  UrnImage,
4843
5207
  __spreadValues({
4844
5208
  uri: media.uri,
4845
5209
  size: (_a2 = media.size) != null ? _a2 : size,
4846
5210
  accessibilityDescription: media.accessibilityDescription
4847
5211
  }, rest)
4848
- ) : /* @__PURE__ */ jsx66(
5212
+ ) : /* @__PURE__ */ jsx71(
4849
5213
  UrlImage,
4850
5214
  __spreadValues({
4851
5215
  uri: media.uri,
@@ -4870,21 +5234,21 @@ var mapAvatarMediaSize = (size) => {
4870
5234
  };
4871
5235
 
4872
5236
  // ../renderers/src/ModalLayoutRenderer.tsx
4873
- var import_classnames23 = __toESM(require_classnames());
4874
- import { Button as Button6, Modal as Modal2 } from "@transferwise/components";
4875
- import { useState as useState13 } from "react";
4876
- import { jsx as jsx67, jsxs as jsxs16 } from "react/jsx-runtime";
5237
+ var import_classnames25 = __toESM(require_classnames());
5238
+ import { Button as Button7, Modal as Modal2 } from "@transferwise/components";
5239
+ import { useState as useState16 } from "react";
5240
+ import { jsx as jsx72, jsxs as jsxs20 } from "react/jsx-runtime";
4877
5241
  var ModalLayoutRenderer = {
4878
5242
  canRenderType: "modal-layout",
4879
- render: (props) => /* @__PURE__ */ jsx67(DFModal, __spreadValues({}, props))
5243
+ render: (props) => /* @__PURE__ */ jsx72(DFModal, __spreadValues({}, props))
4880
5244
  };
4881
5245
  var ModalLayoutRenderer_default = ModalLayoutRenderer;
4882
5246
  function DFModal({ content, margin, trigger, control, tags }) {
4883
- const [visible, setVisible] = useState13(false);
5247
+ const [visible, setVisible] = useState16(false);
4884
5248
  const { children, title } = content;
4885
- return /* @__PURE__ */ jsxs16("div", { className: (0, import_classnames23.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
4886
- /* @__PURE__ */ jsx67(Button6, { v2: true, priority: "tertiary", block: true, onClick: () => setVisible(true), children: trigger.title }),
4887
- /* @__PURE__ */ jsx67(
5249
+ return /* @__PURE__ */ jsxs20("div", { className: (0, import_classnames25.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
5250
+ /* @__PURE__ */ jsx72(Button7, { v2: true, priority: "tertiary", block: true, onClick: () => setVisible(true), children: trigger.title }),
5251
+ /* @__PURE__ */ jsx72(
4888
5252
  Modal2,
4889
5253
  {
4890
5254
  scroll: "content",
@@ -4900,11 +5264,11 @@ function DFModal({ content, margin, trigger, control, tags }) {
4900
5264
 
4901
5265
  // ../renderers/src/ModalRenderer.tsx
4902
5266
  import { Modal as Modal3 } from "@transferwise/components";
4903
- import { jsx as jsx68 } from "react/jsx-runtime";
5267
+ import { jsx as jsx73 } from "react/jsx-runtime";
4904
5268
  var ModalRenderer = {
4905
5269
  canRenderType: "modal",
4906
5270
  render: ({ title, children, open, onClose, control, tags }) => {
4907
- return /* @__PURE__ */ jsx68(
5271
+ return /* @__PURE__ */ jsx73(
4908
5272
  Modal3,
4909
5273
  {
4910
5274
  open,
@@ -4919,9 +5283,9 @@ var ModalRenderer = {
4919
5283
 
4920
5284
  // ../renderers/src/MoneyInputRenderer.tsx
4921
5285
  import { MoneyInput } from "@transferwise/components";
4922
- import { useEffect as useEffect11 } from "react";
4923
- import { useIntl as useIntl11 } from "react-intl";
4924
- import { jsx as jsx69 } from "react/jsx-runtime";
5286
+ import { useEffect as useEffect12 } from "react";
5287
+ import { useIntl as useIntl14 } from "react-intl";
5288
+ import { jsx as jsx74 } from "react/jsx-runtime";
4925
5289
  var groupingTags2 = Object.keys(group_messages_default).filter((key) => key !== "all");
4926
5290
  var MoneyInputRenderer = {
4927
5291
  canRenderType: "money-input",
@@ -4945,13 +5309,13 @@ function MoneyInputRendererComponent(props) {
4945
5309
  onAmountChange,
4946
5310
  onCurrencyChange
4947
5311
  } = props;
4948
- useEffect11(() => {
5312
+ useEffect12(() => {
4949
5313
  if (!isValidIndex(selectedCurrencyIndex, currencies.length)) {
4950
5314
  onCurrencyChange(0);
4951
5315
  }
4952
5316
  }, [selectedCurrencyIndex, onCurrencyChange, currencies.length]);
4953
- const { formatMessage } = useIntl11();
4954
- return /* @__PURE__ */ jsx69(
5317
+ const { formatMessage } = useIntl14();
5318
+ return /* @__PURE__ */ jsx74(
4955
5319
  FieldInput_default,
4956
5320
  {
4957
5321
  id: uid,
@@ -4962,7 +5326,7 @@ function MoneyInputRendererComponent(props) {
4962
5326
  features,
4963
5327
  control,
4964
5328
  tags,
4965
- children: /* @__PURE__ */ jsx69(
5329
+ children: /* @__PURE__ */ jsx74(
4966
5330
  MoneyInput,
4967
5331
  {
4968
5332
  amount: parseFloatOrNull(amountValue),
@@ -5025,8 +5389,8 @@ function assertCurrencyCodeIsString(currencyCode) {
5025
5389
 
5026
5390
  // ../renderers/src/MultiSelectInputRenderer/InlineComponent.tsx
5027
5391
  import { ListItem as ListItem9, SearchInput as SearchInput2 } from "@transferwise/components";
5028
- import { useState as useState14 } from "react";
5029
- import { useIntl as useIntl12 } from "react-intl";
5392
+ import { useState as useState17 } from "react";
5393
+ import { useIntl as useIntl15 } from "react-intl";
5030
5394
 
5031
5395
  // ../renderers/src/utils/items-with-index.ts
5032
5396
  var zipWithIndex = (items) => items.map((item, index) => __spreadProps(__spreadValues({}, item), {
@@ -5034,7 +5398,7 @@ var zipWithIndex = (items) => items.map((item, index) => __spreadProps(__spreadV
5034
5398
  }));
5035
5399
 
5036
5400
  // ../renderers/src/MultiSelectInputRenderer/InlineComponent.tsx
5037
- import { Fragment as Fragment8, jsx as jsx70, jsxs as jsxs17 } from "react/jsx-runtime";
5401
+ import { Fragment as Fragment9, jsx as jsx75, jsxs as jsxs21 } from "react/jsx-runtime";
5038
5402
  function InlineComponent(props) {
5039
5403
  const {
5040
5404
  id,
@@ -5051,12 +5415,12 @@ function InlineComponent(props) {
5051
5415
  onSelect
5052
5416
  } = props;
5053
5417
  const optionsWithIndex = zipWithIndex(options);
5054
- const [query, setQuery] = useState14("");
5055
- const { formatMessage } = useIntl12();
5418
+ const [query, setQuery] = useState17("");
5419
+ const { formatMessage } = useIntl15();
5056
5420
  const filtered = tags == null ? void 0 : tags.includes("filtered");
5057
5421
  const filteredOptions = query ? filterAndSortItems(optionsWithIndex, filtered ? query : "") : optionsWithIndex;
5058
- return /* @__PURE__ */ jsxs17(Fragment8, { children: [
5059
- filtered && /* @__PURE__ */ jsx70(
5422
+ return /* @__PURE__ */ jsxs21(Fragment9, { children: [
5423
+ filtered && /* @__PURE__ */ jsx75(
5060
5424
  SearchInput2,
5061
5425
  {
5062
5426
  placeholder: formatMessage(filter_messages_default.placeholder),
@@ -5069,7 +5433,7 @@ function InlineComponent(props) {
5069
5433
  }
5070
5434
  }
5071
5435
  ),
5072
- /* @__PURE__ */ jsx70(
5436
+ /* @__PURE__ */ jsx75(
5073
5437
  FieldInput_default,
5074
5438
  {
5075
5439
  id,
@@ -5094,7 +5458,7 @@ function InlineComponent(props) {
5094
5458
  childrenProps
5095
5459
  } = option;
5096
5460
  const key = (_a = childrenProps == null ? void 0 : childrenProps.uid) != null ? _a : index;
5097
- return /* @__PURE__ */ jsx70(
5461
+ return /* @__PURE__ */ jsx75(
5098
5462
  ListItem9,
5099
5463
  {
5100
5464
  title: itemTitle,
@@ -5103,9 +5467,9 @@ function InlineComponent(props) {
5103
5467
  valueSubtitle: supportingValues == null ? void 0 : supportingValues.subvalue,
5104
5468
  media: getMedia(media, false),
5105
5469
  prompt: getInlineAlert(inlineAlert),
5106
- additionalInfo: additionalText ? /* @__PURE__ */ jsx70(ListItem9.AdditionalInfo, { children: additionalText }) : void 0,
5470
+ additionalInfo: additionalText ? /* @__PURE__ */ jsx75(ListItem9.AdditionalInfo, { children: additionalText }) : void 0,
5107
5471
  disabled: disabled || optionDisabled,
5108
- control: /* @__PURE__ */ jsx70(
5472
+ control: /* @__PURE__ */ jsx75(
5109
5473
  ListItem9.Checkbox,
5110
5474
  {
5111
5475
  checked: selectedIndices.includes(index),
@@ -5126,8 +5490,8 @@ function InlineComponent(props) {
5126
5490
 
5127
5491
  // ../renderers/src/MultiSelectInputRenderer/DefaultComponent.tsx
5128
5492
  import { SelectInput, SelectInputOptionContent } from "@transferwise/components";
5129
- import { useState as useState15 } from "react";
5130
- import { useIntl as useIntl13 } from "react-intl";
5493
+ import { useState as useState18 } from "react";
5494
+ import { useIntl as useIntl16 } from "react-intl";
5131
5495
 
5132
5496
  // ../renderers/src/messages/multi-select.messages.ts
5133
5497
  import { defineMessages as defineMessages10 } from "react-intl";
@@ -5140,10 +5504,10 @@ var multi_select_messages_default = defineMessages10({
5140
5504
  });
5141
5505
 
5142
5506
  // ../renderers/src/MultiSelectInputRenderer/DefaultComponent.tsx
5143
- import { jsx as jsx71 } from "react/jsx-runtime";
5507
+ import { jsx as jsx76 } from "react/jsx-runtime";
5144
5508
  function DefaultComponent(props) {
5145
- const { formatMessage } = useIntl13();
5146
- const [stagedIndices, setStagedIndices] = useState15();
5509
+ const { formatMessage } = useIntl16();
5510
+ const [stagedIndices, setStagedIndices] = useState18();
5147
5511
  const {
5148
5512
  id,
5149
5513
  autoComplete,
@@ -5184,12 +5548,12 @@ function DefaultComponent(props) {
5184
5548
  const contentProps = {
5185
5549
  title: option.title,
5186
5550
  description: option.description,
5187
- icon: /* @__PURE__ */ jsx71(OptionMedia, { media: option.media, preferAvatar: false })
5551
+ icon: /* @__PURE__ */ jsx76(OptionMedia, { media: option.media, preferAvatar: false })
5188
5552
  };
5189
- return /* @__PURE__ */ jsx71(SelectInputOptionContent, __spreadValues({}, contentProps));
5553
+ return /* @__PURE__ */ jsx76(SelectInputOptionContent, __spreadValues({}, contentProps));
5190
5554
  };
5191
5555
  const extraProps = { autoComplete };
5192
- return /* @__PURE__ */ jsx71(
5556
+ return /* @__PURE__ */ jsx76(
5193
5557
  FieldInput_default,
5194
5558
  {
5195
5559
  id,
@@ -5200,7 +5564,7 @@ function DefaultComponent(props) {
5200
5564
  features,
5201
5565
  control,
5202
5566
  tags,
5203
- children: /* @__PURE__ */ jsx71(
5567
+ children: /* @__PURE__ */ jsx76(
5204
5568
  SelectInput,
5205
5569
  __spreadValues({
5206
5570
  id,
@@ -5240,7 +5604,7 @@ function DefaultComponent(props) {
5240
5604
 
5241
5605
  // ../renderers/src/MultiSelectInputRenderer/InlineCheckboxComponent.tsx
5242
5606
  import { Checkbox as Checkbox2 } from "@transferwise/components";
5243
- import { jsx as jsx72 } from "react/jsx-runtime";
5607
+ import { jsx as jsx77 } from "react/jsx-runtime";
5244
5608
  function InlineCheckboxComponent(props) {
5245
5609
  const {
5246
5610
  id,
@@ -5256,7 +5620,7 @@ function InlineCheckboxComponent(props) {
5256
5620
  tags,
5257
5621
  onSelect
5258
5622
  } = props;
5259
- return /* @__PURE__ */ jsx72(
5623
+ return /* @__PURE__ */ jsx77(
5260
5624
  FieldInput_default,
5261
5625
  {
5262
5626
  id,
@@ -5287,24 +5651,24 @@ function InlineCheckboxComponent(props) {
5287
5651
  onSelect(newSelectedIndices);
5288
5652
  }
5289
5653
  };
5290
- return /* @__PURE__ */ jsx72(Checkbox2, __spreadProps(__spreadValues({}, checkboxProps), { className: "m-t-1" }), key);
5654
+ return /* @__PURE__ */ jsx77(Checkbox2, __spreadProps(__spreadValues({}, checkboxProps), { className: "m-t-1" }), key);
5291
5655
  })
5292
5656
  }
5293
5657
  );
5294
5658
  }
5295
5659
 
5296
5660
  // ../renderers/src/MultiSelectInputRenderer/MultiSelectInputRenderer.tsx
5297
- import { jsx as jsx73 } from "react/jsx-runtime";
5661
+ import { jsx as jsx78 } from "react/jsx-runtime";
5298
5662
  var MultiSelectInputRenderer = {
5299
5663
  canRenderType: "input-multi-select",
5300
5664
  render: (props) => {
5301
5665
  switch (props.control) {
5302
5666
  case "inline":
5303
- return /* @__PURE__ */ jsx73(InlineComponent, __spreadValues({}, props));
5667
+ return /* @__PURE__ */ jsx78(InlineComponent, __spreadValues({}, props));
5304
5668
  case "inline-checkbox-group":
5305
- return /* @__PURE__ */ jsx73(InlineCheckboxComponent, __spreadValues({}, props));
5669
+ return /* @__PURE__ */ jsx78(InlineCheckboxComponent, __spreadValues({}, props));
5306
5670
  default:
5307
- return /* @__PURE__ */ jsx73(DefaultComponent, __spreadValues({}, props));
5671
+ return /* @__PURE__ */ jsx78(DefaultComponent, __spreadValues({}, props));
5308
5672
  }
5309
5673
  }
5310
5674
  };
@@ -5314,8 +5678,8 @@ import { Status, UploadInput } from "@transferwise/components";
5314
5678
 
5315
5679
  // ../renderers/src/components/UploadFieldInput.tsx
5316
5680
  import { InlineAlert as InlineAlert2 } from "@transferwise/components";
5317
- var import_classnames24 = __toESM(require_classnames());
5318
- import { jsx as jsx74, jsxs as jsxs18 } from "react/jsx-runtime";
5681
+ var import_classnames26 = __toESM(require_classnames());
5682
+ import { jsx as jsx79, jsxs as jsxs22 } from "react/jsx-runtime";
5319
5683
  function UploadFieldInput({
5320
5684
  id,
5321
5685
  children,
@@ -5327,14 +5691,14 @@ function UploadFieldInput({
5327
5691
  control,
5328
5692
  tags
5329
5693
  }) {
5330
- const labelContent = label && help ? /* @__PURE__ */ jsx74(LabelContentWithHelp, { text: label, help }) : label;
5694
+ const labelContent = label && help ? /* @__PURE__ */ jsx79(LabelContentWithHelp, { text: label, help }) : label;
5331
5695
  const descriptionId = description ? `${id}-description` : void 0;
5332
5696
  const { ref } = useScrollToError(validation, features);
5333
- return /* @__PURE__ */ jsxs18(
5697
+ return /* @__PURE__ */ jsxs22(
5334
5698
  "div",
5335
5699
  {
5336
5700
  ref,
5337
- className: (0, import_classnames24.default)(
5701
+ className: (0, import_classnames26.default)(
5338
5702
  "form-group d-block",
5339
5703
  {
5340
5704
  "has-error": (validation == null ? void 0 : validation.status) === "invalid"
@@ -5342,9 +5706,9 @@ function UploadFieldInput({
5342
5706
  controlAndTagsToCSSClass({ control, tags })
5343
5707
  ),
5344
5708
  children: [
5345
- /* @__PURE__ */ jsx74("label", { htmlFor: id, className: "control-label", children: labelContent }),
5709
+ /* @__PURE__ */ jsx79("label", { htmlFor: id, className: "control-label", children: labelContent }),
5346
5710
  children,
5347
- (validation == null ? void 0 : validation.status) === "invalid" && /* @__PURE__ */ jsx74(InlineAlert2, { type: "negative", id: descriptionId, children: validation.message })
5711
+ (validation == null ? void 0 : validation.status) === "invalid" && /* @__PURE__ */ jsx79(InlineAlert2, { type: "negative", id: descriptionId, children: validation.message })
5348
5712
  ]
5349
5713
  }
5350
5714
  );
@@ -5379,7 +5743,7 @@ var getSizeLimit = (maxSize) => {
5379
5743
  };
5380
5744
 
5381
5745
  // ../renderers/src/MultiUploadInputRenderer.tsx
5382
- import { jsx as jsx75 } from "react/jsx-runtime";
5746
+ import { jsx as jsx80 } from "react/jsx-runtime";
5383
5747
  var MultiUploadInputRenderer = {
5384
5748
  canRenderType: "input-upload-multi",
5385
5749
  render: (props) => {
@@ -5407,7 +5771,7 @@ var MultiUploadInputRenderer = {
5407
5771
  };
5408
5772
  const onDeleteFile = async (fileId) => onRemoveFile(value.findIndex((file) => file.id === fileId));
5409
5773
  const descriptionId = description ? `${id}-description` : void 0;
5410
- return /* @__PURE__ */ jsx75(
5774
+ return /* @__PURE__ */ jsx80(
5411
5775
  UploadFieldInput_default,
5412
5776
  {
5413
5777
  id,
@@ -5418,7 +5782,7 @@ var MultiUploadInputRenderer = {
5418
5782
  features,
5419
5783
  control,
5420
5784
  tags,
5421
- children: /* @__PURE__ */ jsx75(
5785
+ children: /* @__PURE__ */ jsx80(
5422
5786
  UploadInput,
5423
5787
  {
5424
5788
  id,
@@ -5446,8 +5810,8 @@ var MultiUploadInputRenderer = {
5446
5810
  var MultiUploadInputRenderer_default = MultiUploadInputRenderer;
5447
5811
 
5448
5812
  // ../renderers/src/NumberInputRenderer.tsx
5449
- import { Input as Input3, InputGroup as InputGroup3 } from "@transferwise/components";
5450
- import { jsx as jsx76 } from "react/jsx-runtime";
5813
+ import { Input as Input4, InputGroup as InputGroup4 } from "@transferwise/components";
5814
+ import { jsx as jsx81 } from "react/jsx-runtime";
5451
5815
  var NumberInputRenderer = {
5452
5816
  canRenderType: "input-number",
5453
5817
  render: (props) => {
@@ -5461,7 +5825,7 @@ var NumberInputRenderer = {
5461
5825
  "maximum",
5462
5826
  "minimum"
5463
5827
  );
5464
- return /* @__PURE__ */ jsx76(
5828
+ return /* @__PURE__ */ jsx81(
5465
5829
  FieldInput_default,
5466
5830
  {
5467
5831
  id,
@@ -5474,8 +5838,8 @@ var NumberInputRenderer = {
5474
5838
  features: props.features,
5475
5839
  control: props.control,
5476
5840
  tags: props.tags,
5477
- children: /* @__PURE__ */ jsx76(InputGroup3, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx76(
5478
- Input3,
5841
+ children: /* @__PURE__ */ jsx81(InputGroup4, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx81(
5842
+ Input4,
5479
5843
  __spreadValues({
5480
5844
  id,
5481
5845
  name: id,
@@ -5495,9 +5859,9 @@ var NumberInputRenderer = {
5495
5859
  var NumberInputRenderer_default = NumberInputRenderer;
5496
5860
 
5497
5861
  // ../renderers/src/ParagraphRenderer.tsx
5498
- var import_classnames25 = __toESM(require_classnames());
5499
- import { Button as Button7, Input as Input4 } from "@transferwise/components";
5500
- import { useIntl as useIntl14 } from "react-intl";
5862
+ var import_classnames27 = __toESM(require_classnames());
5863
+ import { Button as Button8, Input as Input5 } from "@transferwise/components";
5864
+ import { useIntl as useIntl17 } from "react-intl";
5501
5865
 
5502
5866
  // ../renderers/src/hooks/useSnackBarIfAvailable.ts
5503
5867
  import { SnackbarContext } from "@transferwise/components";
@@ -5524,18 +5888,18 @@ var paragraph_messages_default = defineMessages11({
5524
5888
  });
5525
5889
 
5526
5890
  // ../renderers/src/ParagraphRenderer.tsx
5527
- import { jsx as jsx77, jsxs as jsxs19 } from "react/jsx-runtime";
5891
+ import { jsx as jsx82, jsxs as jsxs23 } from "react/jsx-runtime";
5528
5892
  var ParagraphRenderer = {
5529
5893
  canRenderType: "paragraph",
5530
- render: (props) => /* @__PURE__ */ jsx77(Paragraph, __spreadValues({}, props))
5894
+ render: (props) => /* @__PURE__ */ jsx82(Paragraph, __spreadValues({}, props))
5531
5895
  };
5532
5896
  function Paragraph(props) {
5533
5897
  const { align, control, margin, size, text } = props;
5534
- const className = (0, import_classnames25.default)(
5898
+ const className = (0, import_classnames27.default)(
5535
5899
  getTextAlignmentAndMargin({ align, margin }),
5536
5900
  controlAndTagsToCSSClass(props)
5537
5901
  );
5538
- return control === "copyable" ? /* @__PURE__ */ jsx77(CopyableParagraph, { className, align, text }) : /* @__PURE__ */ jsx77(
5902
+ return control === "copyable" ? /* @__PURE__ */ jsx82(CopyableParagraph, { className, align, text }) : /* @__PURE__ */ jsx82(
5539
5903
  "p",
5540
5904
  {
5541
5905
  className: `${["xs", "sm"].includes(size) ? "np-text-body-default" : "np-text-body-large"} ${className}`,
@@ -5548,41 +5912,41 @@ function CopyableParagraph({
5548
5912
  align,
5549
5913
  className
5550
5914
  }) {
5551
- const { formatMessage } = useIntl14();
5915
+ const { formatMessage } = useIntl17();
5552
5916
  const createSnackbar = useSnackBarIfAvailable();
5553
5917
  const copy = () => {
5554
5918
  navigator.clipboard.writeText(text).then(() => createSnackbar({ text: formatMessage(paragraph_messages_default.copied) })).catch(() => {
5555
5919
  });
5556
5920
  };
5557
5921
  const inputAlignmentClasses = getTextAlignmentAndMargin({ align, margin: "sm" });
5558
- return /* @__PURE__ */ jsxs19("div", { className, children: [
5559
- /* @__PURE__ */ jsx77(
5560
- Input4,
5922
+ return /* @__PURE__ */ jsxs23("div", { className, children: [
5923
+ /* @__PURE__ */ jsx82(
5924
+ Input5,
5561
5925
  {
5562
5926
  type: "text",
5563
5927
  value: text,
5564
5928
  readOnly: true,
5565
- className: (0, import_classnames25.default)("text-ellipsis", inputAlignmentClasses)
5929
+ className: (0, import_classnames27.default)("text-ellipsis", inputAlignmentClasses)
5566
5930
  }
5567
5931
  ),
5568
- /* @__PURE__ */ jsx77(Button7, { v2: true, block: true, onClick: copy, children: formatMessage(paragraph_messages_default.copy) })
5932
+ /* @__PURE__ */ jsx82(Button8, { v2: true, block: true, onClick: copy, children: formatMessage(paragraph_messages_default.copy) })
5569
5933
  ] });
5570
5934
  }
5571
5935
  var ParagraphRenderer_default = ParagraphRenderer;
5572
5936
 
5573
5937
  // ../renderers/src/ProgressRenderer.tsx
5574
- var import_classnames26 = __toESM(require_classnames());
5938
+ var import_classnames28 = __toESM(require_classnames());
5575
5939
  import { ProgressBar } from "@transferwise/components";
5576
- import { jsx as jsx78 } from "react/jsx-runtime";
5940
+ import { jsx as jsx83 } from "react/jsx-runtime";
5577
5941
  var ProgressRenderer = {
5578
5942
  canRenderType: "progress",
5579
5943
  render: ({ uid, title, help, progress, progressText, margin, description, control, tags }) => {
5580
- return /* @__PURE__ */ jsx78(
5944
+ return /* @__PURE__ */ jsx83(
5581
5945
  ProgressBar,
5582
5946
  {
5583
5947
  id: uid,
5584
- className: (0, import_classnames26.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
5585
- title: title && help ? /* @__PURE__ */ jsx78(LabelContentWithHelp, { text: title, help }) : title,
5948
+ className: (0, import_classnames28.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
5949
+ title: title && help ? /* @__PURE__ */ jsx83(LabelContentWithHelp, { text: title, help }) : title,
5586
5950
  description,
5587
5951
  progress: {
5588
5952
  max: 1,
@@ -5595,11 +5959,11 @@ var ProgressRenderer = {
5595
5959
  };
5596
5960
 
5597
5961
  // ../renderers/src/RepeatableRenderer.tsx
5598
- var import_classnames27 = __toESM(require_classnames());
5599
- import { Button as Button8, Header as Header6, InlineAlert as InlineAlert3, Modal as Modal4, NavigationOption } from "@transferwise/components";
5962
+ var import_classnames29 = __toESM(require_classnames());
5963
+ import { Button as Button9, Header as Header6, InlineAlert as InlineAlert3, Modal as Modal4, NavigationOption } from "@transferwise/components";
5600
5964
  import { Plus } from "@transferwise/icons";
5601
- import { useState as useState16 } from "react";
5602
- import { useIntl as useIntl15 } from "react-intl";
5965
+ import { useState as useState19 } from "react";
5966
+ import { useIntl as useIntl18 } from "react-intl";
5603
5967
 
5604
5968
  // ../renderers/src/messages/repeatable.messages.ts
5605
5969
  import { defineMessages as defineMessages12 } from "react-intl";
@@ -5627,10 +5991,10 @@ var repeatable_messages_default = defineMessages12({
5627
5991
  });
5628
5992
 
5629
5993
  // ../renderers/src/RepeatableRenderer.tsx
5630
- import { Fragment as Fragment9, jsx as jsx79, jsxs as jsxs20 } from "react/jsx-runtime";
5994
+ import { Fragment as Fragment10, jsx as jsx84, jsxs as jsxs24 } from "react/jsx-runtime";
5631
5995
  var RepeatableRenderer = {
5632
5996
  canRenderType: "repeatable",
5633
- render: (props) => /* @__PURE__ */ jsx79(Repeatable, __spreadValues({}, props))
5997
+ render: (props) => /* @__PURE__ */ jsx84(Repeatable, __spreadValues({}, props))
5634
5998
  };
5635
5999
  function Repeatable(props) {
5636
6000
  const {
@@ -5647,8 +6011,8 @@ function Repeatable(props) {
5647
6011
  onSave,
5648
6012
  onRemove
5649
6013
  } = props;
5650
- const { formatMessage } = useIntl15();
5651
- const [openModalType, setOpenModalType] = useState16(null);
6014
+ const { formatMessage } = useIntl18();
6015
+ const [openModalType, setOpenModalType] = useState19(null);
5652
6016
  const { ref } = useScrollToError(validationState, features);
5653
6017
  const onAddItem = () => {
5654
6018
  onAdd();
@@ -5671,43 +6035,43 @@ function Repeatable(props) {
5671
6035
  const onCancelEdit = () => {
5672
6036
  setOpenModalType(null);
5673
6037
  };
5674
- return /* @__PURE__ */ jsxs20(Fragment9, { children: [
5675
- /* @__PURE__ */ jsxs20("div", { ref, className: controlAndTagsToCSSClass(props), children: [
5676
- title && /* @__PURE__ */ jsx79(Header6, { title }),
5677
- description && /* @__PURE__ */ jsx79("p", { children: description }),
5678
- /* @__PURE__ */ jsxs20(
6038
+ return /* @__PURE__ */ jsxs24(Fragment10, { children: [
6039
+ /* @__PURE__ */ jsxs24("div", { ref, className: controlAndTagsToCSSClass(props), children: [
6040
+ title && /* @__PURE__ */ jsx84(Header6, { title }),
6041
+ description && /* @__PURE__ */ jsx84("p", { children: description }),
6042
+ /* @__PURE__ */ jsxs24(
5679
6043
  "div",
5680
6044
  {
5681
- className: (0, import_classnames27.default)("form-group", {
6045
+ className: (0, import_classnames29.default)("form-group", {
5682
6046
  "has-error": (validationState == null ? void 0 : validationState.status) === "invalid"
5683
6047
  }),
5684
6048
  children: [
5685
- items == null ? void 0 : items.map((item, index) => /* @__PURE__ */ jsx79(ItemSummaryOption, { item, onClick: () => onEditItem(index) }, item.id)),
5686
- /* @__PURE__ */ jsx79(
6049
+ items == null ? void 0 : items.map((item, index) => /* @__PURE__ */ jsx84(ItemSummaryOption, { item, onClick: () => onEditItem(index) }, item.id)),
6050
+ /* @__PURE__ */ jsx84(
5687
6051
  NavigationOption,
5688
6052
  {
5689
- media: /* @__PURE__ */ jsx79(Plus, {}),
6053
+ media: /* @__PURE__ */ jsx84(Plus, {}),
5690
6054
  title: addItemTitle || formatMessage(repeatable_messages_default.addItemTitle),
5691
6055
  showMediaAtAllSizes: true,
5692
6056
  onClick: () => onAddItem()
5693
6057
  }
5694
6058
  ),
5695
- (validationState == null ? void 0 : validationState.status) === "invalid" && /* @__PURE__ */ jsx79(InlineAlert3, { type: "negative", children: validationState.message })
6059
+ (validationState == null ? void 0 : validationState.status) === "invalid" && /* @__PURE__ */ jsx84(InlineAlert3, { type: "negative", children: validationState.message })
5696
6060
  ]
5697
6061
  }
5698
6062
  )
5699
6063
  ] }),
5700
- /* @__PURE__ */ jsx79(
6064
+ /* @__PURE__ */ jsx84(
5701
6065
  Modal4,
5702
6066
  {
5703
6067
  open: openModalType !== null,
5704
6068
  title: (openModalType === "add" ? addItemTitle : editItemTitle) || formatMessage(repeatable_messages_default.addItemTitle),
5705
- body: /* @__PURE__ */ jsxs20(Fragment9, { children: [
5706
- /* @__PURE__ */ jsx79("div", { className: "m-b-2", children: editableItem }),
5707
- /* @__PURE__ */ jsxs20("div", { children: [
5708
- /* @__PURE__ */ jsx79(Button8, { priority: "primary", block: true, className: "m-b-2", onClick: () => onSaveItem(), children: formatMessage(repeatable_messages_default.addItem) }),
5709
- /* @__PURE__ */ jsx79(
5710
- Button8,
6069
+ body: /* @__PURE__ */ jsxs24(Fragment10, { children: [
6070
+ /* @__PURE__ */ jsx84("div", { className: "m-b-2", children: editableItem }),
6071
+ /* @__PURE__ */ jsxs24("div", { children: [
6072
+ /* @__PURE__ */ jsx84(Button9, { priority: "primary", block: true, className: "m-b-2", onClick: () => onSaveItem(), children: formatMessage(repeatable_messages_default.addItem) }),
6073
+ /* @__PURE__ */ jsx84(
6074
+ Button9,
5711
6075
  {
5712
6076
  v2: true,
5713
6077
  priority: "secondary",
@@ -5728,10 +6092,10 @@ function ItemSummaryOption({
5728
6092
  item,
5729
6093
  onClick
5730
6094
  }) {
5731
- return /* @__PURE__ */ jsx79(
6095
+ return /* @__PURE__ */ jsx84(
5732
6096
  NavigationOption,
5733
6097
  {
5734
- media: /* @__PURE__ */ jsx79(OptionMedia, { media: item.media, preferAvatar: false }),
6098
+ media: /* @__PURE__ */ jsx84(OptionMedia, { media: item.media, preferAvatar: false }),
5735
6099
  title: item.title,
5736
6100
  content: item.description,
5737
6101
  showMediaAtAllSizes: true,
@@ -5743,16 +6107,16 @@ function ItemSummaryOption({
5743
6107
  var RepeatableRenderer_default = RepeatableRenderer;
5744
6108
 
5745
6109
  // ../renderers/src/ReviewLegacyRenderer.tsx
5746
- var import_classnames28 = __toESM(require_classnames());
6110
+ var import_classnames30 = __toESM(require_classnames());
5747
6111
  import { DefinitionList } from "@transferwise/components";
5748
- import { Fragment as Fragment10, jsx as jsx80, jsxs as jsxs21 } from "react/jsx-runtime";
6112
+ import { Fragment as Fragment11, jsx as jsx85, jsxs as jsxs25 } from "react/jsx-runtime";
5749
6113
  var ReviewRenderer = {
5750
6114
  canRenderType: "review",
5751
6115
  render: ({ callToAction, control, fields, margin, title, trackEvent, tags }) => {
5752
6116
  const orientation = mapControlToDefinitionListLayout(control);
5753
- return /* @__PURE__ */ jsxs21("div", { className: (0, import_classnames28.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
5754
- /* @__PURE__ */ jsx80(Header, { title, callToAction }),
5755
- /* @__PURE__ */ jsx80("div", { className: margin, children: /* @__PURE__ */ jsx80(
6117
+ return /* @__PURE__ */ jsxs25("div", { className: (0, import_classnames30.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
6118
+ /* @__PURE__ */ jsx85(Header, { title, callToAction }),
6119
+ /* @__PURE__ */ jsx85("div", { className: margin, children: /* @__PURE__ */ jsx85(
5756
6120
  DefinitionList,
5757
6121
  {
5758
6122
  layout: orientation,
@@ -5790,21 +6154,21 @@ var mapControlToDefinitionListLayout = (control) => {
5790
6154
  };
5791
6155
  var getFieldLabel = (label, help, onClick) => {
5792
6156
  if (help) {
5793
- return /* @__PURE__ */ jsxs21(Fragment10, { children: [
6157
+ return /* @__PURE__ */ jsxs25(Fragment11, { children: [
5794
6158
  label,
5795
6159
  " ",
5796
- /* @__PURE__ */ jsx80(Help_default, { help, onClick })
6160
+ /* @__PURE__ */ jsx85(Help_default, { help, onClick })
5797
6161
  ] });
5798
6162
  }
5799
6163
  return label;
5800
6164
  };
5801
6165
 
5802
6166
  // ../renderers/src/ReviewRenderer.tsx
5803
- var import_classnames29 = __toESM(require_classnames());
6167
+ var import_classnames31 = __toESM(require_classnames());
5804
6168
  import { ListItem as ListItem10, Markdown as Markdown5, Popover } from "@transferwise/components";
5805
6169
  import { QuestionMarkCircle } from "@transferwise/icons";
5806
- import { useIntl as useIntl16 } from "react-intl";
5807
- import { jsx as jsx81, jsxs as jsxs22 } from "react/jsx-runtime";
6170
+ import { useIntl as useIntl19 } from "react-intl";
6171
+ import { jsx as jsx86, jsxs as jsxs26 } from "react/jsx-runtime";
5808
6172
  var IGNORED_CONTROLS = [
5809
6173
  "horizontal",
5810
6174
  "horizontal-end-aligned",
@@ -5814,7 +6178,7 @@ var IGNORED_CONTROLS = [
5814
6178
  var ReviewRenderer2 = {
5815
6179
  canRenderType: "review",
5816
6180
  canRender: ({ control }) => control ? !IGNORED_CONTROLS.includes(control) : true,
5817
- render: (props) => /* @__PURE__ */ jsx81(Review, __spreadValues({}, props))
6181
+ render: (props) => /* @__PURE__ */ jsx86(Review, __spreadValues({}, props))
5818
6182
  };
5819
6183
  var Review = ({
5820
6184
  callToAction,
@@ -5825,9 +6189,9 @@ var Review = ({
5825
6189
  title,
5826
6190
  trackEvent
5827
6191
  }) => {
5828
- const intl = useIntl16();
5829
- return /* @__PURE__ */ jsxs22("div", { className: (0, import_classnames29.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
5830
- /* @__PURE__ */ jsx81(Header, { title, callToAction }),
6192
+ const intl = useIntl19();
6193
+ return /* @__PURE__ */ jsxs26("div", { className: (0, import_classnames31.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
6194
+ /* @__PURE__ */ jsx86(Header, { title, callToAction }),
5831
6195
  fields.map((field) => {
5832
6196
  var _a, _b, _c;
5833
6197
  const {
@@ -5845,7 +6209,7 @@ var Review = ({
5845
6209
  ctaSecondary: (_a = itemTags == null ? void 0 : itemTags.includes("cta-secondary")) != null ? _a : false,
5846
6210
  fullyInteractive: (_b = (tags == null ? void 0 : tags.includes("fully-interactive")) && (additionalInfo == null ? void 0 : additionalInfo.onClick) == null) != null ? _b : false
5847
6211
  };
5848
- return /* @__PURE__ */ jsx81(
6212
+ return /* @__PURE__ */ jsx86(
5849
6213
  ListItem10,
5850
6214
  {
5851
6215
  title: value,
@@ -5866,14 +6230,14 @@ var Review = ({
5866
6230
  ] });
5867
6231
  };
5868
6232
  var getHelpControl = (help, ariaLabel, onClick) => {
5869
- return /* @__PURE__ */ jsx81(Popover, { content: /* @__PURE__ */ jsx81(Markdown5, { config: { link: { target: "_blank" } }, children: help }), children: /* @__PURE__ */ jsx81(ListItem10.IconButton, { partiallyInteractive: true, "aria-label": ariaLabel, onClick, children: /* @__PURE__ */ jsx81(QuestionMarkCircle, {}) }) });
6233
+ return /* @__PURE__ */ jsx86(Popover, { content: /* @__PURE__ */ jsx86(Markdown5, { config: { link: { target: "_blank" } }, children: help }), children: /* @__PURE__ */ jsx86(ListItem10.IconButton, { partiallyInteractive: true, "aria-label": ariaLabel, onClick, children: /* @__PURE__ */ jsx86(QuestionMarkCircle, {}) }) });
5870
6234
  };
5871
6235
  var ReviewRenderer_default = ReviewRenderer2;
5872
6236
 
5873
6237
  // ../renderers/src/SearchRenderer/BlockSearchRendererComponent.tsx
5874
- import { Input as Input5, InputGroup as InputGroup4, List, ListItem as ListItem11, Markdown as Markdown6 } from "@transferwise/components";
5875
- import { useState as useState17 } from "react";
5876
- import { useIntl as useIntl18 } from "react-intl";
6238
+ import { Input as Input6, InputGroup as InputGroup5, List, ListItem as ListItem11, Markdown as Markdown6 } from "@transferwise/components";
6239
+ import { useState as useState20 } from "react";
6240
+ import { useIntl as useIntl21 } from "react-intl";
5877
6241
 
5878
6242
  // ../renderers/src/messages/search.messages.ts
5879
6243
  import { defineMessages as defineMessages13 } from "react-intl";
@@ -5886,21 +6250,21 @@ var search_messages_default = defineMessages13({
5886
6250
  });
5887
6251
 
5888
6252
  // ../renderers/src/SearchRenderer/ErrorResult.tsx
5889
- import { useIntl as useIntl17 } from "react-intl";
6253
+ import { useIntl as useIntl20 } from "react-intl";
5890
6254
  import { Link as DSLink2 } from "@transferwise/components";
5891
- import { jsx as jsx82, jsxs as jsxs23 } from "react/jsx-runtime";
6255
+ import { jsx as jsx87, jsxs as jsxs27 } from "react/jsx-runtime";
5892
6256
  function ErrorResult({ state }) {
5893
- const intl = useIntl17();
5894
- return /* @__PURE__ */ jsxs23("p", { className: "m-t-2", children: [
6257
+ const intl = useIntl20();
6258
+ return /* @__PURE__ */ jsxs27("p", { className: "m-t-2", children: [
5895
6259
  intl.formatMessage(generic_error_messages_default.genericError),
5896
6260
  "\xA0",
5897
- /* @__PURE__ */ jsx82(DSLink2, { onClick: () => state.onRetry(), children: intl.formatMessage(generic_error_messages_default.retry) })
6261
+ /* @__PURE__ */ jsx87(DSLink2, { onClick: () => state.onRetry(), children: intl.formatMessage(generic_error_messages_default.retry) })
5898
6262
  ] });
5899
6263
  }
5900
6264
 
5901
6265
  // ../renderers/src/SearchRenderer/BlockSearchRendererComponent.tsx
5902
- import { Search as Search2 } from "@transferwise/icons";
5903
- import { Fragment as Fragment11, jsx as jsx83, jsxs as jsxs24 } from "react/jsx-runtime";
6266
+ import { Search as Search3 } from "@transferwise/icons";
6267
+ import { Fragment as Fragment12, jsx as jsx88, jsxs as jsxs28 } from "react/jsx-runtime";
5904
6268
  function BlockSearchRendererComponent({
5905
6269
  id,
5906
6270
  hint,
@@ -5915,10 +6279,10 @@ function BlockSearchRendererComponent({
5915
6279
  trackEvent,
5916
6280
  onChange
5917
6281
  }) {
5918
- const [hasSearched, setHasSearched] = useState17(false);
5919
- const { formatMessage } = useIntl18();
5920
- return /* @__PURE__ */ jsxs24("div", { className: getMargin(margin), children: [
5921
- /* @__PURE__ */ jsx83(
6282
+ const [hasSearched, setHasSearched] = useState20(false);
6283
+ const { formatMessage } = useIntl21();
6284
+ return /* @__PURE__ */ jsxs28("div", { className: getMargin(margin), children: [
6285
+ /* @__PURE__ */ jsx88(
5922
6286
  FieldInput_default,
5923
6287
  {
5924
6288
  id,
@@ -5929,8 +6293,8 @@ function BlockSearchRendererComponent({
5929
6293
  features,
5930
6294
  control,
5931
6295
  tags,
5932
- children: /* @__PURE__ */ jsx83(InputGroup4, { addonStart: { content: /* @__PURE__ */ jsx83(Search2, { size: 24 }) }, children: /* @__PURE__ */ jsx83(
5933
- Input5,
6296
+ children: /* @__PURE__ */ jsx88(InputGroup5, { addonStart: { content: /* @__PURE__ */ jsx88(Search3, { size: 24 }) }, children: /* @__PURE__ */ jsx88(
6297
+ Input6,
5934
6298
  {
5935
6299
  id,
5936
6300
  name: id,
@@ -5949,7 +6313,7 @@ function BlockSearchRendererComponent({
5949
6313
  ) })
5950
6314
  }
5951
6315
  ),
5952
- isLoading ? /* @__PURE__ */ jsx83("span", { children: formatMessage(search_messages_default.loading) }) : /* @__PURE__ */ jsx83(SearchResultContent, { state, trackEvent })
6316
+ isLoading ? /* @__PURE__ */ jsx88("span", { children: formatMessage(search_messages_default.loading) }) : /* @__PURE__ */ jsx88(SearchResultContent, { state, trackEvent })
5953
6317
  ] });
5954
6318
  }
5955
6319
  function SearchResultContent({
@@ -5958,38 +6322,38 @@ function SearchResultContent({
5958
6322
  }) {
5959
6323
  switch (state.type) {
5960
6324
  case "error":
5961
- return /* @__PURE__ */ jsx83(ErrorResult, { state });
6325
+ return /* @__PURE__ */ jsx88(ErrorResult, { state });
5962
6326
  case "results":
5963
- return /* @__PURE__ */ jsx83(SearchResults, { state, trackEvent });
6327
+ return /* @__PURE__ */ jsx88(SearchResults, { state, trackEvent });
5964
6328
  case "layout":
5965
- return /* @__PURE__ */ jsxs24(Fragment11, { children: [
6329
+ return /* @__PURE__ */ jsxs28(Fragment12, { children: [
5966
6330
  " ",
5967
6331
  state.layout,
5968
6332
  " "
5969
6333
  ] });
5970
6334
  case "noResults":
5971
- return /* @__PURE__ */ jsx83(EmptySearchResult, { state });
6335
+ return /* @__PURE__ */ jsx88(EmptySearchResult, { state });
5972
6336
  case "pending":
5973
6337
  default:
5974
6338
  return null;
5975
6339
  }
5976
6340
  }
5977
6341
  function EmptySearchResult({ state }) {
5978
- return /* @__PURE__ */ jsx83(Markdown6, { className: "m-t-2", config: { link: { target: "_blank" } }, children: state.message });
6342
+ return /* @__PURE__ */ jsx88(Markdown6, { className: "m-t-2", config: { link: { target: "_blank" } }, children: state.message });
5979
6343
  }
5980
6344
  function SearchResults({
5981
6345
  state,
5982
6346
  trackEvent
5983
6347
  }) {
5984
- return /* @__PURE__ */ jsx83(List, { children: state.results.map((result) => {
6348
+ return /* @__PURE__ */ jsx88(List, { children: state.results.map((result) => {
5985
6349
  const { media } = result;
5986
- return /* @__PURE__ */ jsx83(
6350
+ return /* @__PURE__ */ jsx88(
5987
6351
  ListItem11,
5988
6352
  {
5989
6353
  title: result.title,
5990
6354
  subtitle: result.description,
5991
- media: media ? /* @__PURE__ */ jsx83(OptionMedia, { media, preferAvatar: false }) : void 0,
5992
- control: /* @__PURE__ */ jsx83(
6355
+ media: media ? /* @__PURE__ */ jsx88(OptionMedia, { media, preferAvatar: false }) : void 0,
6356
+ control: /* @__PURE__ */ jsx88(
5993
6357
  ListItem11.Navigation,
5994
6358
  {
5995
6359
  onClick: () => {
@@ -6009,10 +6373,10 @@ var BlockSearchRendererComponent_default = BlockSearchRendererComponent;
6009
6373
 
6010
6374
  // ../renderers/src/SearchRenderer/InlineSearchRendererComponent.tsx
6011
6375
  import { Markdown as Markdown7, Typeahead } from "@transferwise/components";
6012
- import { Search as Search3 } from "@transferwise/icons";
6013
- import { useState as useState18 } from "react";
6014
- import { useIntl as useIntl19 } from "react-intl";
6015
- import { jsx as jsx84 } from "react/jsx-runtime";
6376
+ import { Search as Search4 } from "@transferwise/icons";
6377
+ import { useState as useState21 } from "react";
6378
+ import { useIntl as useIntl22 } from "react-intl";
6379
+ import { jsx as jsx89 } from "react/jsx-runtime";
6016
6380
  function InlineSearchRenderer({
6017
6381
  id,
6018
6382
  hint,
@@ -6026,9 +6390,9 @@ function InlineSearchRenderer({
6026
6390
  onChange,
6027
6391
  trackEvent
6028
6392
  }) {
6029
- const [hasSearched, setHasSearched] = useState18(false);
6030
- const intl = useIntl19();
6031
- return /* @__PURE__ */ jsx84("div", { className: getMargin(margin), children: /* @__PURE__ */ jsx84(
6393
+ const [hasSearched, setHasSearched] = useState21(false);
6394
+ const intl = useIntl22();
6395
+ return /* @__PURE__ */ jsx89("div", { className: getMargin(margin), children: /* @__PURE__ */ jsx89(
6032
6396
  FieldInput_default,
6033
6397
  {
6034
6398
  id,
@@ -6039,7 +6403,7 @@ function InlineSearchRenderer({
6039
6403
  features,
6040
6404
  control,
6041
6405
  tags,
6042
- children: /* @__PURE__ */ jsx84(
6406
+ children: /* @__PURE__ */ jsx89(
6043
6407
  Typeahead,
6044
6408
  {
6045
6409
  id: "typeahead-input-id",
@@ -6048,10 +6412,10 @@ function InlineSearchRenderer({
6048
6412
  size: "md",
6049
6413
  placeholder: hint,
6050
6414
  maxHeight: 100,
6051
- footer: /* @__PURE__ */ jsx84(TypeaheadFooter, { state, isLoading }),
6415
+ footer: /* @__PURE__ */ jsx89(TypeaheadFooter, { state, isLoading }),
6052
6416
  multiple: false,
6053
6417
  clearable: false,
6054
- addon: /* @__PURE__ */ jsx84(Search3, { size: 24 }),
6418
+ addon: /* @__PURE__ */ jsx89(Search4, { size: 24 }),
6055
6419
  options: state.type === "results" ? state.results.map(mapResultToTypeaheadOption) : [],
6056
6420
  minQueryLength: 1,
6057
6421
  onChange: (values) => {
@@ -6088,33 +6452,33 @@ function mapResultToTypeaheadOption(result) {
6088
6452
  };
6089
6453
  }
6090
6454
  function TypeaheadFooter({ state, isLoading }) {
6091
- const { formatMessage } = useIntl19();
6455
+ const { formatMessage } = useIntl22();
6092
6456
  if (state.type === "layout") {
6093
- return /* @__PURE__ */ jsx84("div", { className: "m-x-1 m-y-1", children: state.layout });
6457
+ return /* @__PURE__ */ jsx89("div", { className: "m-x-1 m-y-1", children: state.layout });
6094
6458
  }
6095
6459
  if (state.type === "noResults") {
6096
- return /* @__PURE__ */ jsx84(Markdown7, { className: "m-t-2 m-x-2", config: { link: { target: "_blank" } }, children: state.message });
6460
+ return /* @__PURE__ */ jsx89(Markdown7, { className: "m-t-2 m-x-2", config: { link: { target: "_blank" } }, children: state.message });
6097
6461
  }
6098
6462
  if (state.type === "error") {
6099
- return /* @__PURE__ */ jsx84("div", { className: "m-t-2 m-x-2", children: /* @__PURE__ */ jsx84(ErrorResult, { state }) });
6463
+ return /* @__PURE__ */ jsx89("div", { className: "m-t-2 m-x-2", children: /* @__PURE__ */ jsx89(ErrorResult, { state }) });
6100
6464
  }
6101
6465
  if (state.type === "pending" || isLoading) {
6102
- return /* @__PURE__ */ jsx84("p", { className: "m-t-2 m-x-2", children: formatMessage(search_messages_default.loading) });
6466
+ return /* @__PURE__ */ jsx89("p", { className: "m-t-2 m-x-2", children: formatMessage(search_messages_default.loading) });
6103
6467
  }
6104
6468
  return null;
6105
6469
  }
6106
6470
  var InlineSearchRendererComponent_default = InlineSearchRenderer;
6107
6471
 
6108
6472
  // ../renderers/src/SearchRenderer/SearchRenderer.tsx
6109
- import { jsx as jsx85 } from "react/jsx-runtime";
6473
+ import { jsx as jsx90 } from "react/jsx-runtime";
6110
6474
  var SearchRenderer = {
6111
6475
  canRenderType: "search",
6112
- render: (props) => props.control === "inline" ? /* @__PURE__ */ jsx85(InlineSearchRendererComponent_default, __spreadValues({}, props)) : /* @__PURE__ */ jsx85(BlockSearchRendererComponent_default, __spreadValues({}, props))
6476
+ render: (props) => props.control === "inline" ? /* @__PURE__ */ jsx90(InlineSearchRendererComponent_default, __spreadValues({}, props)) : /* @__PURE__ */ jsx90(BlockSearchRendererComponent_default, __spreadValues({}, props))
6113
6477
  };
6114
6478
  var SearchRenderer_default = SearchRenderer;
6115
6479
 
6116
6480
  // ../renderers/src/SectionRenderer.tsx
6117
- var import_classnames30 = __toESM(require_classnames());
6481
+ var import_classnames32 = __toESM(require_classnames());
6118
6482
  import { Header as Header7 } from "@transferwise/components";
6119
6483
 
6120
6484
  // ../renderers/src/utils/getHeaderAction.tsx
@@ -6139,16 +6503,16 @@ var getHeaderAction2 = (callToAction) => {
6139
6503
  };
6140
6504
 
6141
6505
  // ../renderers/src/SectionRenderer.tsx
6142
- import { jsx as jsx86, jsxs as jsxs25 } from "react/jsx-runtime";
6506
+ import { jsx as jsx91, jsxs as jsxs29 } from "react/jsx-runtime";
6143
6507
  var SectionRenderer = {
6144
6508
  canRenderType: "section",
6145
6509
  render: ({ children, callToAction, margin, title, control, tags }) => {
6146
- return /* @__PURE__ */ jsxs25(
6510
+ return /* @__PURE__ */ jsxs29(
6147
6511
  "section",
6148
6512
  {
6149
- className: (0, import_classnames30.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
6513
+ className: (0, import_classnames32.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
6150
6514
  children: [
6151
- (title || callToAction) && /* @__PURE__ */ jsx86(Header7, { title: title != null ? title : "", action: getHeaderAction2(callToAction) }),
6515
+ (title || callToAction) && /* @__PURE__ */ jsx91(Header7, { title: title != null ? title : "", action: getHeaderAction2(callToAction) }),
6152
6516
  children
6153
6517
  ]
6154
6518
  }
@@ -6159,7 +6523,7 @@ var SectionRenderer_default = SectionRenderer;
6159
6523
 
6160
6524
  // ../renderers/src/SelectInputRenderer/RadioInputRendererComponent.tsx
6161
6525
  import { RadioGroup } from "@transferwise/components";
6162
- import { Fragment as Fragment12, jsx as jsx87, jsxs as jsxs26 } from "react/jsx-runtime";
6526
+ import { Fragment as Fragment13, jsx as jsx92, jsxs as jsxs30 } from "react/jsx-runtime";
6163
6527
  function RadioInputRendererComponent(props) {
6164
6528
  const {
6165
6529
  id,
@@ -6176,8 +6540,8 @@ function RadioInputRendererComponent(props) {
6176
6540
  tags,
6177
6541
  onSelect
6178
6542
  } = props;
6179
- return /* @__PURE__ */ jsxs26(Fragment12, { children: [
6180
- /* @__PURE__ */ jsx87(
6543
+ return /* @__PURE__ */ jsxs30(Fragment13, { children: [
6544
+ /* @__PURE__ */ jsx92(
6181
6545
  FieldInput_default,
6182
6546
  {
6183
6547
  id,
@@ -6188,7 +6552,7 @@ function RadioInputRendererComponent(props) {
6188
6552
  features,
6189
6553
  control,
6190
6554
  tags,
6191
- children: /* @__PURE__ */ jsx87("span", { children: /* @__PURE__ */ jsx87(
6555
+ children: /* @__PURE__ */ jsx92("span", { children: /* @__PURE__ */ jsx92(
6192
6556
  RadioGroup,
6193
6557
  {
6194
6558
  name: id,
@@ -6197,7 +6561,7 @@ function RadioInputRendererComponent(props) {
6197
6561
  value: index,
6198
6562
  secondary: option.description,
6199
6563
  disabled: option.disabled || disabled,
6200
- avatar: /* @__PURE__ */ jsx87(OptionMedia, { media: option.media, preferAvatar: false })
6564
+ avatar: /* @__PURE__ */ jsx92(OptionMedia, { media: option.media, preferAvatar: false })
6201
6565
  })),
6202
6566
  selectedValue: selectedIndex != null ? selectedIndex : void 0,
6203
6567
  onChange: onSelect
@@ -6212,8 +6576,8 @@ function RadioInputRendererComponent(props) {
6212
6576
 
6213
6577
  // ../renderers/src/SelectInputRenderer/TabInputRendererComponent.tsx
6214
6578
  import { Tabs } from "@transferwise/components";
6215
- import { useEffect as useEffect12 } from "react";
6216
- import { Fragment as Fragment13, jsx as jsx88, jsxs as jsxs27 } from "react/jsx-runtime";
6579
+ import { useEffect as useEffect13 } from "react";
6580
+ import { Fragment as Fragment14, jsx as jsx93, jsxs as jsxs31 } from "react/jsx-runtime";
6217
6581
  function TabInputRendererComponent(props) {
6218
6582
  const {
6219
6583
  id,
@@ -6230,13 +6594,13 @@ function TabInputRendererComponent(props) {
6230
6594
  tags,
6231
6595
  onSelect
6232
6596
  } = props;
6233
- useEffect12(() => {
6597
+ useEffect13(() => {
6234
6598
  if (!isValidIndex2(selectedIndex, options.length)) {
6235
6599
  onSelect(0);
6236
6600
  }
6237
6601
  }, [selectedIndex, onSelect, options.length]);
6238
- return /* @__PURE__ */ jsxs27(Fragment13, { children: [
6239
- /* @__PURE__ */ jsx88(
6602
+ return /* @__PURE__ */ jsxs31(Fragment14, { children: [
6603
+ /* @__PURE__ */ jsx93(
6240
6604
  FieldInput_default,
6241
6605
  {
6242
6606
  id,
@@ -6247,7 +6611,7 @@ function TabInputRendererComponent(props) {
6247
6611
  features,
6248
6612
  control,
6249
6613
  tags,
6250
- children: /* @__PURE__ */ jsx88(
6614
+ children: /* @__PURE__ */ jsx93(
6251
6615
  Tabs,
6252
6616
  {
6253
6617
  name: id,
@@ -6256,7 +6620,7 @@ function TabInputRendererComponent(props) {
6256
6620
  title: option.title,
6257
6621
  // if we pass null, we get some props-types console errors
6258
6622
  // eslint-disable-next-line react/jsx-no-useless-fragment
6259
- content: /* @__PURE__ */ jsx88(Fragment13, {}),
6623
+ content: /* @__PURE__ */ jsx93(Fragment14, {}),
6260
6624
  disabled: option.disabled || disabled
6261
6625
  })),
6262
6626
  onTabSelect: onSelect
@@ -6271,7 +6635,7 @@ var isValidIndex2 = (index, options) => index !== null && index >= 0 && index <
6271
6635
 
6272
6636
  // ../renderers/src/SelectInputRenderer/SelectInputRendererComponent.tsx
6273
6637
  import { SelectInput as SelectInput2, SelectInputOptionContent as SelectInputOptionContent2 } from "@transferwise/components";
6274
- import { Fragment as Fragment14, jsx as jsx89, jsxs as jsxs28 } from "react/jsx-runtime";
6638
+ import { Fragment as Fragment15, jsx as jsx94, jsxs as jsxs32 } from "react/jsx-runtime";
6275
6639
  function SelectInputRendererComponent(props) {
6276
6640
  const {
6277
6641
  id,
@@ -6314,13 +6678,13 @@ function SelectInputRendererComponent(props) {
6314
6678
  } : {
6315
6679
  title: option.title,
6316
6680
  description: option.description,
6317
- icon: /* @__PURE__ */ jsx89(OptionMedia, { media: option.media, preferAvatar: false })
6681
+ icon: /* @__PURE__ */ jsx94(OptionMedia, { media: option.media, preferAvatar: false })
6318
6682
  };
6319
- return /* @__PURE__ */ jsx89(SelectInputOptionContent2, __spreadValues({}, contentProps));
6683
+ return /* @__PURE__ */ jsx94(SelectInputOptionContent2, __spreadValues({}, contentProps));
6320
6684
  };
6321
6685
  const extraProps = { autoComplete };
6322
- return /* @__PURE__ */ jsxs28(Fragment14, { children: [
6323
- /* @__PURE__ */ jsx89(
6686
+ return /* @__PURE__ */ jsxs32(Fragment15, { children: [
6687
+ /* @__PURE__ */ jsx94(
6324
6688
  FieldInput_default,
6325
6689
  {
6326
6690
  id,
@@ -6331,7 +6695,7 @@ function SelectInputRendererComponent(props) {
6331
6695
  features,
6332
6696
  control,
6333
6697
  tags,
6334
- children: /* @__PURE__ */ jsx89(
6698
+ children: /* @__PURE__ */ jsx94(
6335
6699
  SelectInput2,
6336
6700
  __spreadValues({
6337
6701
  name: id,
@@ -6352,9 +6716,9 @@ function SelectInputRendererComponent(props) {
6352
6716
  }
6353
6717
 
6354
6718
  // ../renderers/src/SelectInputRenderer/SegmentedInputRendererComponent.tsx
6355
- import { useEffect as useEffect13 } from "react";
6719
+ import { useEffect as useEffect14 } from "react";
6356
6720
  import { SegmentedControl } from "@transferwise/components";
6357
- import { Fragment as Fragment15, jsx as jsx90, jsxs as jsxs29 } from "react/jsx-runtime";
6721
+ import { Fragment as Fragment16, jsx as jsx95, jsxs as jsxs33 } from "react/jsx-runtime";
6358
6722
  function SegmentedInputRendererComponent(props) {
6359
6723
  const {
6360
6724
  id,
@@ -6370,13 +6734,13 @@ function SegmentedInputRendererComponent(props) {
6370
6734
  tags,
6371
6735
  onSelect
6372
6736
  } = props;
6373
- useEffect13(() => {
6737
+ useEffect14(() => {
6374
6738
  if (!isValidIndex3(selectedIndex, options.length)) {
6375
6739
  onSelect(0);
6376
6740
  }
6377
6741
  }, [selectedIndex, onSelect, options.length]);
6378
- return /* @__PURE__ */ jsxs29(Fragment15, { children: [
6379
- /* @__PURE__ */ jsx90(
6742
+ return /* @__PURE__ */ jsxs33(Fragment16, { children: [
6743
+ /* @__PURE__ */ jsx95(
6380
6744
  FieldInput_default,
6381
6745
  {
6382
6746
  id,
@@ -6387,7 +6751,7 @@ function SegmentedInputRendererComponent(props) {
6387
6751
  features,
6388
6752
  control,
6389
6753
  tags,
6390
- children: /* @__PURE__ */ jsx90(
6754
+ children: /* @__PURE__ */ jsx95(
6391
6755
  SegmentedControl,
6392
6756
  {
6393
6757
  name: `${id}-segmented-control`,
@@ -6404,14 +6768,14 @@ function SegmentedInputRendererComponent(props) {
6404
6768
  )
6405
6769
  }
6406
6770
  ),
6407
- /* @__PURE__ */ jsx90("div", { id: `${id}-children`, children })
6771
+ /* @__PURE__ */ jsx95("div", { id: `${id}-children`, children })
6408
6772
  ] });
6409
6773
  }
6410
6774
  var isValidIndex3 = (index, options) => index !== null && index >= 0 && index < options;
6411
6775
 
6412
6776
  // ../renderers/src/SelectInputRenderer/RadioItemRendererComponent.tsx
6413
6777
  import { Header as Header8, InlineAlert as InlineAlert4, List as List2, ListItem as ListItem12 } from "@transferwise/components";
6414
- import { jsx as jsx91, jsxs as jsxs30 } from "react/jsx-runtime";
6778
+ import { jsx as jsx96, jsxs as jsxs34 } from "react/jsx-runtime";
6415
6779
  function RadioItemRendererComponent(props) {
6416
6780
  const {
6417
6781
  id,
@@ -6427,22 +6791,22 @@ function RadioItemRendererComponent(props) {
6427
6791
  onSelect
6428
6792
  } = props;
6429
6793
  const { ref } = useScrollToError(validationState, features);
6430
- return /* @__PURE__ */ jsxs30("div", { ref, className: controlAndTagsToCSSClass(props), children: [
6431
- rootTitle && /* @__PURE__ */ jsx91(
6794
+ return /* @__PURE__ */ jsxs34("div", { ref, className: controlAndTagsToCSSClass(props), children: [
6795
+ rootTitle && /* @__PURE__ */ jsx96(
6432
6796
  Header8,
6433
6797
  {
6434
6798
  as: "h2",
6435
- title: help ? /* @__PURE__ */ jsx91(LabelContentWithHelp, { text: rootTitle, help }) : rootTitle
6799
+ title: help ? /* @__PURE__ */ jsx96(LabelContentWithHelp, { text: rootTitle, help }) : rootTitle
6436
6800
  }
6437
6801
  ),
6438
- rootDescription && /* @__PURE__ */ jsx91("p", { children: rootDescription }),
6439
- /* @__PURE__ */ jsx91(List2, { children: options.map(
6440
- ({ title, description, additionalText, inlineAlert, disabled, media, supportingValues }, index) => /* @__PURE__ */ jsx91(
6802
+ rootDescription && /* @__PURE__ */ jsx96("p", { children: rootDescription }),
6803
+ /* @__PURE__ */ jsx96(List2, { children: options.map(
6804
+ ({ title, description, additionalText, inlineAlert, disabled, media, supportingValues }, index) => /* @__PURE__ */ jsx96(
6441
6805
  ListItem12,
6442
6806
  __spreadValues({
6443
6807
  title,
6444
6808
  subtitle: description,
6445
- control: /* @__PURE__ */ jsx91(
6809
+ control: /* @__PURE__ */ jsx96(
6446
6810
  ListItem12.Radio,
6447
6811
  {
6448
6812
  name: title,
@@ -6458,50 +6822,50 @@ function RadioItemRendererComponent(props) {
6458
6822
  title
6459
6823
  )
6460
6824
  ) }, `${id}-${selectedIndex}`),
6461
- (validationState == null ? void 0 : validationState.status) === "invalid" && /* @__PURE__ */ jsx91(InlineAlert4, { type: "negative", children: validationState.message }),
6825
+ (validationState == null ? void 0 : validationState.status) === "invalid" && /* @__PURE__ */ jsx96(InlineAlert4, { type: "negative", children: validationState.message }),
6462
6826
  children
6463
6827
  ] });
6464
6828
  }
6465
6829
 
6466
6830
  // ../renderers/src/SelectInputRenderer/SelectInputRenderer.tsx
6467
- import { jsx as jsx92 } from "react/jsx-runtime";
6831
+ import { jsx as jsx97 } from "react/jsx-runtime";
6468
6832
  var SelectInputRenderer = {
6469
6833
  canRenderType: "input-select",
6470
6834
  render: (props) => {
6471
6835
  switch (props.control) {
6472
6836
  case "radio":
6473
- return /* @__PURE__ */ jsx92(RadioInputRendererComponent, __spreadValues({}, props));
6837
+ return /* @__PURE__ */ jsx97(RadioInputRendererComponent, __spreadValues({}, props));
6474
6838
  case "radio-item":
6475
- return /* @__PURE__ */ jsx92(RadioItemRendererComponent, __spreadValues({}, props));
6839
+ return /* @__PURE__ */ jsx97(RadioItemRendererComponent, __spreadValues({}, props));
6476
6840
  case "tab":
6477
- return props.options.length > 3 ? /* @__PURE__ */ jsx92(SelectInputRendererComponent, __spreadValues({}, props)) : /* @__PURE__ */ jsx92(TabInputRendererComponent, __spreadValues({}, props));
6841
+ return props.options.length > 3 ? /* @__PURE__ */ jsx97(SelectInputRendererComponent, __spreadValues({}, props)) : /* @__PURE__ */ jsx97(TabInputRendererComponent, __spreadValues({}, props));
6478
6842
  case "segmented":
6479
- return props.options.length > 3 ? /* @__PURE__ */ jsx92(SelectInputRendererComponent, __spreadValues({}, props)) : /* @__PURE__ */ jsx92(SegmentedInputRendererComponent, __spreadValues({}, props));
6843
+ return props.options.length > 3 ? /* @__PURE__ */ jsx97(SelectInputRendererComponent, __spreadValues({}, props)) : /* @__PURE__ */ jsx97(SegmentedInputRendererComponent, __spreadValues({}, props));
6480
6844
  case "select":
6481
6845
  default:
6482
- return /* @__PURE__ */ jsx92(SelectInputRendererComponent, __spreadValues({}, props));
6846
+ return /* @__PURE__ */ jsx97(SelectInputRendererComponent, __spreadValues({}, props));
6483
6847
  }
6484
6848
  }
6485
6849
  };
6486
6850
  var SelectInputRenderer_default = SelectInputRenderer;
6487
6851
 
6488
6852
  // ../renderers/src/StatusListRenderer.tsx
6489
- var import_classnames31 = __toESM(require_classnames());
6853
+ var import_classnames33 = __toESM(require_classnames());
6490
6854
  import { AvatarView as AvatarView4, Header as Header9, ListItem as ListItem13 } from "@transferwise/components";
6491
- import { jsx as jsx93, jsxs as jsxs31 } from "react/jsx-runtime";
6855
+ import { jsx as jsx98, jsxs as jsxs35 } from "react/jsx-runtime";
6492
6856
  var StatusListRenderer = {
6493
6857
  canRenderType: "status-list",
6494
- render: ({ margin, items, title, control, tags }) => /* @__PURE__ */ jsxs31("div", { className: (0, import_classnames31.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
6495
- title ? /* @__PURE__ */ jsx93(Header9, { title }) : null,
6858
+ render: ({ margin, items, title, control, tags }) => /* @__PURE__ */ jsxs35("div", { className: (0, import_classnames33.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
6859
+ title ? /* @__PURE__ */ jsx98(Header9, { title }) : null,
6496
6860
  items.map((item) => {
6497
6861
  const { callToAction, description, title: itemTitle } = item;
6498
- return /* @__PURE__ */ jsx93(
6862
+ return /* @__PURE__ */ jsx98(
6499
6863
  ListItem13,
6500
6864
  {
6501
6865
  title: itemTitle,
6502
6866
  subtitle: description,
6503
- media: /* @__PURE__ */ jsx93(StatusListItemMedia, __spreadValues({}, item)),
6504
- additionalInfo: callToAction ? /* @__PURE__ */ jsx93(
6867
+ media: /* @__PURE__ */ jsx98(StatusListItemMedia, __spreadValues({}, item)),
6868
+ additionalInfo: callToAction ? /* @__PURE__ */ jsx98(
6505
6869
  ListItem13.AdditionalInfo,
6506
6870
  {
6507
6871
  action: __spreadValues({
@@ -6520,10 +6884,10 @@ var StatusListItemMedia = ({ icon, status }) => {
6520
6884
  return void 0;
6521
6885
  }
6522
6886
  if ("name" in icon) {
6523
- return /* @__PURE__ */ jsx93(AvatarView4, { badge: { status: mapStatus(status) }, children: /* @__PURE__ */ jsx93(DynamicIcon_default, { name: icon.name }) });
6887
+ return /* @__PURE__ */ jsx98(AvatarView4, { badge: { status: mapStatus(status) }, children: /* @__PURE__ */ jsx98(DynamicIcon_default, { name: icon.name }) });
6524
6888
  }
6525
6889
  if ("text" in icon) {
6526
- return /* @__PURE__ */ jsx93(AvatarView4, { badge: { status: mapStatus(status) }, children: icon.text });
6890
+ return /* @__PURE__ */ jsx98(AvatarView4, { badge: { status: mapStatus(status) }, children: icon.text });
6527
6891
  }
6528
6892
  return void 0;
6529
6893
  };
@@ -6540,16 +6904,16 @@ var mapStatus = (status) => {
6540
6904
  var StatusListRenderer_default = StatusListRenderer;
6541
6905
 
6542
6906
  // ../renderers/src/step/SplashCelebrationStepRenderer.tsx
6543
- var import_classnames32 = __toESM(require_classnames());
6907
+ var import_classnames34 = __toESM(require_classnames());
6544
6908
 
6545
6909
  // ../renderers/src/utils/useCustomTheme.ts
6546
6910
  import { useTheme } from "@wise/components-theming";
6547
- import { useEffect as useEffect14, useMemo } from "react";
6911
+ import { useEffect as useEffect15, useMemo } from "react";
6548
6912
  var ThemeRequiredEventName = "Theme Required";
6549
6913
  var useCustomTheme = (theme, trackEvent) => {
6550
6914
  const theming = useTheme();
6551
6915
  const previousTheme = useMemo(() => theming.theme, []);
6552
- useEffect14(() => {
6916
+ useEffect15(() => {
6553
6917
  theming.setTheme(theme);
6554
6918
  trackEvent(ThemeRequiredEventName, { theme });
6555
6919
  return theme !== previousTheme ? () => {
@@ -6562,12 +6926,12 @@ var useCustomTheme = (theme, trackEvent) => {
6562
6926
 
6563
6927
  // ../renderers/src/step/StepHeader.tsx
6564
6928
  import { Title as Title2 } from "@transferwise/components";
6565
- import { Fragment as Fragment16, jsx as jsx94, jsxs as jsxs32 } from "react/jsx-runtime";
6929
+ import { Fragment as Fragment17, jsx as jsx99, jsxs as jsxs36 } from "react/jsx-runtime";
6566
6930
  var StepHeader = ({ title, description, tags }) => {
6567
6931
  const { titleType, alignmentClassName } = getHeaderStyle(tags);
6568
- return /* @__PURE__ */ jsxs32(Fragment16, { children: [
6569
- title ? /* @__PURE__ */ jsx94(Title2, { as: "h1", type: titleType, className: `${alignmentClassName} m-b-2`, children: title }) : void 0,
6570
- description ? /* @__PURE__ */ jsx94("p", { className: `${alignmentClassName} np-text-body-large`, children: description }) : void 0
6932
+ return /* @__PURE__ */ jsxs36(Fragment17, { children: [
6933
+ title ? /* @__PURE__ */ jsx99(Title2, { as: "h1", type: titleType, className: `${alignmentClassName} m-b-2`, children: title }) : void 0,
6934
+ description ? /* @__PURE__ */ jsx99("p", { className: `${alignmentClassName} np-text-body-large`, children: description }) : void 0
6571
6935
  ] });
6572
6936
  };
6573
6937
  var getHeaderStyle = (tags) => {
@@ -6578,9 +6942,9 @@ var getHeaderStyle = (tags) => {
6578
6942
  };
6579
6943
 
6580
6944
  // ../renderers/src/step/topbar/BackButton.tsx
6581
- import { IconButton as IconButton2 } from "@transferwise/components";
6945
+ import { IconButton as IconButton3 } from "@transferwise/components";
6582
6946
  import { ArrowLeft } from "@transferwise/icons";
6583
- import { useIntl as useIntl20 } from "react-intl";
6947
+ import { useIntl as useIntl23 } from "react-intl";
6584
6948
 
6585
6949
  // ../renderers/src/messages/back.messages.ts
6586
6950
  import { defineMessages as defineMessages14 } from "react-intl";
@@ -6593,31 +6957,31 @@ var back_messages_default = defineMessages14({
6593
6957
  });
6594
6958
 
6595
6959
  // ../renderers/src/step/topbar/BackButton.tsx
6596
- import { jsx as jsx95, jsxs as jsxs33 } from "react/jsx-runtime";
6960
+ import { jsx as jsx100, jsxs as jsxs37 } from "react/jsx-runtime";
6597
6961
  function BackButton({ title, onClick }) {
6598
- const { formatMessage } = useIntl20();
6599
- return /* @__PURE__ */ jsxs33(IconButton2, { className: "df-back-button", priority: "tertiary", onClick, children: [
6600
- /* @__PURE__ */ jsx95("span", { className: "sr-only", children: title != null ? title : formatMessage(back_messages_default.back) }),
6601
- /* @__PURE__ */ jsx95(ArrowLeft, {})
6962
+ const { formatMessage } = useIntl23();
6963
+ return /* @__PURE__ */ jsxs37(IconButton3, { className: "df-back-button", priority: "tertiary", onClick, children: [
6964
+ /* @__PURE__ */ jsx100("span", { className: "sr-only", children: title != null ? title : formatMessage(back_messages_default.back) }),
6965
+ /* @__PURE__ */ jsx100(ArrowLeft, {})
6602
6966
  ] });
6603
6967
  }
6604
6968
 
6605
6969
  // ../renderers/src/step/topbar/Toolbar.tsx
6606
- import { Button as Button9, IconButton as IconButton3 } from "@transferwise/components";
6607
- import { jsx as jsx96, jsxs as jsxs34 } from "react/jsx-runtime";
6970
+ import { Button as Button10, IconButton as IconButton4 } from "@transferwise/components";
6971
+ import { jsx as jsx101, jsxs as jsxs38 } from "react/jsx-runtime";
6608
6972
  var Toolbar = ({ items }) => {
6609
- return (items == null ? void 0 : items.length) > 0 ? /* @__PURE__ */ jsx96("div", { className: "df-toolbar", children: items.map((item, index) => /* @__PURE__ */ jsx96(ToolbarButton, __spreadValues({}, item), `${item.type}-${index}-${item.title}`)) }) : null;
6973
+ return (items == null ? void 0 : items.length) > 0 ? /* @__PURE__ */ jsx101("div", { className: "df-toolbar", children: items.map((item, index) => /* @__PURE__ */ jsx101(ToolbarButton, __spreadValues({}, item), `${item.type}-${index}-${item.title}`)) }) : null;
6610
6974
  };
6611
6975
  function ToolbarButton(props) {
6612
- return prefersMedia(props.control) ? /* @__PURE__ */ jsx96(MediaToolbarButton, __spreadValues({}, props)) : /* @__PURE__ */ jsx96(TextToolbarButton, __spreadValues({}, props));
6976
+ return prefersMedia(props.control) ? /* @__PURE__ */ jsx101(MediaToolbarButton, __spreadValues({}, props)) : /* @__PURE__ */ jsx101(TextToolbarButton, __spreadValues({}, props));
6613
6977
  }
6614
6978
  function MediaToolbarButton(props) {
6615
6979
  var _a;
6616
6980
  const { context, control, media, accessibilityDescription, disabled, onClick } = props;
6617
6981
  const priority = getIconButtonPriority(control);
6618
6982
  const type = getSentiment2(context);
6619
- return /* @__PURE__ */ jsxs34(
6620
- IconButton3,
6983
+ return /* @__PURE__ */ jsxs38(
6984
+ IconButton4,
6621
6985
  {
6622
6986
  className: "df-toolbar-button",
6623
6987
  disabled,
@@ -6626,7 +6990,7 @@ function MediaToolbarButton(props) {
6626
6990
  type,
6627
6991
  onClick,
6628
6992
  children: [
6629
- accessibilityDescription ? /* @__PURE__ */ jsx96("span", { className: "sr-only", children: accessibilityDescription }) : null,
6993
+ accessibilityDescription ? /* @__PURE__ */ jsx101("span", { className: "sr-only", children: accessibilityDescription }) : null,
6630
6994
  media ? (_a = getAddonStartMedia(media)) == null ? void 0 : _a.value : null
6631
6995
  ]
6632
6996
  }
@@ -6637,8 +7001,8 @@ function TextToolbarButton(props) {
6637
7001
  const addonStart = media ? getAddonStartMedia(media) : void 0;
6638
7002
  const priority = getPriority2(control);
6639
7003
  const sentiment = getSentiment2(context);
6640
- return /* @__PURE__ */ jsx96(
6641
- Button9,
7004
+ return /* @__PURE__ */ jsx101(
7005
+ Button10,
6642
7006
  {
6643
7007
  v2: true,
6644
7008
  size: "sm",
@@ -6667,18 +7031,18 @@ var getIconButtonPriority = (control) => {
6667
7031
  };
6668
7032
 
6669
7033
  // ../renderers/src/step/topbar/TopBar.tsx
6670
- import { jsx as jsx97, jsxs as jsxs35 } from "react/jsx-runtime";
7034
+ import { jsx as jsx102, jsxs as jsxs39 } from "react/jsx-runtime";
6671
7035
  function TopBar({ back, toolbar, tags }) {
6672
7036
  const isBackAllowed = !(tags == null ? void 0 : tags.includes("non-dismissible"));
6673
7037
  const backCTA = isBackAllowed ? back : void 0;
6674
- return backCTA || toolbar ? /* @__PURE__ */ jsxs35("div", { className: "d-flex m-b-2", children: [
6675
- backCTA ? /* @__PURE__ */ jsx97(BackButton, __spreadValues({}, backCTA)) : null,
6676
- toolbar ? /* @__PURE__ */ jsx97(Toolbar, __spreadValues({}, toolbar)) : null
7038
+ return backCTA || toolbar ? /* @__PURE__ */ jsxs39("div", { className: "d-flex m-b-2", children: [
7039
+ backCTA ? /* @__PURE__ */ jsx102(BackButton, __spreadValues({}, backCTA)) : null,
7040
+ toolbar ? /* @__PURE__ */ jsx102(Toolbar, __spreadValues({}, toolbar)) : null
6677
7041
  ] }) : null;
6678
7042
  }
6679
7043
 
6680
7044
  // ../renderers/src/step/SplashCelebrationStepRenderer.tsx
6681
- import { jsx as jsx98, jsxs as jsxs36 } from "react/jsx-runtime";
7045
+ import { jsx as jsx103, jsxs as jsxs40 } from "react/jsx-runtime";
6682
7046
  var SplashCelebrationStepRenderer = {
6683
7047
  canRenderType: "step",
6684
7048
  canRender: ({ control }) => control === "splash-celebration",
@@ -6687,23 +7051,23 @@ var SplashCelebrationStepRenderer = {
6687
7051
  function SplashCelebrationStepRendererComponent(props) {
6688
7052
  const { back, title, description, toolbar, children, footer, control, tags, trackEvent } = props;
6689
7053
  useCustomTheme("forest-green", trackEvent);
6690
- return /* @__PURE__ */ jsxs36(
7054
+ return /* @__PURE__ */ jsxs40(
6691
7055
  "div",
6692
7056
  {
6693
- className: (0, import_classnames32.default)("splash-screen", "m-t-5", controlAndTagsToCSSClass({ control, tags })),
7057
+ className: (0, import_classnames34.default)("splash-screen", "m-t-5", controlAndTagsToCSSClass({ control, tags })),
6694
7058
  children: [
6695
- /* @__PURE__ */ jsx98(TopBar, { back, toolbar, tags }),
6696
- title || description ? /* @__PURE__ */ jsx98("div", { className: "m-b-4", children: /* @__PURE__ */ jsx98(StepHeader, { title, description, tags }) }) : void 0,
7059
+ /* @__PURE__ */ jsx103(TopBar, { back, toolbar, tags }),
7060
+ title || description ? /* @__PURE__ */ jsx103("div", { className: "m-b-4", children: /* @__PURE__ */ jsx103(StepHeader, { title, description, tags }) }) : void 0,
6697
7061
  children,
6698
- /* @__PURE__ */ jsx98(StepFooter, { footer, tags })
7062
+ /* @__PURE__ */ jsx103(StepFooter, { footer, tags })
6699
7063
  ]
6700
7064
  }
6701
7065
  );
6702
7066
  }
6703
7067
 
6704
7068
  // ../renderers/src/step/SplashStepRenderer.tsx
6705
- var import_classnames33 = __toESM(require_classnames());
6706
- import { jsx as jsx99, jsxs as jsxs37 } from "react/jsx-runtime";
7069
+ var import_classnames35 = __toESM(require_classnames());
7070
+ import { jsx as jsx104, jsxs as jsxs41 } from "react/jsx-runtime";
6707
7071
  var SplashStepRenderer = {
6708
7072
  canRenderType: "step",
6709
7073
  canRender: ({ control }) => control === "splash",
@@ -6711,15 +7075,15 @@ var SplashStepRenderer = {
6711
7075
  };
6712
7076
  function SplashStepRendererComponent(props) {
6713
7077
  const { back, title, description, toolbar, children, footer, control, tags } = props;
6714
- return /* @__PURE__ */ jsxs37(
7078
+ return /* @__PURE__ */ jsxs41(
6715
7079
  "div",
6716
7080
  {
6717
- className: (0, import_classnames33.default)("splash-screen", "m-t-5", controlAndTagsToCSSClass({ control, tags })),
7081
+ className: (0, import_classnames35.default)("splash-screen", "m-t-5", controlAndTagsToCSSClass({ control, tags })),
6718
7082
  children: [
6719
- /* @__PURE__ */ jsx99(TopBar, { back, toolbar, tags }),
6720
- title || description ? /* @__PURE__ */ jsx99("div", { className: "m-b-4", children: /* @__PURE__ */ jsx99(StepHeader, { title, description, tags }) }) : void 0,
7083
+ /* @__PURE__ */ jsx104(TopBar, { back, toolbar, tags }),
7084
+ title || description ? /* @__PURE__ */ jsx104("div", { className: "m-b-4", children: /* @__PURE__ */ jsx104(StepHeader, { title, description, tags }) }) : void 0,
6721
7085
  children,
6722
- /* @__PURE__ */ jsx99(StepFooter, { footer, tags })
7086
+ /* @__PURE__ */ jsx104(StepFooter, { footer, tags })
6723
7087
  ]
6724
7088
  }
6725
7089
  );
@@ -6727,46 +7091,46 @@ function SplashStepRendererComponent(props) {
6727
7091
 
6728
7092
  // ../renderers/src/step/StepRenderer.tsx
6729
7093
  import { Alert } from "@transferwise/components";
6730
- import { jsx as jsx100, jsxs as jsxs38 } from "react/jsx-runtime";
7094
+ import { jsx as jsx105, jsxs as jsxs42 } from "react/jsx-runtime";
6731
7095
  var StepRenderer = {
6732
7096
  canRenderType: "step",
6733
7097
  render: StepRendererComponent
6734
7098
  };
6735
7099
  function StepRendererComponent(props) {
6736
7100
  const { back, description, error, title, children, toolbar, footer, control, tags } = props;
6737
- return /* @__PURE__ */ jsxs38("div", { className: controlAndTagsToCSSClass({ control, tags }), children: [
6738
- /* @__PURE__ */ jsx100(TopBar, { back, toolbar, tags }),
6739
- title || description ? /* @__PURE__ */ jsx100("div", { className: "m-b-4", children: /* @__PURE__ */ jsx100(StepHeader, { title, description, tags }) }) : void 0,
6740
- error ? /* @__PURE__ */ jsx100(Alert, { type: "negative", className: "m-b-2", message: error }) : null,
7101
+ return /* @__PURE__ */ jsxs42("div", { className: controlAndTagsToCSSClass({ control, tags }), children: [
7102
+ /* @__PURE__ */ jsx105(TopBar, { back, toolbar, tags }),
7103
+ title || description ? /* @__PURE__ */ jsx105("div", { className: "m-b-4", children: /* @__PURE__ */ jsx105(StepHeader, { title, description, tags }) }) : void 0,
7104
+ error ? /* @__PURE__ */ jsx105(Alert, { type: "negative", className: "m-b-2", message: error }) : null,
6741
7105
  children,
6742
- /* @__PURE__ */ jsx100(StepFooter, { footer, tags })
7106
+ /* @__PURE__ */ jsx105(StepFooter, { footer, tags })
6743
7107
  ] });
6744
7108
  }
6745
7109
 
6746
7110
  // ../renderers/src/TabsRenderer.tsx
6747
- var import_classnames34 = __toESM(require_classnames());
6748
- import { Chips as Chips2, SegmentedControl as SegmentedControl2, Tabs as Tabs2 } from "@transferwise/components";
6749
- import { useState as useState19 } from "react";
6750
- import { jsx as jsx101, jsxs as jsxs39 } from "react/jsx-runtime";
7111
+ var import_classnames36 = __toESM(require_classnames());
7112
+ import { Chips as Chips3, SegmentedControl as SegmentedControl2, Tabs as Tabs2 } from "@transferwise/components";
7113
+ import { useState as useState22 } from "react";
7114
+ import { jsx as jsx106, jsxs as jsxs43 } from "react/jsx-runtime";
6751
7115
  var TabsRenderer = {
6752
7116
  canRenderType: "tabs",
6753
7117
  render: (props) => {
6754
7118
  switch (props.control) {
6755
7119
  case "segmented":
6756
7120
  if (props.tabs.length > 3) {
6757
- return /* @__PURE__ */ jsx101(TabsRendererComponent, __spreadValues({}, props));
7121
+ return /* @__PURE__ */ jsx106(TabsRendererComponent, __spreadValues({}, props));
6758
7122
  }
6759
- return /* @__PURE__ */ jsx101(SegmentedTabsRendererComponent, __spreadValues({}, props));
7123
+ return /* @__PURE__ */ jsx106(SegmentedTabsRendererComponent, __spreadValues({}, props));
6760
7124
  case "chips":
6761
- return /* @__PURE__ */ jsx101(ChipsTabsRendererComponent, __spreadValues({}, props));
7125
+ return /* @__PURE__ */ jsx106(ChipsTabsRendererComponent, __spreadValues({}, props));
6762
7126
  default:
6763
- return /* @__PURE__ */ jsx101(TabsRendererComponent, __spreadValues({}, props));
7127
+ return /* @__PURE__ */ jsx106(TabsRendererComponent, __spreadValues({}, props));
6764
7128
  }
6765
7129
  }
6766
7130
  };
6767
7131
  function TabsRendererComponent({ uid, margin, tabs, control, tags }) {
6768
- const [selectedIndex, setSelectedIndex] = useState19(0);
6769
- return /* @__PURE__ */ jsx101("div", { className: (0, import_classnames34.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: /* @__PURE__ */ jsx101(
7132
+ const [selectedIndex, setSelectedIndex] = useState22(0);
7133
+ return /* @__PURE__ */ jsx106("div", { className: (0, import_classnames36.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: /* @__PURE__ */ jsx106(
6770
7134
  Tabs2,
6771
7135
  {
6772
7136
  name: uid,
@@ -6774,7 +7138,7 @@ function TabsRendererComponent({ uid, margin, tabs, control, tags }) {
6774
7138
  tabs: tabs.map((option) => ({
6775
7139
  title: option.title,
6776
7140
  disabled: false,
6777
- content: /* @__PURE__ */ jsxs39("div", { className: "m-t-2", children: [
7141
+ content: /* @__PURE__ */ jsxs43("div", { className: "m-t-2", children: [
6778
7142
  " ",
6779
7143
  option.children,
6780
7144
  " "
@@ -6786,9 +7150,9 @@ function TabsRendererComponent({ uid, margin, tabs, control, tags }) {
6786
7150
  }
6787
7151
  function SegmentedTabsRendererComponent({ uid, margin, tabs, control, tags }) {
6788
7152
  var _a;
6789
- const [selectedIndex, setSelectedIndex] = useState19(0);
6790
- return /* @__PURE__ */ jsxs39("div", { className: (0, import_classnames34.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
6791
- /* @__PURE__ */ jsx101(
7153
+ const [selectedIndex, setSelectedIndex] = useState22(0);
7154
+ return /* @__PURE__ */ jsxs43("div", { className: (0, import_classnames36.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
7155
+ /* @__PURE__ */ jsx106(
6792
7156
  SegmentedControl2,
6793
7157
  {
6794
7158
  name: uid,
@@ -6803,41 +7167,41 @@ function SegmentedTabsRendererComponent({ uid, margin, tabs, control, tags }) {
6803
7167
  onChange: (value) => setSelectedIndex(Number(value))
6804
7168
  }
6805
7169
  ),
6806
- /* @__PURE__ */ jsx101("div", { id: `${uid}-children`, className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
7170
+ /* @__PURE__ */ jsx106("div", { id: `${uid}-children`, className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
6807
7171
  ] });
6808
7172
  }
6809
7173
  function ChipsTabsRendererComponent({ margin, tabs, control, tags }) {
6810
7174
  var _a;
6811
- const [selectedIndex, setSelectedIndex] = useState19(0);
6812
- return /* @__PURE__ */ jsxs39("div", { className: (0, import_classnames34.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
6813
- /* @__PURE__ */ jsx101("div", { className: "chips-container", children: /* @__PURE__ */ jsx101(
6814
- Chips2,
7175
+ const [selectedIndex, setSelectedIndex] = useState22(0);
7176
+ return /* @__PURE__ */ jsxs43("div", { className: (0, import_classnames36.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
7177
+ /* @__PURE__ */ jsx106("div", { className: "chips-container", children: /* @__PURE__ */ jsx106(
7178
+ Chips3,
6815
7179
  {
6816
7180
  chips: tabs.map((tab, index) => ({ label: tab.title, value: index })),
6817
7181
  selected: selectedIndex,
6818
7182
  onChange: ({ selectedValue }) => setSelectedIndex(Number(selectedValue))
6819
7183
  }
6820
7184
  ) }),
6821
- /* @__PURE__ */ jsx101("div", { className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
7185
+ /* @__PURE__ */ jsx106("div", { className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
6822
7186
  ] });
6823
7187
  }
6824
7188
 
6825
7189
  // ../renderers/src/TextInputRenderer.tsx
6826
- import { InputGroup as InputGroup5 } from "@transferwise/components";
6827
- import { useState as useState21 } from "react";
7190
+ import { InputGroup as InputGroup6 } from "@transferwise/components";
7191
+ import { useState as useState24 } from "react";
6828
7192
 
6829
7193
  // ../renderers/src/components/VariableTextInput.tsx
6830
7194
  import {
6831
- IconButton as IconButton4,
6832
- Input as Input6,
7195
+ IconButton as IconButton5,
7196
+ Input as Input7,
6833
7197
  InputWithDisplayFormat,
6834
7198
  PhoneNumberInput,
6835
7199
  TextArea,
6836
7200
  TextareaWithDisplayFormat
6837
7201
  } from "@transferwise/components";
6838
7202
  import { Eye, EyeShut } from "@transferwise/icons";
6839
- import { useIntl as useIntl21 } from "react-intl";
6840
- import { useLayoutEffect as useLayoutEffect3, useRef as useRef5, useState as useState20 } from "react";
7203
+ import { useIntl as useIntl24 } from "react-intl";
7204
+ import { useLayoutEffect as useLayoutEffect3, useRef as useRef6, useState as useState23 } from "react";
6841
7205
 
6842
7206
  // ../renderers/src/messages/ssn-input.messages.ts
6843
7207
  import { defineMessages as defineMessages15 } from "react-intl";
@@ -6926,7 +7290,7 @@ function getDisplayOffset(displayValue, rawOffset) {
6926
7290
  }
6927
7291
 
6928
7292
  // ../renderers/src/components/VariableTextInput.tsx
6929
- import { jsx as jsx102 } from "react/jsx-runtime";
7293
+ import { jsx as jsx107 } from "react/jsx-runtime";
6930
7294
  var commonKeys = [
6931
7295
  "autoComplete",
6932
7296
  "autoCapitalize",
@@ -6945,14 +7309,14 @@ function VariableTextInput(inputProps) {
6945
7309
  const commonProps = __spreadProps(__spreadValues({}, pick(inputProps, ...commonKeys)), { name: id });
6946
7310
  switch (control) {
6947
7311
  case "email":
6948
- return /* @__PURE__ */ jsx102(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "email", onChange }));
7312
+ return /* @__PURE__ */ jsx107(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "email", onChange }));
6949
7313
  case "password":
6950
- return /* @__PURE__ */ jsx102(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "password", onChange }));
7314
+ return /* @__PURE__ */ jsx107(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "password", onChange }));
6951
7315
  case "ssn-input":
6952
- return /* @__PURE__ */ jsx102(SsnInput, __spreadProps(__spreadValues({}, commonProps), { isVisible: isSsnVisible, onChange }));
7316
+ return /* @__PURE__ */ jsx107(SsnInput, __spreadProps(__spreadValues({}, commonProps), { isVisible: isSsnVisible, onChange }));
6953
7317
  case "numeric": {
6954
7318
  const numericProps = __spreadProps(__spreadValues({}, commonProps), { type: "number", onWheel });
6955
- return /* @__PURE__ */ jsx102(
7319
+ return /* @__PURE__ */ jsx107(
6956
7320
  TextInput,
6957
7321
  __spreadProps(__spreadValues({}, numericProps), {
6958
7322
  onChange: (newValue) => {
@@ -6963,9 +7327,9 @@ function VariableTextInput(inputProps) {
6963
7327
  );
6964
7328
  }
6965
7329
  case "phone-number":
6966
- return /* @__PURE__ */ jsx102(PhoneNumberInput, __spreadProps(__spreadValues({ initialValue: value }, commonProps), { onChange }));
7330
+ return /* @__PURE__ */ jsx107(PhoneNumberInput, __spreadProps(__spreadValues({ initialValue: value }, commonProps), { onChange }));
6967
7331
  default: {
6968
- return /* @__PURE__ */ jsx102(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "text", onChange }));
7332
+ return /* @__PURE__ */ jsx107(TextInput, __spreadProps(__spreadValues({}, commonProps), { type: "text", onChange }));
6969
7333
  }
6970
7334
  }
6971
7335
  }
@@ -6973,31 +7337,31 @@ function SsnInputToggle({
6973
7337
  isVisible,
6974
7338
  onClick
6975
7339
  }) {
6976
- const { formatMessage } = useIntl21();
6977
- return /* @__PURE__ */ jsx102(
6978
- IconButton4,
7340
+ const { formatMessage } = useIntl24();
7341
+ return /* @__PURE__ */ jsx107(
7342
+ IconButton5,
6979
7343
  {
6980
7344
  priority: "minimal",
6981
7345
  size: 24,
6982
7346
  "aria-label": formatMessage(isVisible ? ssn_input_messages_default.hideValue : ssn_input_messages_default.showValue),
6983
7347
  "aria-pressed": isVisible,
6984
7348
  onClick,
6985
- children: isVisible ? /* @__PURE__ */ jsx102(EyeShut, { size: 24 }) : /* @__PURE__ */ jsx102(Eye, { size: 24 })
7349
+ children: isVisible ? /* @__PURE__ */ jsx107(EyeShut, { size: 24 }) : /* @__PURE__ */ jsx107(Eye, { size: 24 })
6986
7350
  }
6987
7351
  );
6988
7352
  }
6989
7353
  function TextInput(props) {
6990
7354
  const _a = props, { control, displayFormat, onChange, type } = _a, commonProps = __objRest(_a, ["control", "displayFormat", "onChange", "type"]);
6991
7355
  const InputWithPattern = control === "textarea" ? TextareaWithDisplayFormat : InputWithDisplayFormat;
6992
- const InputWithoutPattern = control === "textarea" ? TextArea : Input6;
6993
- return displayFormat ? /* @__PURE__ */ jsx102(InputWithPattern, __spreadProps(__spreadValues({ displayPattern: displayFormat }, commonProps), { onChange })) : /* @__PURE__ */ jsx102(InputWithoutPattern, __spreadProps(__spreadValues({}, commonProps), { type, onChange: (e) => onChange(e.target.value) }));
7356
+ const InputWithoutPattern = control === "textarea" ? TextArea : Input7;
7357
+ return displayFormat ? /* @__PURE__ */ jsx107(InputWithPattern, __spreadProps(__spreadValues({ displayPattern: displayFormat }, commonProps), { onChange })) : /* @__PURE__ */ jsx107(InputWithoutPattern, __spreadProps(__spreadValues({}, commonProps), { type, onChange: (e) => onChange(e.target.value) }));
6994
7358
  }
6995
7359
  function SsnInput(props) {
6996
7360
  const _a = props, { displayFormat = "", isVisible = false, onChange, value = "" } = _a, commonProps = __objRest(_a, ["displayFormat", "isVisible", "onChange", "value"]);
6997
- const [editVersion, setEditVersion] = useState20(0);
6998
- const inputRef = useRef5(null);
6999
- const selection = useRef5({ start: 0, end: 0 });
7000
- const pendingCaret = useRef5(null);
7361
+ const [editVersion, setEditVersion] = useState23(0);
7362
+ const inputRef = useRef6(null);
7363
+ const selection = useRef6({ start: 0, end: 0 });
7364
+ const pendingCaret = useRef6(null);
7001
7365
  const rawValue = value.replace(/\D/g, "");
7002
7366
  const formattedValue = formatSsnValue(rawValue, displayFormat, isVisible);
7003
7367
  const scheduleCaret = (rawOffset) => {
@@ -7027,7 +7391,7 @@ function SsnInput(props) {
7027
7391
  );
7028
7392
  pendingCaret.current = null;
7029
7393
  }, [editVersion, formattedValue, rawValue]);
7030
- return /* @__PURE__ */ jsx102(
7394
+ return /* @__PURE__ */ jsx107(
7031
7395
  "input",
7032
7396
  __spreadProps(__spreadValues({
7033
7397
  ref: inputRef
@@ -7090,13 +7454,13 @@ function SsnInput(props) {
7090
7454
  }
7091
7455
 
7092
7456
  // ../renderers/src/TextInputRenderer.tsx
7093
- import { jsx as jsx103 } from "react/jsx-runtime";
7457
+ import { jsx as jsx108 } from "react/jsx-runtime";
7094
7458
  var TextInputRenderer = {
7095
7459
  canRenderType: "input-text",
7096
- render: (props) => /* @__PURE__ */ jsx103(TextInputRendererComponent, __spreadValues({}, props))
7460
+ render: (props) => /* @__PURE__ */ jsx108(TextInputRendererComponent, __spreadValues({}, props))
7097
7461
  };
7098
7462
  function TextInputRendererComponent(props) {
7099
- const [isSsnVisible, setIsSsnVisible] = useState21(false);
7463
+ const [isSsnVisible, setIsSsnVisible] = useState24(false);
7100
7464
  const _a = props, {
7101
7465
  id,
7102
7466
  title,
@@ -7128,7 +7492,7 @@ function TextInputRendererComponent(props) {
7128
7492
  }
7129
7493
  }
7130
7494
  });
7131
- return /* @__PURE__ */ jsx103(
7495
+ return /* @__PURE__ */ jsx108(
7132
7496
  FieldInput_default,
7133
7497
  {
7134
7498
  id,
@@ -7141,13 +7505,13 @@ function TextInputRendererComponent(props) {
7141
7505
  features: props.features,
7142
7506
  control: props.control,
7143
7507
  tags: props.tags,
7144
- children: /* @__PURE__ */ jsx103(
7145
- InputGroup5,
7508
+ children: /* @__PURE__ */ jsx108(
7509
+ InputGroup6,
7146
7510
  {
7147
7511
  addonStart: getInputGroupAddonStart(media),
7148
7512
  addonEnd: isSsnInput ? {
7149
7513
  interactive: true,
7150
- content: /* @__PURE__ */ jsx103(
7514
+ content: /* @__PURE__ */ jsx108(
7151
7515
  SsnInputToggle,
7152
7516
  {
7153
7517
  isVisible: isSsnVisible,
@@ -7155,7 +7519,7 @@ function TextInputRendererComponent(props) {
7155
7519
  }
7156
7520
  )
7157
7521
  } : void 0,
7158
- children: /* @__PURE__ */ jsx103(VariableTextInput, __spreadValues({}, inputProps))
7522
+ children: /* @__PURE__ */ jsx108(VariableTextInput, __spreadValues({}, inputProps))
7159
7523
  }
7160
7524
  )
7161
7525
  }
@@ -7164,12 +7528,12 @@ function TextInputRendererComponent(props) {
7164
7528
  var TextInputRenderer_default = TextInputRenderer;
7165
7529
 
7166
7530
  // ../renderers/src/UpdatableRenderer.tsx
7167
- var import_classnames35 = __toESM(require_classnames());
7168
- import { jsx as jsx104 } from "react/jsx-runtime";
7531
+ var import_classnames37 = __toESM(require_classnames());
7532
+ import { jsx as jsx109 } from "react/jsx-runtime";
7169
7533
  var UpdatableRenderer = {
7170
7534
  canRenderType: "updatable",
7171
7535
  render: ({ children, control, margin, tags }) => {
7172
- return /* @__PURE__ */ jsx104("div", { className: (0, import_classnames35.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children });
7536
+ return /* @__PURE__ */ jsx109("div", { className: (0, import_classnames37.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children });
7173
7537
  }
7174
7538
  };
7175
7539
 
@@ -7180,7 +7544,7 @@ import { Status as Status2, Upload, UploadInput as UploadInput2 } from "@transfe
7180
7544
  var getRandomId = () => Math.random().toString(36).substring(2);
7181
7545
 
7182
7546
  // ../renderers/src/UploadInputRenderer.tsx
7183
- import { jsx as jsx105 } from "react/jsx-runtime";
7547
+ import { jsx as jsx110 } from "react/jsx-runtime";
7184
7548
  var UploadInputRenderer = {
7185
7549
  canRenderType: "input-upload",
7186
7550
  render: (props) => {
@@ -7209,7 +7573,7 @@ var UploadInputRenderer = {
7209
7573
  };
7210
7574
  return (
7211
7575
  // We don't pass help here as there is no sensible place to display it
7212
- /* @__PURE__ */ jsx105(
7576
+ /* @__PURE__ */ jsx110(
7213
7577
  UploadFieldInput_default,
7214
7578
  {
7215
7579
  id,
@@ -7219,7 +7583,7 @@ var UploadInputRenderer = {
7219
7583
  features,
7220
7584
  control,
7221
7585
  tags,
7222
- children: /* @__PURE__ */ jsx105(
7586
+ children: /* @__PURE__ */ jsx110(
7223
7587
  UploadInput2,
7224
7588
  {
7225
7589
  id,
@@ -7289,7 +7653,7 @@ var LargeUploadRenderer = {
7289
7653
  };
7290
7654
  const filetypes = acceptsToFileTypes(accepts);
7291
7655
  const usAccept = filetypes === "*" ? "*" : filetypes.join(",");
7292
- return /* @__PURE__ */ jsx105(
7656
+ return /* @__PURE__ */ jsx110(
7293
7657
  FieldInput_default,
7294
7658
  {
7295
7659
  id,
@@ -7300,7 +7664,7 @@ var LargeUploadRenderer = {
7300
7664
  features,
7301
7665
  control,
7302
7666
  tags,
7303
- children: /* @__PURE__ */ jsx105(
7667
+ children: /* @__PURE__ */ jsx110(
7304
7668
  Upload,
7305
7669
  __spreadProps(__spreadValues({}, uploadProps), {
7306
7670
  usAccept,
@@ -7316,21 +7680,21 @@ var LargeUploadRenderer = {
7316
7680
  };
7317
7681
 
7318
7682
  // ../renderers/src/UpsellRenderer.tsx
7319
- var import_classnames36 = __toESM(require_classnames());
7683
+ var import_classnames38 = __toESM(require_classnames());
7320
7684
  import { Nudge } from "@transferwise/components";
7321
- import { useState as useState22 } from "react";
7322
- import { jsx as jsx106 } from "react/jsx-runtime";
7685
+ import { useState as useState25 } from "react";
7686
+ import { jsx as jsx111 } from "react/jsx-runtime";
7323
7687
  var UpsellRenderer = {
7324
7688
  canRenderType: "upsell",
7325
7689
  render: UpsellRendererComponent
7326
7690
  };
7327
7691
  function UpsellRendererComponent(props) {
7328
7692
  const { text, callToAction, media, margin, onDismiss, control, tags } = props;
7329
- const [isVisible, setIsVisible] = useState22(true);
7330
- return isVisible ? /* @__PURE__ */ jsx106(
7693
+ const [isVisible, setIsVisible] = useState25(true);
7694
+ return isVisible ? /* @__PURE__ */ jsx111(
7331
7695
  Nudge,
7332
7696
  {
7333
- className: (0, import_classnames36.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
7697
+ className: (0, import_classnames38.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
7334
7698
  mediaName: getMediaName(media),
7335
7699
  title: text,
7336
7700
  action: __spreadValues({
@@ -7381,7 +7745,8 @@ var getWiseRenderers = () => [
7381
7745
  CircularButtonRenderer,
7382
7746
  BorderedBackgroundColoredBoxRenderer,
7383
7747
  BoxRenderer_default,
7384
- CollectionRenderer_default,
7748
+ CollectionRendererV2_default,
7749
+ CollectionRendererV1_default,
7385
7750
  ButtonRenderer,
7386
7751
  ColumnsRenderer_default,
7387
7752
  DateInputRenderer_default,
@@ -7428,11 +7793,11 @@ var getWiseRenderers = () => [
7428
7793
 
7429
7794
  // ../renderers/src/InitialLoadingStateRenderer.tsx
7430
7795
  import { Loader as Loader2 } from "@transferwise/components";
7431
- import { jsx as jsx107 } from "react/jsx-runtime";
7796
+ import { jsx as jsx112 } from "react/jsx-runtime";
7432
7797
  var InitialLoadingStateRenderer = {
7433
7798
  canRenderType: "loading-state",
7434
7799
  canRender: ({ stepLoadingState }) => stepLoadingState === "initial",
7435
- render: () => /* @__PURE__ */ jsx107(
7800
+ render: () => /* @__PURE__ */ jsx112(
7436
7801
  Loader2,
7437
7802
  {
7438
7803
  size: "md",
@@ -7445,24 +7810,24 @@ var InitialLoadingStateRenderer = {
7445
7810
  // src/dynamicFlow/DynamicFlowModal.tsx
7446
7811
  import { useDynamicFlowModal } from "@wise/dynamic-flow-client";
7447
7812
  import { Modal as Modal5 } from "@transferwise/components";
7448
- import { jsx as jsx108 } from "react/jsx-runtime";
7813
+ import { jsx as jsx113 } from "react/jsx-runtime";
7449
7814
  function DynamicFlowModal(props) {
7450
7815
  const _a = props, { className = "" } = _a, rest = __objRest(_a, ["className"]);
7451
7816
  const dfProps = useWiseToCoreProps(rest);
7452
7817
  const df = useDynamicFlowModal(dfProps);
7453
- return /* @__PURE__ */ jsx108(
7818
+ return /* @__PURE__ */ jsx113(
7454
7819
  Modal5,
7455
7820
  __spreadProps(__spreadValues({
7456
7821
  className: `dynamic-flow-modal ${className}`,
7457
7822
  disableDimmerClickToClose: true
7458
7823
  }, df.modal), {
7459
- body: /* @__PURE__ */ jsx108("div", { className: "dynamic-flow-modal", children: df.modal.body })
7824
+ body: /* @__PURE__ */ jsx113("div", { className: "dynamic-flow-modal", children: df.modal.body })
7460
7825
  })
7461
7826
  );
7462
7827
  }
7463
7828
 
7464
7829
  // src/dynamicFlow/getMergedRenderers.tsx
7465
- import { jsx as jsx109 } from "react/jsx-runtime";
7830
+ import { jsx as jsx114 } from "react/jsx-runtime";
7466
7831
  var wiseRenderers = getWiseRenderers();
7467
7832
  var getMergedRenderers = (props) => {
7468
7833
  var _d, _e;
@@ -7476,7 +7841,7 @@ var getMergedRenderers = (props) => {
7476
7841
  method: initialRequest.method,
7477
7842
  data: initialRequest.body
7478
7843
  };
7479
- return presentation.type === "push" ? /* @__PURE__ */ jsx109(DynamicFlow, __spreadProps(__spreadValues(__spreadValues({}, restProps), rest), { features: subflowFeatures, initialAction: action })) : /* @__PURE__ */ jsx109(
7844
+ return presentation.type === "push" ? /* @__PURE__ */ jsx114(DynamicFlow, __spreadProps(__spreadValues(__spreadValues({}, restProps), rest), { features: subflowFeatures, initialAction: action })) : /* @__PURE__ */ jsx114(
7480
7845
  DynamicFlowModal,
7481
7846
  __spreadProps(__spreadValues(__spreadValues({}, restProps), rest), {
7482
7847
  features: subflowFeatures,
@@ -7556,7 +7921,7 @@ var customEventsToAnalytics = {
7556
7921
 
7557
7922
  // src/dynamicFlow/useOnCopy.tsx
7558
7923
  import { useCallback as useCallback2 } from "react";
7559
- import { useIntl as useIntl22 } from "react-intl";
7924
+ import { useIntl as useIntl25 } from "react-intl";
7560
7925
 
7561
7926
  // src/dynamicFlow/messages.ts
7562
7927
  import { defineMessages as defineMessages16 } from "react-intl";
@@ -7575,7 +7940,7 @@ var messages_default = defineMessages16({
7575
7940
 
7576
7941
  // src/dynamicFlow/useOnCopy.tsx
7577
7942
  var useOnCopy = () => {
7578
- const { formatMessage } = useIntl22();
7943
+ const { formatMessage } = useIntl25();
7579
7944
  const createSnackBar = useSnackBarIfAvailable();
7580
7945
  return useCallback2(
7581
7946
  (copiedContent) => {
@@ -7591,9 +7956,9 @@ var useOnCopy = () => {
7591
7956
 
7592
7957
  // src/dynamicFlow/useWiseHttpClient.tsx
7593
7958
  import { useCallback as useCallback3 } from "react";
7594
- import { useIntl as useIntl23 } from "react-intl";
7959
+ import { useIntl as useIntl26 } from "react-intl";
7595
7960
  var useWiseHttpClient = (httpClient) => {
7596
- const { locale } = useIntl23();
7961
+ const { locale } = useIntl26();
7597
7962
  return useCallback3(
7598
7963
  async (input, init = {}) => {
7599
7964
  const headers = new Headers(init.headers);
@@ -7673,13 +8038,13 @@ var openLinkInNewTab = (url) => {
7673
8038
  };
7674
8039
 
7675
8040
  // src/dynamicFlow/DynamicFlow.tsx
7676
- import { jsxs as jsxs40 } from "react/jsx-runtime";
8041
+ import { jsxs as jsxs44 } from "react/jsx-runtime";
7677
8042
  function DynamicFlow(props) {
7678
8043
  const { className = "" } = props;
7679
8044
  const dfProps = useWiseToCoreProps(props);
7680
8045
  const df = useDynamicFlow(dfProps);
7681
8046
  const { onContextMenu, contextMenu } = useDFContextMenu(df.controller);
7682
- return /* @__PURE__ */ jsxs40("div", { className, onContextMenu, children: [
8047
+ return /* @__PURE__ */ jsxs44("div", { className, onContextMenu, children: [
7683
8048
  df.view,
7684
8049
  contextMenu
7685
8050
  ] });
@@ -7691,7 +8056,7 @@ import {
7691
8056
  useImperativeHandle
7692
8057
  } from "react";
7693
8058
  import { useDynamicFlow as useDynamicFlow2 } from "@wise/dynamic-flow-client";
7694
- import { jsx as jsx110 } from "react/jsx-runtime";
8059
+ import { jsx as jsx115 } from "react/jsx-runtime";
7695
8060
  var DynamicFlowWithRef = forwardRef(function DynamicFlowWithRef2(props, ref) {
7696
8061
  const { className = "" } = props;
7697
8062
  const dfProps = useWiseToCoreProps(props);
@@ -7707,7 +8072,7 @@ var DynamicFlowWithRef = forwardRef(function DynamicFlowWithRef2(props, ref) {
7707
8072
  }),
7708
8073
  [df]
7709
8074
  );
7710
- return /* @__PURE__ */ jsx110("div", { className, children: df.view });
8075
+ return /* @__PURE__ */ jsx115("div", { className, children: df.view });
7711
8076
  });
7712
8077
 
7713
8078
  // src/index.ts
@@ -7718,6 +8083,7 @@ var Header10 = Header;
7718
8083
  var Media2 = Media;
7719
8084
  var getMargin2 = getMargin;
7720
8085
  var createCollectionRenderer2 = createCollectionRenderer;
8086
+ var createContactsCollectionRenderer2 = createContactsCollectionRenderer;
7721
8087
 
7722
8088
  // src/i18n/index.ts
7723
8089
  import { translations as coreTranslations } from "@wise/dynamic-flow-client";
@@ -7837,6 +8203,8 @@ var en_default = {
7837
8203
  "df.wise.ButtonLayout.buttonLoadingMessage": "This might take a few seconds",
7838
8204
  "df.wise.Collection.clearText": "Clear text",
7839
8205
  "df.wise.Collection.loadMoreMessage": "Load more",
8206
+ "df.wise.Collection.showLessResultsButton": "Show less results",
8207
+ "df.wise.Collection.showMoreResultsButton": "Show all {count} results",
7840
8208
  "df.wise.ControlFeedback.maxLength": "Please enter {maxLength} or fewer characters.",
7841
8209
  "df.wise.ControlFeedback.maximum": "Please enter a number that's {maximum} or less.",
7842
8210
  "df.wise.ControlFeedback.maximumDate": "Please enter a date that's on or before {maximum}.",
@@ -8694,6 +9062,7 @@ export {
8694
9062
  Header10 as Header,
8695
9063
  Media2 as Media,
8696
9064
  createCollectionRenderer2 as createCollectionRenderer,
9065
+ createContactsCollectionRenderer2 as createContactsCollectionRenderer,
8697
9066
  findRendererPropsByType,
8698
9067
  getMargin2 as getMargin,
8699
9068
  makeHttpClient as makeCustomFetch,