@wise/dynamic-flow-client-internal 5.25.2 → 5.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/main.mjs CHANGED
@@ -127,22 +127,27 @@ import { useDynamicFlow } from "@wise/dynamic-flow-client";
127
127
  // src/dynamicFlow/telemetry/app-version.ts
128
128
  var appVersion = (
129
129
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
130
- typeof process !== "undefined" ? "5.25.2" : "0.0.0"
130
+ typeof process !== "undefined" ? "5.26.0" : "0.0.0"
131
131
  );
132
132
 
133
133
  // src/dynamicFlow/context-menu/useContextMenu.tsx
134
134
  import { useCallback, useEffect, useState } from "react";
135
135
  import { jsx, jsxs } from "react/jsx-runtime";
136
- function useContextMenu({ title, items }) {
136
+ function useContextMenu({
137
+ title,
138
+ subtitle,
139
+ items
140
+ }) {
137
141
  const { menuPosition, openMenuAt, closeMenu } = useMenuPosition();
138
142
  const onContextMenu = (event) => {
139
- if (items.length > 0) {
143
+ if (items.length > 0 && !event.shiftKey) {
140
144
  event.preventDefault();
141
145
  openMenuAt({ x: event.clientX, y: event.clientY });
142
146
  }
143
147
  };
144
148
  const contextMenu = menuPosition ? /* @__PURE__ */ jsxs("div", { className: "df-context-menu", style: { top: menuPosition.y, left: menuPosition.x }, children: [
145
149
  /* @__PURE__ */ jsx("div", { className: "menu-header", children: title }),
150
+ /* @__PURE__ */ jsx("div", { className: "menu-subtitle", children: subtitle }),
146
151
  items.map(({ label, onClick }) => /* @__PURE__ */ jsx(
147
152
  "button",
148
153
  {
@@ -204,6 +209,7 @@ var useDFContextMenu = (controller) => {
204
209
  };
205
210
  return useContextMenu({
206
211
  title: "DynamicFlow Menu (Dev/Staging only)",
212
+ subtitle: "Shift + right-click for browser menu",
207
213
  items: isDevOrStaging() ? [
208
214
  {
209
215
  label: `DF client version: ${appVersion}`,
@@ -311,13 +317,13 @@ var recursivelyRemoveNullish = (element) => {
311
317
  };
312
318
 
313
319
  // src/dynamicFlow/useWiseToCoreProps.tsx
314
- import { useMemo as useMemo3 } from "react";
320
+ import { useMemo as useMemo2 } from "react";
315
321
 
316
322
  // src/dynamicFlow/getMergedRenderers.tsx
317
323
  import { getDynamicSubflowRenderer } from "@wise/dynamic-flow-client";
318
324
 
319
325
  // ../renderers/src/AlertRenderer/AlertRenderer.tsx
320
- import { useState as useState2 } from "react";
326
+ import { useState as useState3 } from "react";
321
327
 
322
328
  // ../renderers/src/AlertRenderer/ActionPromptComponent.tsx
323
329
  import { ActionPrompt } from "@transferwise/components";
@@ -354,13 +360,13 @@ var isNamedIcon = (name) => {
354
360
  const iconName = toCapitalisedCamelCase(name);
355
361
  return Object.keys(icons).includes(iconName);
356
362
  };
357
- function NamedIcon({ name }) {
363
+ function NamedIcon({ name, title, size }) {
358
364
  if (!isNamedIcon(name)) {
359
365
  return null;
360
366
  }
361
367
  const iconName = toCapitalisedCamelCase(name);
362
368
  const Icon = icons[iconName];
363
- return /* @__PURE__ */ jsx4(Icon, { size: 24 });
369
+ return /* @__PURE__ */ jsx4(Icon, { size: size != null ? size : 24, title: title != null ? title : iconName });
364
370
  }
365
371
  var toCapitalisedCamelCase = (value) => value.split("-").map(capitaliseFirstChar).join("");
366
372
  var capitaliseFirstChar = (value) => value.length === 0 ? "" : `${value[0].toUpperCase()}${value.slice(1)}`;
@@ -380,11 +386,14 @@ function isValidIconName(name) {
380
386
  return isNamedIcon(name) || isFlagIcon(name);
381
387
  }
382
388
  function isValidIconUrn(uri) {
389
+ const name = extractIconNameFromUri(uri);
390
+ return !!name && isValidIconName(name);
391
+ }
392
+ function extractIconNameFromUri(uri) {
383
393
  if (!uri.startsWith("urn:wise:icons:")) {
384
- return false;
394
+ return void 0;
385
395
  }
386
- const name = uri.replace("urn:wise:icons:", "").split("?")[0];
387
- return isValidIconName(name);
396
+ return uri.replace("urn:wise:icons:", "").split("?")[0];
388
397
  }
389
398
  var DynamicIcon_default = DynamicIcon;
390
399
 
@@ -455,23 +464,23 @@ var formatColor = (color) => {
455
464
  // ../renderers/src/components/Media/AvatarMedia.tsx
456
465
  import { AvatarLayout, AvatarView } from "@transferwise/components";
457
466
  import { jsx as jsx7 } from "react/jsx-runtime";
467
+ var getRenderableAvatar = (avatar, size) => {
468
+ if (avatar.type === "text") {
469
+ return {
470
+ asset: avatar.text,
471
+ badge: avatar.badgeUri ? resolveMediaFromUri(avatar.badgeUri, 16) : void 0
472
+ };
473
+ }
474
+ return __spreadProps(__spreadValues({}, resolveMediaFromUri(avatar.uri, size)), {
475
+ badge: avatar.badgeUri ? resolveMediaFromUri(avatar.badgeUri, 16) : void 0
476
+ });
477
+ };
458
478
  var AvatarMedia = ({
459
479
  accessibilityDescription,
460
480
  content,
461
481
  size
462
482
  }) => {
463
- const getRenderableAvatar = (avatar) => {
464
- if (avatar.type === "text") {
465
- return {
466
- asset: avatar.text,
467
- badge: avatar.badgeUri ? resolveMediaFromUri(avatar.badgeUri, 16) : void 0
468
- };
469
- }
470
- return __spreadProps(__spreadValues({}, resolveMediaFromUri(avatar.uri, size)), {
471
- badge: avatar.badgeUri ? resolveMediaFromUri(avatar.badgeUri, 16) : void 0
472
- });
473
- };
474
- const avatars = content.map(getRenderableAvatar);
483
+ const avatars = content.map((avatar) => getRenderableAvatar(avatar, size));
475
484
  if (avatars.length === 1) {
476
485
  const { badge, backgroundColor, color, asset, icon } = avatars[0];
477
486
  if (!asset && !icon) {
@@ -482,7 +491,7 @@ var AvatarMedia = ({
482
491
  {
483
492
  "aria-label": accessibilityDescription,
484
493
  size,
485
- badge: badge ? __spreadProps(__spreadValues({}, getBadge(badge)), { type: "reference" }) : void 0,
494
+ badge: badge && getAvatarBadgeAsset(badge),
486
495
  style: { backgroundColor, color },
487
496
  children: icon != null ? icon : asset
488
497
  }
@@ -503,7 +512,7 @@ var AvatarMedia = ({
503
512
  );
504
513
  };
505
514
  var DEFAULT_BADGE_BACKGROUND_COLOR = "var(--color-background-neutral)";
506
- var getBadge = ({
515
+ var getAvatarBadgeAsset = ({
507
516
  backgroundColor,
508
517
  color,
509
518
  asset,
@@ -523,12 +532,14 @@ var getBadge = ({
523
532
  },
524
533
  children: icon || asset
525
534
  }
526
- )
535
+ ),
536
+ type: "reference"
527
537
  };
528
538
  }
529
539
  return {
530
540
  icon,
531
- asset
541
+ asset,
542
+ type: "reference"
532
543
  };
533
544
  };
534
545
 
@@ -594,20 +605,12 @@ var LegacyMedia = ({ image, icon, preferAvatar, size }) => {
594
605
 
595
606
  // ../renderers/src/components/Media/Media.tsx
596
607
  import { jsx as jsx10 } from "react/jsx-runtime";
597
- var Media = ({
598
- media,
599
- preferAvatar = false,
600
- size
601
- }) => {
608
+ var Media = ({ media, preferAvatar = false, size }) => {
602
609
  switch (media == null ? void 0 : media.type) {
603
610
  case "avatar":
604
611
  return /* @__PURE__ */ jsx10(AvatarMedia, __spreadProps(__spreadValues({}, media), { size }));
605
612
  case "image": {
606
- const { asset, icon } = resolveMediaFromUri(
607
- media.uri,
608
- size,
609
- media.accessibilityDescription
610
- );
613
+ const { asset, icon } = resolveMediaFromUri(media.uri, size, media.accessibilityDescription);
611
614
  return icon != null ? icon : asset;
612
615
  }
613
616
  case "legacy": {
@@ -617,7 +620,35 @@ var Media = ({
617
620
  return null;
618
621
  }
619
622
  };
620
- var isMediaIcon = (media) => (media == null ? void 0 : media.type) === "image" && isValidIconUrn(media.uri);
623
+ function getAccessibilityDescription(media) {
624
+ switch (media.type) {
625
+ case "avatar":
626
+ case "image":
627
+ return media.accessibilityDescription;
628
+ default:
629
+ return void 0;
630
+ }
631
+ }
632
+ function extractFirstImage(media) {
633
+ switch (media.type) {
634
+ case "image":
635
+ return media;
636
+ case "avatar":
637
+ return extractFirstImageFromAvatar(media);
638
+ default:
639
+ return void 0;
640
+ }
641
+ }
642
+ function extractFirstImageFromAvatar(avatar) {
643
+ if (!avatar.content.length) return void 0;
644
+ const firstItem = avatar.content[0];
645
+ if (firstItem.type !== "uri") return void 0;
646
+ return {
647
+ type: "image",
648
+ uri: firstItem.uri,
649
+ accessibilityDescription: avatar.accessibilityDescription
650
+ };
651
+ }
621
652
 
622
653
  // ../renderers/src/components/Media/OptionMedia.tsx
623
654
  import { jsx as jsx11 } from "react/jsx-runtime";
@@ -630,27 +661,6 @@ function OptionMedia(props) {
630
661
  import { jsx as jsx12 } from "react/jsx-runtime";
631
662
  var getInlineMedia = (media) => media ? /* @__PURE__ */ jsx12(Media, { media, preferAvatar: false, size: 24 }) : null;
632
663
 
633
- // ../renderers/src/components/Media/getPromptMedia.tsx
634
- import { jsx as jsx13 } from "react/jsx-runtime";
635
- var getPromptMedia = (media) => {
636
- if (!media || media.type === "legacy") {
637
- return void 0;
638
- }
639
- if (media.type === "image" && !media.uri.startsWith("urn:")) {
640
- return {
641
- imgSrc: media.uri,
642
- "aria-label": media.accessibilityDescription
643
- };
644
- }
645
- const _a = media, { accessibilityDescription: ariaLabel } = _a, sansAriaLabel = __objRest(_a, ["accessibilityDescription"]);
646
- return {
647
- avatar: {
648
- asset: /* @__PURE__ */ jsx13(Media, { media: sansAriaLabel, size: 48 })
649
- },
650
- "aria-label": ariaLabel
651
- };
652
- };
653
-
654
664
  // ../renderers/src/utils/layout-utils.ts
655
665
  var getMargin = (size) => {
656
666
  switch (size) {
@@ -681,12 +691,183 @@ var getTextAlignment = (align) => {
681
691
  };
682
692
  var getTextAlignmentAndMargin = (component) => `${getTextAlignment(component.align)} ${getMargin(component.margin)}`;
683
693
 
694
+ // ../renderers/src/ImageRenderer/UrnFlagImage.tsx
695
+ import { jsx as jsx13 } from "react/jsx-runtime";
696
+ var maxFlagSize = 600;
697
+ function UrnFlagImage({
698
+ accessibilityDescription,
699
+ align,
700
+ margin,
701
+ size,
702
+ uri
703
+ }) {
704
+ return /* @__PURE__ */ jsx13("div", { className: `df-image ${align} ${size || "md"} ${getMargin(margin)}`, children: /* @__PURE__ */ jsx13(UrnFlag, { size: maxFlagSize, urn: uri, accessibilityDescription }) });
705
+ }
706
+
707
+ // ../renderers/src/ImageRenderer/UrnIllustration.tsx
708
+ import {
709
+ Illustration,
710
+ isIllustrationSupport3D
711
+ } from "@wise/art";
712
+ import { useState as useState2 } from "react";
713
+
714
+ // ../renderers/src/ImageRenderer/isAnimated.ts
715
+ var isAnimated = (uri) => {
716
+ const { rComponents } = stringToURN(uri);
717
+ return rComponents.type === "animated";
718
+ };
719
+
720
+ // ../renderers/src/ImageRenderer/SafeIllustration3D.tsx
721
+ import { Illustration3D } from "@wise/art";
722
+ import { Component } from "react";
723
+ import { jsx as jsx14 } from "react/jsx-runtime";
724
+ var Illustration3DErrorBoundary = class extends Component {
725
+ constructor(props) {
726
+ super(props);
727
+ this.state = { hasError: false };
728
+ }
729
+ static getDerivedStateFromError() {
730
+ return { hasError: true };
731
+ }
732
+ componentDidCatch() {
733
+ this.props.onError();
734
+ }
735
+ render() {
736
+ if (this.state.hasError) {
737
+ return null;
738
+ }
739
+ return this.props.children;
740
+ }
741
+ };
742
+ var SafeIllustration3D = ({
743
+ name,
744
+ size,
745
+ onError
746
+ }) => {
747
+ return /* @__PURE__ */ jsx14(Illustration3DErrorBoundary, { onError, children: /* @__PURE__ */ jsx14(Illustration3D, { name, size }) });
748
+ };
749
+ var SafeIllustration3D_default = SafeIllustration3D;
750
+
751
+ // ../renderers/src/ImageRenderer/UrnIllustration.tsx
752
+ import { jsx as jsx15 } from "react/jsx-runtime";
753
+ var urnPrefix = "urn:wise:illustrations:";
754
+ var isUrnIllustration = (uri) => uri.startsWith(urnPrefix);
755
+ function UrnIllustration({
756
+ accessibilityDescription,
757
+ align,
758
+ margin,
759
+ size,
760
+ uri
761
+ }) {
762
+ const [has3DFailed, setHas3DFailed] = useState2(false);
763
+ const illustrationSize = getIllustrationSize(size);
764
+ const illustrationName = getIllustrationName(uri);
765
+ const illustration3DName = getIllustration3DName(uri);
766
+ if (illustration3DName && isAnimated(uri) && !has3DFailed) {
767
+ return /* @__PURE__ */ jsx15("div", { className: `df-image ${align} ${getMargin(margin)}`, children: /* @__PURE__ */ jsx15(
768
+ SafeIllustration3D_default,
769
+ {
770
+ name: illustration3DName,
771
+ size: illustrationSize,
772
+ onError: () => setHas3DFailed(true)
773
+ }
774
+ ) });
775
+ }
776
+ return /* @__PURE__ */ jsx15("div", { className: `df-image ${align} ${getMargin(margin)}`, children: /* @__PURE__ */ jsx15(
777
+ Illustration,
778
+ {
779
+ className: "df-illustration",
780
+ name: illustrationName,
781
+ size: illustrationSize,
782
+ alt: accessibilityDescription
783
+ }
784
+ ) });
785
+ }
786
+ var getIllustrationSize = (size) => ({ xs: "small", sm: "small", md: "medium", lg: "large", xl: "large" })[size] || "medium";
787
+ var getIllustrationName = (uri) => {
788
+ return uri.replace(urnPrefix, "").split("?")[0];
789
+ };
790
+ var getIllustration3DName = (uri) => {
791
+ const illustrationName = getIllustrationName(uri);
792
+ return isIllustrationSupport3D(illustrationName) ? illustrationName : null;
793
+ };
794
+
795
+ // ../renderers/src/ImageRenderer/UrnImage.tsx
796
+ import { jsx as jsx16 } from "react/jsx-runtime";
797
+ var isUrnImage = (uri) => uri.startsWith("urn:");
798
+ function UrnImage(props) {
799
+ const { uri } = props;
800
+ if (isUrnIllustration(uri)) {
801
+ return /* @__PURE__ */ jsx16(UrnIllustration, __spreadValues({}, props));
802
+ }
803
+ if (isUrnFlag(uri)) {
804
+ return /* @__PURE__ */ jsx16(UrnFlagImage, __spreadValues({}, props));
805
+ }
806
+ return null;
807
+ }
808
+
809
+ // ../renderers/src/components/Media/getPromptMedia.tsx
810
+ import { jsx as jsx17 } from "react/jsx-runtime";
811
+ var getInfoPromptMedia = (media) => {
812
+ const asset = getPromptIcon(media, 24);
813
+ return asset && { asset };
814
+ };
815
+ var getInlinePromptMedia = (media) => {
816
+ return getPromptIcon(media, 16);
817
+ };
818
+ var getPromptIcon = (media, size) => {
819
+ const image = extractFirstImage(media);
820
+ const iconName = (image == null ? void 0 : image.uri) && extractIconNameFromUri(image == null ? void 0 : image.uri);
821
+ if (!iconName || !isNamedIcon(iconName)) return void 0;
822
+ return /* @__PURE__ */ jsx17(NamedIcon, { name: iconName, size, title: getAccessibilityDescription(media) });
823
+ };
824
+ var getActionPromptMedia = (media) => {
825
+ var _a;
826
+ if (media.type === "legacy") {
827
+ return void 0;
828
+ }
829
+ if (media.type === "image" && !isUrnImage(media.uri)) {
830
+ return {
831
+ imgSrc: media.uri,
832
+ "aria-label": media.accessibilityDescription
833
+ };
834
+ }
835
+ const content = extractFirstAvatarContent(media);
836
+ const avatar = content && getRenderableAvatar(content, 48);
837
+ if (!avatar || !avatar.asset && !avatar.icon) {
838
+ return void 0;
839
+ }
840
+ return {
841
+ avatar: {
842
+ asset: (_a = avatar.icon) != null ? _a : avatar.asset,
843
+ badge: avatar.badge && getAvatarBadgeAsset(avatar.badge),
844
+ style: { backgroundColor: avatar.backgroundColor, color: avatar.color }
845
+ },
846
+ "aria-label": media.accessibilityDescription
847
+ };
848
+ };
849
+ var extractFirstAvatarContent = (media) => {
850
+ switch (media.type) {
851
+ case "avatar":
852
+ if (!media.content) return void 0;
853
+ return media.content[0];
854
+ case "image":
855
+ if (!isUrnImage(media.uri)) return void 0;
856
+ return {
857
+ type: "uri",
858
+ uri: media.uri
859
+ };
860
+ default:
861
+ return void 0;
862
+ }
863
+ };
864
+
684
865
  // ../renderers/src/AlertRenderer/mappers.tsx
685
866
  import {
686
867
  Markdown,
687
868
  MarkdownNodeType
688
869
  } from "@transferwise/components";
689
- import { jsx as jsx14 } from "react/jsx-runtime";
870
+ import { jsx as jsx18 } from "react/jsx-runtime";
690
871
  var mapCallToAction = (callToAction) => __spreadValues({
691
872
  label: callToAction.title,
692
873
  "aria-label": callToAction.accessibilityDescription
@@ -696,7 +877,7 @@ var promptMarkdownAllowList = [
696
877
  MarkdownNodeType.PARAGRAPH,
697
878
  MarkdownNodeType.STRONG
698
879
  ];
699
- var mapPromptDescription = (markdown) => /* @__PURE__ */ jsx14(
880
+ var mapPromptDescription = (markdown) => /* @__PURE__ */ jsx18(
700
881
  Markdown,
701
882
  {
702
883
  as: "span",
@@ -710,7 +891,7 @@ var mapPromptDescription = (markdown) => /* @__PURE__ */ jsx14(
710
891
  var mapPromptSentiment = (context) => context === "positive" ? "success" : context;
711
892
 
712
893
  // ../renderers/src/AlertRenderer/ActionPromptComponent.tsx
713
- import { jsx as jsx15 } from "react/jsx-runtime";
894
+ import { jsx as jsx19 } from "react/jsx-runtime";
714
895
  function ActionPromptComponent({
715
896
  callToAction,
716
897
  context,
@@ -721,14 +902,14 @@ function ActionPromptComponent({
721
902
  secondaryCallToAction,
722
903
  title
723
904
  }) {
724
- return /* @__PURE__ */ jsx15(
905
+ return /* @__PURE__ */ jsx19(
725
906
  ActionPrompt,
726
907
  {
727
908
  title: title != null ? title : "",
728
909
  description: mapPromptDescription(markdown),
729
910
  sentiment: mapPromptSentiment(context),
730
911
  className: getMargin(margin),
731
- media: getPromptMedia(media),
912
+ media: media && getActionPromptMedia(media),
732
913
  action: mapCallToAction(callToAction),
733
914
  actionSecondary: secondaryCallToAction ? mapCallToAction(secondaryCallToAction) : void 0,
734
915
  onDismiss
@@ -738,7 +919,7 @@ function ActionPromptComponent({
738
919
 
739
920
  // ../renderers/src/AlertRenderer/InfoPromptComponent.tsx
740
921
  import { InfoPrompt } from "@transferwise/components";
741
- import { jsx as jsx16 } from "react/jsx-runtime";
922
+ import { jsx as jsx20 } from "react/jsx-runtime";
742
923
  function InfoPromptComponent({
743
924
  callToAction,
744
925
  context,
@@ -748,14 +929,14 @@ function InfoPromptComponent({
748
929
  onDismiss,
749
930
  title
750
931
  }) {
751
- return /* @__PURE__ */ jsx16(
932
+ return /* @__PURE__ */ jsx20(
752
933
  InfoPrompt,
753
934
  {
754
935
  title,
755
936
  description: mapPromptDescription(markdown),
756
937
  sentiment: mapPromptSentiment(context),
757
938
  className: getMargin(margin),
758
- media: isMediaIcon(media) ? { asset: getInlineMedia(media) } : void 0,
939
+ media: media && getInfoPromptMedia(media),
759
940
  action: callToAction ? mapCallToAction(callToAction) : void 0,
760
941
  onDismiss
761
942
  }
@@ -763,13 +944,13 @@ function InfoPromptComponent({
763
944
  }
764
945
 
765
946
  // ../renderers/src/AlertRenderer/AlertRenderer.tsx
766
- import { jsx as jsx17 } from "react/jsx-runtime";
947
+ import { jsx as jsx21 } from "react/jsx-runtime";
767
948
  var AlertRenderer = {
768
949
  canRenderType: "alert",
769
950
  render: AlertRendererComponent
770
951
  };
771
952
  function AlertRendererComponent(props) {
772
- const [isVisible, setIsVisible] = useState2(true);
953
+ const [isVisible, setIsVisible] = useState3(true);
773
954
  const { onDismiss: dismiss } = props;
774
955
  if (!isVisible) {
775
956
  return null;
@@ -779,9 +960,9 @@ function AlertRendererComponent(props) {
779
960
  dismiss();
780
961
  } : void 0;
781
962
  if (shouldRenderActionPrompt(props)) {
782
- return /* @__PURE__ */ jsx17(ActionPromptComponent, __spreadProps(__spreadValues({}, props), { onDismiss }));
963
+ return /* @__PURE__ */ jsx21(ActionPromptComponent, __spreadProps(__spreadValues({}, props), { onDismiss }));
783
964
  }
784
- return /* @__PURE__ */ jsx17(InfoPromptComponent, __spreadProps(__spreadValues({}, props), { onDismiss }));
965
+ return /* @__PURE__ */ jsx21(InfoPromptComponent, __spreadProps(__spreadValues({}, props), { onDismiss }));
785
966
  }
786
967
  var shouldRenderActionPrompt = (props) => {
787
968
  var _a, _b;
@@ -793,13 +974,13 @@ var AlertRenderer_default = AlertRenderer;
793
974
 
794
975
  // ../renderers/src/BoxRenderer.tsx
795
976
  var import_classnames = __toESM(require_classnames());
796
- import { jsx as jsx18 } from "react/jsx-runtime";
977
+ import { jsx as jsx22 } from "react/jsx-runtime";
797
978
  var BoxRenderer = {
798
979
  canRenderType: "box",
799
980
  render: ({ children, control, margin, width }) => {
800
981
  const hasFixedWidth = width !== "xl";
801
982
  const hasBorder = control === "bordered" || control === "bordered-web";
802
- const contents = /* @__PURE__ */ jsx18(
983
+ const contents = /* @__PURE__ */ jsx22(
803
984
  "div",
804
985
  {
805
986
  className: (0, import_classnames.default)("df-box-renderer", {
@@ -810,7 +991,7 @@ var BoxRenderer = {
810
991
  children
811
992
  }
812
993
  );
813
- return hasFixedWidth ? /* @__PURE__ */ jsx18("div", { className: (0, import_classnames.default)("df-box-renderer-fixed-width", getMargin(margin)), children: contents }) : contents;
994
+ return hasFixedWidth ? /* @__PURE__ */ jsx22("div", { className: (0, import_classnames.default)("df-box-renderer-fixed-width", getMargin(margin)), children: contents }) : contents;
814
995
  }
815
996
  };
816
997
  var BoxRenderer_default = BoxRenderer;
@@ -830,8 +1011,8 @@ var loading_button_messages_default = defineMessages({
830
1011
  });
831
1012
 
832
1013
  // ../renderers/src/ButtonRenderer/AddressValidationButtonRenderer.tsx
833
- import { useEffect as useEffect2, useState as useState3 } from "react";
834
- import { jsx as jsx19, jsxs as jsxs3 } from "react/jsx-runtime";
1014
+ import { useEffect as useEffect2, useState as useState4 } from "react";
1015
+ import { jsx as jsx23, jsxs as jsxs3 } from "react/jsx-runtime";
835
1016
  var AddressValidationButtonRenderer = {
836
1017
  canRenderType: "button",
837
1018
  canRender: ({ control }) => control === "address-validation",
@@ -840,7 +1021,7 @@ var AddressValidationButtonRenderer = {
840
1021
  function AddressValidationButtonComponent(props) {
841
1022
  const { disabled, margin, title, stepLoadingState, onClick } = props;
842
1023
  const { formatMessage } = useIntl();
843
- const [spinny, setSpinny] = useState3(false);
1024
+ const [spinny, setSpinny] = useState4(false);
844
1025
  useEffect2(() => {
845
1026
  if (stepLoadingState === "idle") {
846
1027
  setSpinny(false);
@@ -852,7 +1033,7 @@ function AddressValidationButtonComponent(props) {
852
1033
  }
853
1034
  };
854
1035
  return /* @__PURE__ */ jsxs3("div", { className: `d-flex flex-column ${getMargin(margin)}`, children: [
855
- /* @__PURE__ */ jsx19(
1036
+ /* @__PURE__ */ jsx23(
856
1037
  Button,
857
1038
  {
858
1039
  v2: true,
@@ -869,7 +1050,7 @@ function AddressValidationButtonComponent(props) {
869
1050
  children: title
870
1051
  }
871
1052
  ),
872
- spinny && /* @__PURE__ */ jsx19(InlineAlert, { type: "warning", className: "m-x-auto", children: formatMessage(loading_button_messages_default.buttonLoadingMessage) })
1053
+ spinny && /* @__PURE__ */ jsx23(InlineAlert, { type: "warning", className: "m-x-auto", children: formatMessage(loading_button_messages_default.buttonLoadingMessage) })
873
1054
  ] });
874
1055
  }
875
1056
  var AddressValidationButtonRenderer_default = AddressValidationButtonRenderer;
@@ -900,7 +1081,7 @@ var mapLegacyButtonSize = (size) => {
900
1081
  };
901
1082
 
902
1083
  // ../renderers/src/ButtonRenderer/ButtonRenderer.tsx
903
- import { useEffect as useEffect3, useState as useState4 } from "react";
1084
+ import { useEffect as useEffect3, useState as useState5 } from "react";
904
1085
 
905
1086
  // ../renderers/src/components/Media/getAddonStartMedia.ts
906
1087
  var getAddonStartMedia = (media) => {
@@ -921,7 +1102,7 @@ var getAddonStartMedia = (media) => {
921
1102
 
922
1103
  // ../renderers/src/ButtonRenderer/ButtonRenderer.tsx
923
1104
  var import_classnames2 = __toESM(require_classnames());
924
- import { jsx as jsx20 } from "react/jsx-runtime";
1105
+ import { jsx as jsx24 } from "react/jsx-runtime";
925
1106
  var ButtonRenderer = {
926
1107
  canRenderType: "button",
927
1108
  render: ButtonComponent
@@ -939,7 +1120,7 @@ function ButtonComponent(props) {
939
1120
  stepLoadingState,
940
1121
  onClick
941
1122
  } = props;
942
- const [spinny, setSpinny] = useState4(false);
1123
+ const [spinny, setSpinny] = useState5(false);
943
1124
  useEffect3(() => {
944
1125
  if (stepLoadingState === "idle") {
945
1126
  setSpinny(false);
@@ -970,7 +1151,7 @@ function ButtonComponent(props) {
970
1151
  onClick();
971
1152
  }
972
1153
  };
973
- return /* @__PURE__ */ jsx20(Button2, __spreadProps(__spreadValues({}, buttonProps), { children: title }));
1154
+ return /* @__PURE__ */ jsx24(Button2, __spreadProps(__spreadValues({}, buttonProps), { children: title }));
974
1155
  }
975
1156
  var getSentiment = (context) => context === "negative" ? "negative" : "default";
976
1157
  var getPriority = (control, tags) => {
@@ -1024,13 +1205,13 @@ var help_messages_default = defineMessages2({
1024
1205
  });
1025
1206
 
1026
1207
  // ../renderers/src/components/Help.tsx
1027
- import { jsx as jsx21 } from "react/jsx-runtime";
1208
+ import { jsx as jsx25 } from "react/jsx-runtime";
1028
1209
  function Help({ help, onClick }) {
1029
1210
  const intl = useIntl2();
1030
- return /* @__PURE__ */ jsx21(
1211
+ return /* @__PURE__ */ jsx25(
1031
1212
  Info,
1032
1213
  {
1033
- content: /* @__PURE__ */ jsx21(Markdown2, { config: { link: { target: "_blank" } }, children: help }),
1214
+ content: /* @__PURE__ */ jsx25(Markdown2, { config: { link: { target: "_blank" } }, children: help }),
1034
1215
  presentation: "POPOVER",
1035
1216
  size: "sm",
1036
1217
  "aria-label": intl.formatMessage(help_messages_default.helpAria),
@@ -1041,16 +1222,16 @@ function Help({ help, onClick }) {
1041
1222
  var Help_default = Help;
1042
1223
 
1043
1224
  // ../renderers/src/components/LabelContentWithHelp.tsx
1044
- import { jsx as jsx22, jsxs as jsxs4 } from "react/jsx-runtime";
1225
+ import { jsx as jsx26, jsxs as jsxs4 } from "react/jsx-runtime";
1045
1226
  function LabelContentWithHelp({ text, help }) {
1046
1227
  return /* @__PURE__ */ jsxs4("div", { children: [
1047
1228
  text,
1048
- /* @__PURE__ */ jsx22(Help_default, { help })
1229
+ /* @__PURE__ */ jsx26(Help_default, { help })
1049
1230
  ] });
1050
1231
  }
1051
1232
 
1052
1233
  // ../renderers/src/components/FieldInput.tsx
1053
- import { jsx as jsx23 } from "react/jsx-runtime";
1234
+ import { jsx as jsx27 } from "react/jsx-runtime";
1054
1235
  function FieldInput({
1055
1236
  id,
1056
1237
  children,
@@ -1063,9 +1244,9 @@ function FieldInput({
1063
1244
  features
1064
1245
  }) {
1065
1246
  var _a;
1066
- const labelContent = label && help ? /* @__PURE__ */ jsx23(LabelContentWithHelp, { text: label, help }) : label;
1247
+ const labelContent = label && help ? /* @__PURE__ */ jsx27(LabelContentWithHelp, { text: label, help }) : label;
1067
1248
  const { ref } = useScrollToError(validation, features);
1068
- return /* @__PURE__ */ jsx23("div", { ref, children: /* @__PURE__ */ jsx23(
1249
+ return /* @__PURE__ */ jsx27("div", { ref, children: /* @__PURE__ */ jsx27(
1069
1250
  Field,
1070
1251
  {
1071
1252
  id,
@@ -1093,22 +1274,26 @@ var FieldInput_default = FieldInput;
1093
1274
 
1094
1275
  // ../renderers/src/utils/listItem/getAdditionalText.tsx
1095
1276
  import { ListItem } from "@transferwise/components";
1096
- import { jsx as jsx24 } from "react/jsx-runtime";
1277
+ import { jsx as jsx28 } from "react/jsx-runtime";
1097
1278
  var getAdditionalText = (additionalText) => {
1098
1279
  if (!additionalText) {
1099
1280
  return void 0;
1100
1281
  }
1101
- return /* @__PURE__ */ jsx24(ListItem.AdditionalInfo, { children: additionalText });
1282
+ return /* @__PURE__ */ jsx28(ListItem.AdditionalInfo, { children: additionalText });
1102
1283
  };
1103
1284
 
1104
1285
  // ../renderers/src/utils/listItem/getInlineAlert.tsx
1105
1286
  import { ListItem as ListItem2 } from "@transferwise/components";
1106
- import { jsx as jsx25 } from "react/jsx-runtime";
1107
- var getInlineAlert = (inlineAlert) => inlineAlert ? /* @__PURE__ */ jsx25(ListItem2.Prompt, { sentiment: inlineAlert == null ? void 0 : inlineAlert.context, children: inlineAlert.content }) : void 0;
1287
+ import { jsx as jsx29 } from "react/jsx-runtime";
1288
+ var getInlineAlert = (inlineAlert) => {
1289
+ if (!inlineAlert) return void 0;
1290
+ const { context, media, content } = inlineAlert;
1291
+ return /* @__PURE__ */ jsx29(ListItem2.Prompt, { sentiment: context, media: media && getInlinePromptMedia(media), children: content });
1292
+ };
1108
1293
 
1109
1294
  // ../renderers/src/utils/listItem/getMedia.tsx
1110
- import { jsx as jsx26 } from "react/jsx-runtime";
1111
- var getMedia = (media, preferAvatar) => media ? /* @__PURE__ */ jsx26(OptionMedia, { media, preferAvatar }) : void 0;
1295
+ import { jsx as jsx30 } from "react/jsx-runtime";
1296
+ var getMedia = (media, preferAvatar) => media ? /* @__PURE__ */ jsx30(OptionMedia, { media, preferAvatar }) : void 0;
1112
1297
 
1113
1298
  // ../renderers/src/utils/listItem/getSupportingValues.ts
1114
1299
  var getSupportingValues = (supportingValues) => {
@@ -1116,18 +1301,18 @@ var getSupportingValues = (supportingValues) => {
1116
1301
  };
1117
1302
 
1118
1303
  // ../renderers/src/CheckboxInputRenderer.tsx
1119
- import { jsx as jsx27 } from "react/jsx-runtime";
1304
+ import { jsx as jsx31 } from "react/jsx-runtime";
1120
1305
  var CheckboxInputRenderer = {
1121
1306
  canRenderType: "input-checkbox",
1122
1307
  render: (props) => {
1123
1308
  switch (props.control) {
1124
1309
  case "switch-item":
1125
- return /* @__PURE__ */ jsx27(SwitchItemComponent, __spreadValues({}, props));
1310
+ return /* @__PURE__ */ jsx31(SwitchItemComponent, __spreadValues({}, props));
1126
1311
  case "checkbox-item":
1127
- return /* @__PURE__ */ jsx27(CheckboxItemComponent, __spreadValues({}, props));
1312
+ return /* @__PURE__ */ jsx31(CheckboxItemComponent, __spreadValues({}, props));
1128
1313
  case "checkbox":
1129
1314
  default:
1130
- return /* @__PURE__ */ jsx27(CheckboxComponent, __spreadValues({}, props));
1315
+ return /* @__PURE__ */ jsx31(CheckboxComponent, __spreadValues({}, props));
1131
1316
  }
1132
1317
  }
1133
1318
  };
@@ -1152,7 +1337,7 @@ var CheckboxComponent = (props) => {
1152
1337
  "value"
1153
1338
  ]);
1154
1339
  const checkboxProps = __spreadProps(__spreadValues({}, rest), { label: title, secondary: description, checked: value });
1155
- return /* @__PURE__ */ jsx27(
1340
+ return /* @__PURE__ */ jsx31(
1156
1341
  FieldInput_default,
1157
1342
  {
1158
1343
  id,
@@ -1163,7 +1348,7 @@ var CheckboxComponent = (props) => {
1163
1348
  inlineAlert: rest.inlineAlert,
1164
1349
  loadingState: rest.fieldLoadingState,
1165
1350
  features: rest.features,
1166
- children: /* @__PURE__ */ jsx27(Checkbox, __spreadValues({ id }, checkboxProps))
1351
+ children: /* @__PURE__ */ jsx31(Checkbox, __spreadValues({ id }, checkboxProps))
1167
1352
  }
1168
1353
  );
1169
1354
  };
@@ -1182,7 +1367,7 @@ var CheckboxItemComponent = (props) => {
1182
1367
  onChange
1183
1368
  } = props;
1184
1369
  const { ref } = useScrollToError(validationState, features);
1185
- return /* @__PURE__ */ jsx27("div", { ref, children: /* @__PURE__ */ jsx27(
1370
+ return /* @__PURE__ */ jsx31("div", { ref, children: /* @__PURE__ */ jsx31(
1186
1371
  ListItem3,
1187
1372
  __spreadValues({
1188
1373
  title,
@@ -1191,7 +1376,7 @@ var CheckboxItemComponent = (props) => {
1191
1376
  media: getMedia(media, false),
1192
1377
  disabled,
1193
1378
  prompt: getInlineAlertOrValidation(validationState, inlineAlert),
1194
- control: /* @__PURE__ */ jsx27(ListItem3.Checkbox, { checked: value, onChange: () => onChange(!value) })
1379
+ control: /* @__PURE__ */ jsx31(ListItem3.Checkbox, { checked: value, onChange: () => onChange(!value) })
1195
1380
  }, getSupportingValues(supportingValues))
1196
1381
  ) });
1197
1382
  };
@@ -1210,7 +1395,7 @@ var SwitchItemComponent = (props) => {
1210
1395
  onChange
1211
1396
  } = props;
1212
1397
  const { ref } = useScrollToError(validationState, features);
1213
- return /* @__PURE__ */ jsx27("div", { ref, children: /* @__PURE__ */ jsx27(
1398
+ return /* @__PURE__ */ jsx31("div", { ref, children: /* @__PURE__ */ jsx31(
1214
1399
  ListItem3,
1215
1400
  __spreadValues({
1216
1401
  title,
@@ -1219,13 +1404,13 @@ var SwitchItemComponent = (props) => {
1219
1404
  media: getMedia(media, false),
1220
1405
  disabled,
1221
1406
  prompt: getInlineAlertOrValidation(validationState, inlineAlert),
1222
- control: /* @__PURE__ */ jsx27(ListItem3.Switch, { checked: value, onClick: () => onChange(!value) })
1407
+ control: /* @__PURE__ */ jsx31(ListItem3.Switch, { checked: value, onClick: () => onChange(!value) })
1223
1408
  }, getSupportingValues(supportingValues))
1224
1409
  ) });
1225
1410
  };
1226
1411
  var getInlineAlertOrValidation = (validationState, inlineAlert) => {
1227
1412
  if ((validationState == null ? void 0 : validationState.status) === "invalid") {
1228
- return /* @__PURE__ */ jsx27(ListItem3.Prompt, { sentiment: "negative", children: validationState.message });
1413
+ return /* @__PURE__ */ jsx31(ListItem3.Prompt, { sentiment: "negative", children: validationState.message });
1229
1414
  }
1230
1415
  return getInlineAlert(inlineAlert);
1231
1416
  };
@@ -1234,6 +1419,26 @@ var CheckboxInputRenderer_default = CheckboxInputRenderer;
1234
1419
  // ../renderers/src/CollectionRenderer/CollectionRenderer.tsx
1235
1420
  import { InlinePrompt, Link as DSLink } from "@transferwise/components";
1236
1421
 
1422
+ // ../renderers/src/messages/generic-error.messages.ts
1423
+ import { defineMessages as defineMessages3 } from "react-intl";
1424
+ var generic_error_messages_default = defineMessages3({
1425
+ genericErrorRetryHint: {
1426
+ id: "df.wise.PersistAsyncSchema.genericError",
1427
+ defaultMessage: "Something went wrong, please try again.",
1428
+ description: "Generic error message for persist async schema"
1429
+ },
1430
+ genericError: {
1431
+ id: "df.wise.ErrorBoundary.errorAlert",
1432
+ defaultMessage: "Something went wrong.",
1433
+ description: "Generic error message for when something has gone wrong."
1434
+ },
1435
+ retry: {
1436
+ id: "df.wise.ErrorBoundary.retry",
1437
+ defaultMessage: "Retry",
1438
+ description: "Usually this follows the generic error and contains a link."
1439
+ }
1440
+ });
1441
+
1237
1442
  // ../../node_modules/.pnpm/@tanstack+react-virtual@3.13.24_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@tanstack/react-virtual/dist/esm/index.js
1238
1443
  import * as React from "react";
1239
1444
  import { flushSync } from "react-dom";
@@ -2203,12 +2408,12 @@ import { useRef as useRef3, useEffect as useEffect7, useLayoutEffect as useLayou
2203
2408
 
2204
2409
  // ../renderers/src/step/StepFooter.tsx
2205
2410
  import { Button as Button3 } from "@transferwise/components";
2206
- import { useEffect as useEffect6, useRef as useRef2, useState as useState6 } from "react";
2411
+ import { useEffect as useEffect6, useRef as useRef2, useState as useState7 } from "react";
2207
2412
  import { useIntl as useIntl3 } from "react-intl";
2208
2413
 
2209
2414
  // ../renderers/src/messages/step.messages.ts
2210
- import { defineMessages as defineMessages3 } from "react-intl";
2211
- var step_messages_default = defineMessages3({
2415
+ import { defineMessages as defineMessages4 } from "react-intl";
2416
+ var step_messages_default = defineMessages4({
2212
2417
  scrollToBottom: {
2213
2418
  id: "df.wise.step.scrollToBottom",
2214
2419
  defaultMessage: "Scroll to bottom",
@@ -2217,23 +2422,23 @@ var step_messages_default = defineMessages3({
2217
2422
  });
2218
2423
 
2219
2424
  // ../renderers/src/step/StepFooter.tsx
2220
- import { Fragment as Fragment2, jsx as jsx28, jsxs as jsxs5 } from "react/jsx-runtime";
2425
+ import { Fragment as Fragment2, jsx as jsx32, jsxs as jsxs5 } from "react/jsx-runtime";
2221
2426
  var SCROLL_TO_BOTTOM = "scroll-to-bottom";
2222
2427
  var StepFooter = ({ footer, tags }) => {
2223
2428
  if (tags == null ? void 0 : tags.includes(SCROLL_TO_BOTTOM)) {
2224
- return /* @__PURE__ */ jsx28(FooterWithScrollButton, { footer });
2429
+ return /* @__PURE__ */ jsx32(FooterWithScrollButton, { footer });
2225
2430
  }
2226
- return /* @__PURE__ */ jsx28(DefaultFooter, { footer });
2431
+ return /* @__PURE__ */ jsx32(DefaultFooter, { footer });
2227
2432
  };
2228
2433
  var DefaultFooter = ({ footer }) => {
2229
2434
  const hasFooter = footer && Array.isArray(footer) && footer.length > 0;
2230
- return hasFooter ? /* @__PURE__ */ jsx28("div", { className: "df-step-fixed__footer", children: footer }) : void 0;
2435
+ return hasFooter ? /* @__PURE__ */ jsx32("div", { className: "df-step-fixed__footer", children: footer }) : void 0;
2231
2436
  };
2232
2437
  var FooterWithScrollButton = ({ footer }) => {
2233
2438
  const { formatMessage } = useIntl3();
2234
2439
  const endOfLayoutRef = useRef2(null);
2235
2440
  const isElementVisible = useIsElementVisible(endOfLayoutRef);
2236
- const scrollButton = /* @__PURE__ */ jsx28(
2441
+ const scrollButton = /* @__PURE__ */ jsx32(
2237
2442
  Button3,
2238
2443
  {
2239
2444
  className: "m-b-1",
@@ -2249,10 +2454,10 @@ var FooterWithScrollButton = ({ footer }) => {
2249
2454
  );
2250
2455
  const hasStepFooterContent = footer && Array.isArray(footer) && footer.length > 0;
2251
2456
  if (isElementVisible && !hasStepFooterContent) {
2252
- return /* @__PURE__ */ jsx28("div", { ref: endOfLayoutRef, "aria-hidden": "true" });
2457
+ return /* @__PURE__ */ jsx32("div", { ref: endOfLayoutRef, "aria-hidden": "true" });
2253
2458
  }
2254
2459
  return /* @__PURE__ */ jsxs5(Fragment2, { children: [
2255
- /* @__PURE__ */ jsx28("div", { ref: endOfLayoutRef, "aria-hidden": "true" }),
2460
+ /* @__PURE__ */ jsx32("div", { ref: endOfLayoutRef, "aria-hidden": "true" }),
2256
2461
  /* @__PURE__ */ jsxs5("div", { className: "df-step-fixed__footer", children: [
2257
2462
  !isElementVisible && scrollButton,
2258
2463
  footer
@@ -2260,7 +2465,7 @@ var FooterWithScrollButton = ({ footer }) => {
2260
2465
  ] });
2261
2466
  };
2262
2467
  var useIsElementVisible = (elementRef) => {
2263
- const [isVisible, setIsVisible] = useState6(false);
2468
+ const [isVisible, setIsVisible] = useState7(false);
2264
2469
  useEffect6(() => {
2265
2470
  const element = elementRef.current;
2266
2471
  if (!element) return;
@@ -2274,17 +2479,30 @@ var useIsElementVisible = (elementRef) => {
2274
2479
  };
2275
2480
 
2276
2481
  // ../renderers/src/CollectionRenderer/components/ContentComponent.tsx
2277
- import { jsx as jsx29, jsxs as jsxs6 } from "react/jsx-runtime";
2482
+ import { useIntl as useIntl4 } from "react-intl";
2483
+
2484
+ // ../renderers/src/messages/collection.messages.ts
2485
+ import { defineMessages as defineMessages5 } from "react-intl";
2486
+ var collection_messages_default = defineMessages5({
2487
+ loadMoreButton: {
2488
+ id: "df.wise.Collection.loadMoreMessage",
2489
+ defaultMessage: "Load more",
2490
+ description: "A message shown on a button to load more items in a list."
2491
+ }
2492
+ });
2493
+
2494
+ // ../renderers/src/CollectionRenderer/components/ContentComponent.tsx
2495
+ import { jsx as jsx33, jsxs as jsxs6 } from "react/jsx-runtime";
2278
2496
  var ContentComponent = (props) => {
2279
2497
  const { state, status, SectionHeader, Item } = props;
2280
2498
  const endOfContentRef = useRef3(null);
2281
2499
  const isBottomVisible = useIsElementVisible(endOfContentRef);
2282
2500
  useEffect7(() => {
2283
- var _a;
2284
- if (isBottomVisible && status.type === "idle" && status.loadMore) {
2285
- (_a = status.loadMore) == null ? void 0 : _a.call(status);
2501
+ const shouldAutoLoad = isBottomVisible && status.type === "idle" && !state.afterSections;
2502
+ if (shouldAutoLoad && status.loadMore) {
2503
+ status.loadMore();
2286
2504
  }
2287
- }, [isBottomVisible, status]);
2505
+ }, [isBottomVisible, state.afterSections, status]);
2288
2506
  const stateCount = state.sections.reduce(
2289
2507
  (total, section) => section.items.length + total + (section.title ? 1 : 0),
2290
2508
  0
@@ -2295,7 +2513,8 @@ var ContentComponent = (props) => {
2295
2513
  type: "header",
2296
2514
  title: section.title,
2297
2515
  items: section.items,
2298
- id: section.id
2516
+ id: section.id,
2517
+ callToAction: section.callToAction
2299
2518
  }
2300
2519
  ] : [],
2301
2520
  ...section.items.map((item) => ({
@@ -2318,7 +2537,7 @@ var ContentComponent = (props) => {
2318
2537
  });
2319
2538
  return /* @__PURE__ */ jsxs6("div", { ref: listRef, children: [
2320
2539
  state.beforeSections,
2321
- /* @__PURE__ */ jsx29(
2540
+ /* @__PURE__ */ jsx33(
2322
2541
  "div",
2323
2542
  {
2324
2543
  style: {
@@ -2331,7 +2550,7 @@ var ContentComponent = (props) => {
2331
2550
  if (!i) {
2332
2551
  return null;
2333
2552
  }
2334
- return /* @__PURE__ */ jsx29(
2553
+ return /* @__PURE__ */ jsx33(
2335
2554
  "div",
2336
2555
  {
2337
2556
  ref: virtualizer.measureElement,
@@ -2343,29 +2562,48 @@ var ContentComponent = (props) => {
2343
2562
  width: "100%",
2344
2563
  transform: `translateY(${item.start - virtualizer.options.scrollMargin}px)`
2345
2564
  },
2346
- children: i.type === "header" ? /* @__PURE__ */ jsx29(SectionHeader, __spreadValues({}, i)) : /* @__PURE__ */ jsx29(Item, __spreadValues({}, i.item))
2565
+ children: i.type === "header" ? /* @__PURE__ */ jsx33(SectionHeader, __spreadValues({}, i)) : /* @__PURE__ */ jsx33(Item, __spreadValues({}, i.item))
2347
2566
  },
2348
2567
  item.key
2349
2568
  );
2350
2569
  })
2351
2570
  }
2352
2571
  ),
2353
- /* @__PURE__ */ jsxs6("div", { ref: endOfContentRef, className: "d-flex m-x-auto m-y-2", children: [
2354
- status.type === "idle" && status.loadMore || status.type === "loading" && status.reason === "pagination" ? /* @__PURE__ */ jsx29(ProcessIndicator, { size: "xs" }) : null,
2355
- status.type === "error" && status.reason === "pagination" ? /* @__PURE__ */ jsx29("div", { className: "d-flex m-x-auto", children: /* @__PURE__ */ jsx29(Button4, { v2: true, size: "sm", priority: "secondary-neutral", onClick: status.retry, children: "Load more" }) }) : null
2356
- ] }),
2572
+ /* @__PURE__ */ jsx33("div", { ref: endOfContentRef, className: "d-flex m-x-auto m-y-2", children: /* @__PURE__ */ jsx33(PaginationComponent, { status, state }) }),
2357
2573
  state.afterSections
2358
2574
  ] });
2359
2575
  };
2576
+ var PaginationComponent = ({
2577
+ status,
2578
+ state
2579
+ }) => {
2580
+ const isPaginationError = status.type === "error" && status.reason === "pagination";
2581
+ const isPaginationLoading = status.type === "loading" && status.reason === "pagination";
2582
+ const loadMore = status.type === "idle" ? status.loadMore : void 0;
2583
+ if (!isPaginationError && !isPaginationLoading && !loadMore) {
2584
+ return null;
2585
+ }
2586
+ if (isPaginationError) {
2587
+ return /* @__PURE__ */ jsx33(LoadMoreButton, { onClick: status.retry });
2588
+ }
2589
+ if (state.afterSections && loadMore) {
2590
+ return /* @__PURE__ */ jsx33(LoadMoreButton, { onClick: loadMore });
2591
+ }
2592
+ return /* @__PURE__ */ jsx33(ProcessIndicator, { size: "xs", "data-testid": "collection-pagination-loader" });
2593
+ };
2594
+ var LoadMoreButton = ({ onClick }) => {
2595
+ const { formatMessage } = useIntl4();
2596
+ return /* @__PURE__ */ jsx33("div", { className: "d-flex m-x-auto", children: /* @__PURE__ */ jsx33(Button4, { v2: true, size: "sm", priority: "secondary-neutral", onClick, children: formatMessage(collection_messages_default.loadMoreButton) }) });
2597
+ };
2360
2598
 
2361
2599
  // ../renderers/src/CollectionRenderer/components/FilterComponent.tsx
2362
2600
  import { Chips } from "@transferwise/components";
2363
- import { jsx as jsx30 } from "react/jsx-runtime";
2601
+ import { jsx as jsx34 } from "react/jsx-runtime";
2364
2602
  var FiltersComponent = ({ state }) => {
2365
2603
  const { filters } = state;
2366
- return /* @__PURE__ */ jsx30("div", { className: "df-filters-container", children: filters.map((filter) => {
2604
+ return /* @__PURE__ */ jsx34("div", { className: "df-filters-container", children: filters.map((filter) => {
2367
2605
  var _a;
2368
- return /* @__PURE__ */ jsx30(FilterComponent, __spreadValues({}, filter), JSON.stringify((_a = filter.options) == null ? void 0 : _a.map((o) => o.value)));
2606
+ return /* @__PURE__ */ jsx34(FilterComponent, __spreadValues({}, filter), JSON.stringify((_a = filter.options) == null ? void 0 : _a.map((o) => o.value)));
2369
2607
  }) });
2370
2608
  };
2371
2609
  var FilterComponent = (filter) => {
@@ -2373,7 +2611,7 @@ var FilterComponent = (filter) => {
2373
2611
  if (!options) {
2374
2612
  return null;
2375
2613
  }
2376
- return /* @__PURE__ */ jsx30(
2614
+ return /* @__PURE__ */ jsx34(
2377
2615
  Chips,
2378
2616
  {
2379
2617
  className: "m-b-1",
@@ -2403,7 +2641,7 @@ import { ListItem as ListItem6 } from "@transferwise/components";
2403
2641
 
2404
2642
  // ../renderers/src/utils/listItem/getAdditionalInfo.tsx
2405
2643
  import { ListItem as ListItem4 } from "@transferwise/components";
2406
- import { jsx as jsx31 } from "react/jsx-runtime";
2644
+ import { jsx as jsx35 } from "react/jsx-runtime";
2407
2645
  var getAdditionalInfo = (additionalInfo) => {
2408
2646
  var _a, _b;
2409
2647
  if (!additionalInfo) {
@@ -2411,7 +2649,7 @@ var getAdditionalInfo = (additionalInfo) => {
2411
2649
  }
2412
2650
  const { href, text, onClick } = additionalInfo;
2413
2651
  if (href || onClick) {
2414
- return /* @__PURE__ */ jsx31(
2652
+ return /* @__PURE__ */ jsx35(
2415
2653
  ListItem4.AdditionalInfo,
2416
2654
  {
2417
2655
  action: __spreadValues({
@@ -2420,19 +2658,19 @@ var getAdditionalInfo = (additionalInfo) => {
2420
2658
  }
2421
2659
  );
2422
2660
  }
2423
- return /* @__PURE__ */ jsx31(ListItem4.AdditionalInfo, { children: additionalInfo == null ? void 0 : additionalInfo.text });
2661
+ return /* @__PURE__ */ jsx35(ListItem4.AdditionalInfo, { children: additionalInfo == null ? void 0 : additionalInfo.text });
2424
2662
  };
2425
2663
 
2426
2664
  // ../renderers/src/utils/listItem/getCTAControl.tsx
2427
2665
  import { ListItem as ListItem5 } from "@transferwise/components";
2428
- import { jsx as jsx32 } from "react/jsx-runtime";
2666
+ import { jsx as jsx36 } from "react/jsx-runtime";
2429
2667
  var getCTAControl = (callToAction, { ctaSecondary, fullyInteractive }) => {
2430
2668
  if (!callToAction) {
2431
2669
  return void 0;
2432
2670
  }
2433
2671
  const { accessibilityDescription, title, context } = callToAction;
2434
2672
  const { priority, sentiment } = getPriorityAndSentiment(ctaSecondary, context);
2435
- return /* @__PURE__ */ jsx32(
2673
+ return /* @__PURE__ */ jsx36(
2436
2674
  ListItem5.Button,
2437
2675
  __spreadProps(__spreadValues({}, callToAction.getAnchorProps()), {
2438
2676
  partiallyInteractive: !fullyInteractive,
@@ -2457,7 +2695,7 @@ var shouldUseAvatar = (control, tags) => {
2457
2695
  };
2458
2696
 
2459
2697
  // ../renderers/src/CollectionRenderer/components/ItemComponent.tsx
2460
- import { jsx as jsx33 } from "react/jsx-runtime";
2698
+ import { jsx as jsx37 } from "react/jsx-runtime";
2461
2699
  var ItemComponent = (props) => {
2462
2700
  var _a, _b;
2463
2701
  const {
@@ -2465,6 +2703,7 @@ var ItemComponent = (props) => {
2465
2703
  description,
2466
2704
  supportingValues,
2467
2705
  media,
2706
+ disabled,
2468
2707
  additionalInfo,
2469
2708
  inlineAlert,
2470
2709
  href,
@@ -2478,27 +2717,27 @@ var ItemComponent = (props) => {
2478
2717
  ctaSecondary: (_a = tags == null ? void 0 : tags.includes("cta-secondary")) != null ? _a : false,
2479
2718
  fullyInteractive: (_b = (tags == null ? void 0 : tags.includes("fully-interactive")) && (additionalInfo == null ? void 0 : additionalInfo.onClick) == null) != null ? _b : false
2480
2719
  };
2481
- return /* @__PURE__ */ jsx33(
2720
+ return /* @__PURE__ */ jsx37(
2482
2721
  ListItem6,
2483
2722
  {
2484
2723
  title,
2485
2724
  subtitle: description,
2725
+ disabled,
2486
2726
  valueTitle: supportingValues == null ? void 0 : supportingValues.value,
2487
2727
  valueSubtitle: supportingValues == null ? void 0 : supportingValues.subvalue,
2488
2728
  media: getMedia(media, shouldUseAvatar(control, parentTags)),
2489
2729
  prompt: getInlineAlert(inlineAlert),
2490
2730
  additionalInfo: getAdditionalInfo(additionalInfo),
2491
2731
  control: onClick || href ? getNavigationControl(onClick, href) : getCTAControl(callToAction, controlOptions)
2492
- },
2493
- title
2732
+ }
2494
2733
  );
2495
2734
  };
2496
2735
  var getNavigationControl = (onClick, href) => {
2497
2736
  if (href) {
2498
- return /* @__PURE__ */ jsx33(ListItem6.Navigation, { href });
2737
+ return /* @__PURE__ */ jsx37(ListItem6.Navigation, { href });
2499
2738
  }
2500
2739
  if (onClick) {
2501
- return /* @__PURE__ */ jsx33(ListItem6.Navigation, { onClick });
2740
+ return /* @__PURE__ */ jsx37(ListItem6.Navigation, { onClick });
2502
2741
  }
2503
2742
  return null;
2504
2743
  };
@@ -2506,13 +2745,13 @@ var getNavigationControl = (onClick, href) => {
2506
2745
  // ../renderers/src/CollectionRenderer/components/SearchComponent.tsx
2507
2746
  import { InputGroup, Input, ProcessIndicator as ProcessIndicator2 } from "@transferwise/components";
2508
2747
  import { Search } from "@transferwise/icons";
2509
- import { jsx as jsx34 } from "react/jsx-runtime";
2748
+ import { jsx as jsx38 } from "react/jsx-runtime";
2510
2749
  var SearchComponent = ({ state, status, features }) => {
2511
2750
  const { search } = state;
2512
2751
  if (!search) {
2513
2752
  return;
2514
2753
  }
2515
- return /* @__PURE__ */ jsx34(
2754
+ return /* @__PURE__ */ jsx38(
2516
2755
  FieldInput_default,
2517
2756
  {
2518
2757
  id: "search",
@@ -2521,12 +2760,12 @@ var SearchComponent = ({ state, status, features }) => {
2521
2760
  help: "",
2522
2761
  label: search.title,
2523
2762
  features,
2524
- children: /* @__PURE__ */ jsx34(
2763
+ children: /* @__PURE__ */ jsx38(
2525
2764
  InputGroup,
2526
2765
  {
2527
- addonStart: { content: /* @__PURE__ */ jsx34(Search, { size: 24 }) },
2528
- addonEnd: status.type === "loading" ? { content: /* @__PURE__ */ jsx34(ProcessIndicator2, { size: "xs" }) } : void 0,
2529
- children: /* @__PURE__ */ jsx34(
2766
+ addonStart: { content: /* @__PURE__ */ jsx38(Search, { size: 24 }) },
2767
+ addonEnd: status.type === "loading" ? { content: /* @__PURE__ */ jsx38(ProcessIndicator2, { size: "xs", "data-testid": "collection-search-loader" }) } : void 0,
2768
+ children: /* @__PURE__ */ jsx38(
2530
2769
  Input,
2531
2770
  {
2532
2771
  id: "search",
@@ -2547,14 +2786,14 @@ var SearchComponent = ({ state, status, features }) => {
2547
2786
  };
2548
2787
 
2549
2788
  // ../renderers/src/CollectionRenderer/components/SectionHeaderComponent.tsx
2550
- import { jsx as jsx35 } from "react/jsx-runtime";
2789
+ import { jsx as jsx39 } from "react/jsx-runtime";
2551
2790
  var SectionHeaderComponent = ({
2552
2791
  title,
2553
2792
  callToAction
2554
- }) => /* @__PURE__ */ jsx35(Header, { title, callToAction });
2793
+ }) => /* @__PURE__ */ jsx39(Header, { title, callToAction });
2555
2794
 
2556
2795
  // ../renderers/src/CollectionRenderer/createCollectionRenderer.tsx
2557
- import { jsx as jsx36 } from "react/jsx-runtime";
2796
+ import { jsx as jsx40 } from "react/jsx-runtime";
2558
2797
  var createCollectionRenderer = (canRender, components) => {
2559
2798
  const componentsWithDefaults = __spreadValues({
2560
2799
  Search: SearchComponent,
@@ -2568,23 +2807,28 @@ var createCollectionRenderer = (canRender, components) => {
2568
2807
  canRenderType: "collection",
2569
2808
  canRender,
2570
2809
  render: (props) => {
2571
- return /* @__PURE__ */ jsx36(CollectionRendererComponent, __spreadValues(__spreadValues({}, props), componentsWithDefaults));
2810
+ return /* @__PURE__ */ jsx40(CollectionRendererComponent, __spreadValues(__spreadValues({}, props), componentsWithDefaults));
2572
2811
  }
2573
2812
  };
2574
2813
  };
2575
2814
 
2576
2815
  // ../renderers/src/CollectionRenderer/CollectionRenderer.tsx
2577
- import { Fragment as Fragment3, jsx as jsx37, jsxs as jsxs7 } from "react/jsx-runtime";
2816
+ import { useIntl as useIntl5 } from "react-intl";
2817
+ import { Fragment as Fragment3, jsx as jsx41, jsxs as jsxs7 } from "react/jsx-runtime";
2578
2818
  var CollectionRendererComponent = (props) => {
2579
2819
  const { status, Search: Search4, Filters, Results } = props;
2580
2820
  return /* @__PURE__ */ jsxs7(Fragment3, { children: [
2581
- /* @__PURE__ */ jsx37(Search4, __spreadValues({}, props)),
2582
- /* @__PURE__ */ jsx37(Filters, __spreadValues({}, props)),
2583
- status.type === "idle" || status.type === "loading" ? /* @__PURE__ */ jsx37(Results, __spreadValues({}, props)) : void 0,
2584
- status.type === "error" && status.reason === "search" && /* @__PURE__ */ jsxs7(InlinePrompt, { width: "full", sentiment: "negative", children: [
2585
- "Something went wrong,\xA0",
2586
- /* @__PURE__ */ jsx37(DSLink, { onClick: status.retry, children: "click here to retry" })
2587
- ] })
2821
+ /* @__PURE__ */ jsx41(Search4, __spreadValues({}, props)),
2822
+ /* @__PURE__ */ jsx41(Filters, __spreadValues({}, props)),
2823
+ status.type === "error" && status.reason === "search" ? /* @__PURE__ */ jsx41(SearchError, { retry: status.retry }) : /* @__PURE__ */ jsx41(Results, __spreadValues({}, props))
2824
+ ] });
2825
+ };
2826
+ var SearchError = ({ retry }) => {
2827
+ const { formatMessage } = useIntl5();
2828
+ return /* @__PURE__ */ jsxs7(InlinePrompt, { width: "full", sentiment: "negative", children: [
2829
+ formatMessage(generic_error_messages_default.genericError),
2830
+ "\xA0",
2831
+ /* @__PURE__ */ jsx41(DSLink, { onClick: retry, children: formatMessage(generic_error_messages_default.retry) })
2588
2832
  ] });
2589
2833
  };
2590
2834
  var CollectionRenderer = createCollectionRenderer(() => true);
@@ -2594,11 +2838,11 @@ var CollectionRenderer_default = CollectionRenderer;
2594
2838
  var import_classnames3 = __toESM(require_classnames());
2595
2839
 
2596
2840
  // ../renderers/src/utils/useIsCollapsed.ts
2597
- import { useEffect as useEffect8, useState as useState7 } from "react";
2841
+ import { useEffect as useEffect8, useState as useState8 } from "react";
2598
2842
  var COLLAPSE_QUERY = "(max-width: 767.98px)";
2599
2843
  var supportsMatchMedia = () => typeof window !== "undefined" && !!window.matchMedia;
2600
2844
  var useIsCollapsed = () => {
2601
- const [collapsed, setCollapsed] = useState7(
2845
+ const [collapsed, setCollapsed] = useState8(
2602
2846
  () => supportsMatchMedia() && window.matchMedia(COLLAPSE_QUERY).matches
2603
2847
  );
2604
2848
  useEffect8(() => {
@@ -2614,7 +2858,7 @@ var useIsCollapsed = () => {
2614
2858
  };
2615
2859
 
2616
2860
  // ../renderers/src/ColumnsRenderer.tsx
2617
- import { jsx as jsx38, jsxs as jsxs8 } from "react/jsx-runtime";
2861
+ import { jsx as jsx42, jsxs as jsxs8 } from "react/jsx-runtime";
2618
2862
  var RIGHT_FIRST_STACKING = "right-first-stacking";
2619
2863
  var ColumnsRenderer = {
2620
2864
  canRenderType: "columns",
@@ -2630,8 +2874,8 @@ function ColumnsRendererComponent({
2630
2874
  var _a;
2631
2875
  const isCollapsed = useIsCollapsed();
2632
2876
  const reverse = isCollapsed && ((_a = tags == null ? void 0 : tags.includes(RIGHT_FIRST_STACKING)) != null ? _a : false);
2633
- const startColumn = /* @__PURE__ */ jsx38("div", { className: "df-columns-renderer-column", children: startChildren });
2634
- const endColumn = /* @__PURE__ */ jsx38("div", { className: "df-columns-renderer-column", children: endChildren });
2877
+ const startColumn = /* @__PURE__ */ jsx42("div", { className: "df-columns-renderer-column", children: startChildren });
2878
+ const endColumn = /* @__PURE__ */ jsx42("div", { className: "df-columns-renderer-column", children: endChildren });
2635
2879
  return /* @__PURE__ */ jsxs8(
2636
2880
  "div",
2637
2881
  {
@@ -2676,7 +2920,7 @@ var dateToDateString = (date) => {
2676
2920
  };
2677
2921
 
2678
2922
  // ../renderers/src/components/VariableDateInput.tsx
2679
- import { jsx as jsx39 } from "react/jsx-runtime";
2923
+ import { jsx as jsx43 } from "react/jsx-runtime";
2680
2924
  function VariableDateInput({
2681
2925
  control,
2682
2926
  inputProps
@@ -2692,7 +2936,7 @@ function VariableDateInput({
2692
2936
  onFocus
2693
2937
  } = inputProps;
2694
2938
  if (control === "date-lookup") {
2695
- return /* @__PURE__ */ jsx39(
2939
+ return /* @__PURE__ */ jsx43(
2696
2940
  DateLookup,
2697
2941
  {
2698
2942
  value: dateStringToDateOrNull(inputProps.value),
@@ -2708,7 +2952,7 @@ function VariableDateInput({
2708
2952
  }
2709
2953
  );
2710
2954
  }
2711
- return /* @__PURE__ */ jsx39(
2955
+ return /* @__PURE__ */ jsx43(
2712
2956
  DateInput,
2713
2957
  __spreadProps(__spreadValues({}, inputProps), {
2714
2958
  dayAutoComplete: getAutocompleteString(autoComplete, "day"),
@@ -2725,7 +2969,7 @@ var getAutocompleteString = (value, suffix) => {
2725
2969
  var VariableDateInput_default = VariableDateInput;
2726
2970
 
2727
2971
  // ../renderers/src/DateInputRenderer.tsx
2728
- import { jsx as jsx40 } from "react/jsx-runtime";
2972
+ import { jsx as jsx44 } from "react/jsx-runtime";
2729
2973
  var DateInputRenderer = {
2730
2974
  canRenderType: "input-date",
2731
2975
  render: (props) => {
@@ -2750,7 +2994,7 @@ var DateInputRenderer = {
2750
2994
  ]);
2751
2995
  const value = initialValue != null ? initialValue : "";
2752
2996
  const inputProps = __spreadProps(__spreadValues({}, rest), { value, id });
2753
- return /* @__PURE__ */ jsx40(
2997
+ return /* @__PURE__ */ jsx44(
2754
2998
  FieldInput_default,
2755
2999
  {
2756
3000
  id,
@@ -2761,7 +3005,7 @@ var DateInputRenderer = {
2761
3005
  loadingState: props.fieldLoadingState,
2762
3006
  help,
2763
3007
  features: props.features,
2764
- children: /* @__PURE__ */ jsx40(VariableDateInput_default, { control, inputProps })
3008
+ children: /* @__PURE__ */ jsx44(VariableDateInput_default, { control, inputProps })
2765
3009
  }
2766
3010
  );
2767
3011
  }
@@ -2773,12 +3017,12 @@ import { ListItem as ListItem7 } from "@transferwise/components";
2773
3017
 
2774
3018
  // ../renderers/src/DecisionRenderer/DecisionWrapper.tsx
2775
3019
  import { Header as Header3, SearchInput } from "@transferwise/components";
2776
- import { useState as useState8 } from "react";
2777
- import { useIntl as useIntl5 } from "react-intl";
3020
+ import { useState as useState9 } from "react";
3021
+ import { useIntl as useIntl7 } from "react-intl";
2778
3022
 
2779
3023
  // ../renderers/src/messages/filter.messages.ts
2780
- import { defineMessages as defineMessages4 } from "react-intl";
2781
- var filter_messages_default = defineMessages4({
3024
+ import { defineMessages as defineMessages6 } from "react-intl";
3025
+ var filter_messages_default = defineMessages6({
2782
3026
  placeholder: {
2783
3027
  id: "df.wise.filter.placeholder",
2784
3028
  defaultMessage: "Start typing to search",
@@ -2845,11 +3089,11 @@ var normalizeAndRemoveAccents = (text) => text.trim().toLowerCase().normalize("N
2845
3089
 
2846
3090
  // ../renderers/src/DecisionRenderer/GroupedDecisionList.tsx
2847
3091
  import { Header as Header2, Section } from "@transferwise/components";
2848
- import { useIntl as useIntl4 } from "react-intl";
3092
+ import { useIntl as useIntl6 } from "react-intl";
2849
3093
 
2850
3094
  // ../renderers/src/messages/group.messages.ts
2851
- import { defineMessages as defineMessages5 } from "react-intl";
2852
- var group_messages_default = defineMessages5({
3095
+ import { defineMessages as defineMessages7 } from "react-intl";
3096
+ var group_messages_default = defineMessages7({
2853
3097
  all: {
2854
3098
  id: "df.wise.group.all",
2855
3099
  defaultMessage: "All",
@@ -2883,18 +3127,18 @@ var getGroupsFromTags = (knownTags, items) => {
2883
3127
  };
2884
3128
 
2885
3129
  // ../renderers/src/DecisionRenderer/GroupedDecisionList.tsx
2886
- import { Fragment as Fragment4, jsx as jsx41, jsxs as jsxs9 } from "react/jsx-runtime";
3130
+ import { Fragment as Fragment4, jsx as jsx45, jsxs as jsxs9 } from "react/jsx-runtime";
2887
3131
  var groupingTags = Object.keys(group_messages_default).filter((key) => key !== "all");
2888
3132
  var isGroupedDecision = (options) => {
2889
3133
  return getGroupsFromTags(groupingTags, options).length > 0;
2890
3134
  };
2891
3135
  var GroupedDecisionList = (_a) => {
2892
3136
  var _b = _a, { renderDecisionList: renderDecisionList2 } = _b, rest = __objRest(_b, ["renderDecisionList"]);
2893
- const { formatMessage } = useIntl4();
3137
+ const { formatMessage } = useIntl6();
2894
3138
  const { options } = rest;
2895
3139
  const itemsByTag = [...getGroupsFromTags(groupingTags, options), { tag: "all", items: options }];
2896
- return /* @__PURE__ */ jsx41(Fragment4, { children: itemsByTag.map(({ tag, items }) => /* @__PURE__ */ jsxs9(Section, { children: [
2897
- /* @__PURE__ */ jsx41(
3140
+ return /* @__PURE__ */ jsx45(Fragment4, { children: itemsByTag.map(({ tag, items }) => /* @__PURE__ */ jsxs9(Section, { children: [
3141
+ /* @__PURE__ */ jsx45(
2898
3142
  Header2,
2899
3143
  {
2900
3144
  as: "h2",
@@ -2906,26 +3150,26 @@ var GroupedDecisionList = (_a) => {
2906
3150
  };
2907
3151
 
2908
3152
  // ../renderers/src/DecisionRenderer/DecisionWrapper.tsx
2909
- import { Fragment as Fragment5, jsx as jsx42, jsxs as jsxs10 } from "react/jsx-runtime";
3153
+ import { Fragment as Fragment5, jsx as jsx46, jsxs as jsxs10 } from "react/jsx-runtime";
2910
3154
  var DecisionWrapper = (props) => {
2911
3155
  const { title, control, margin } = props;
2912
3156
  return /* @__PURE__ */ jsxs10("div", { className: getMargin(margin), children: [
2913
- title && /* @__PURE__ */ jsx42(Header3, { as: "h2", title }),
2914
- control === "filtered" ? /* @__PURE__ */ jsx42(FilteredDecisionList, __spreadValues({}, props)) : /* @__PURE__ */ jsx42(UnfilteredDecisionList, __spreadValues({}, props))
3157
+ title && /* @__PURE__ */ jsx46(Header3, { as: "h2", title }),
3158
+ control === "filtered" ? /* @__PURE__ */ jsx46(FilteredDecisionList, __spreadValues({}, props)) : /* @__PURE__ */ jsx46(UnfilteredDecisionList, __spreadValues({}, props))
2915
3159
  ] });
2916
3160
  };
2917
3161
  var UnfilteredDecisionList = (_a) => {
2918
3162
  var _b = _a, { renderDecisionList: renderDecisionList2 } = _b, rest = __objRest(_b, ["renderDecisionList"]);
2919
- return isGroupedDecision(rest.options) ? /* @__PURE__ */ jsx42(GroupedDecisionList, __spreadProps(__spreadValues({}, rest), { renderDecisionList: renderDecisionList2 })) : renderDecisionList2(rest);
3163
+ return isGroupedDecision(rest.options) ? /* @__PURE__ */ jsx46(GroupedDecisionList, __spreadProps(__spreadValues({}, rest), { renderDecisionList: renderDecisionList2 })) : renderDecisionList2(rest);
2920
3164
  };
2921
3165
  var FilteredDecisionList = (props) => {
2922
- const { formatMessage } = useIntl5();
2923
- const [query, setQuery] = useState8("");
3166
+ const { formatMessage } = useIntl7();
3167
+ const [query, setQuery] = useState9("");
2924
3168
  const { control, options, renderDecisionList: renderDecisionList2 } = props;
2925
3169
  const filteredOptions = (query == null ? void 0 : query.length) > 0 ? filterAndSortItems(options, query) : options;
2926
3170
  const isGrouped = isGroupedDecision(options);
2927
3171
  return /* @__PURE__ */ jsxs10(Fragment5, { children: [
2928
- /* @__PURE__ */ jsx42(
3172
+ /* @__PURE__ */ jsx46(
2929
3173
  SearchInput,
2930
3174
  {
2931
3175
  placeholder: formatMessage(filter_messages_default.placeholder),
@@ -2937,25 +3181,25 @@ var FilteredDecisionList = (props) => {
2937
3181
  }
2938
3182
  }
2939
3183
  ),
2940
- isGrouped && query.length === 0 ? /* @__PURE__ */ jsx42(GroupedDecisionList, __spreadValues({}, props)) : /* @__PURE__ */ jsxs10(Fragment5, { children: [
2941
- query.length > 0 && /* @__PURE__ */ jsx42(Header3, { as: "h2", title: formatMessage(filter_messages_default.results), className: "m-t-4" }),
3184
+ isGrouped && query.length === 0 ? /* @__PURE__ */ jsx46(GroupedDecisionList, __spreadValues({}, props)) : /* @__PURE__ */ jsxs10(Fragment5, { children: [
3185
+ query.length > 0 && /* @__PURE__ */ jsx46(Header3, { as: "h2", title: formatMessage(filter_messages_default.results), className: "m-t-4" }),
2942
3186
  filteredOptions.length > 0 ? renderDecisionList2({
2943
3187
  control,
2944
3188
  className: query.length === 0 ? "m-t-3" : "",
2945
3189
  options: filteredOptions
2946
- }) : /* @__PURE__ */ jsx42("p", { children: formatMessage(filter_messages_default.noResults) })
3190
+ }) : /* @__PURE__ */ jsx46("p", { children: formatMessage(filter_messages_default.noResults) })
2947
3191
  ] })
2948
3192
  ] });
2949
3193
  };
2950
3194
 
2951
3195
  // ../renderers/src/DecisionRenderer/DecisionRenderer.tsx
2952
- import { Fragment as Fragment6, jsx as jsx43 } from "react/jsx-runtime";
3196
+ import { Fragment as Fragment6, jsx as jsx47 } from "react/jsx-runtime";
2953
3197
  var DecisionRenderer = {
2954
3198
  canRenderType: "decision",
2955
- render: (props) => /* @__PURE__ */ jsx43(DecisionWrapper, __spreadProps(__spreadValues({}, props), { renderDecisionList }))
3199
+ render: (props) => /* @__PURE__ */ jsx47(DecisionWrapper, __spreadProps(__spreadValues({}, props), { renderDecisionList }))
2956
3200
  };
2957
3201
  var renderDecisionList = ({ options, control }) => {
2958
- return /* @__PURE__ */ jsx43(Fragment6, { children: options.map((_a) => {
3202
+ return /* @__PURE__ */ jsx47(Fragment6, { children: options.map((_a) => {
2959
3203
  var _b = _a, { onClick } = _b, rest = __objRest(_b, ["onClick"]);
2960
3204
  const {
2961
3205
  description,
@@ -2968,7 +3212,7 @@ var renderDecisionList = ({ options, control }) => {
2968
3212
  supportingValues,
2969
3213
  tags
2970
3214
  } = rest;
2971
- return /* @__PURE__ */ jsx43(
3215
+ return /* @__PURE__ */ jsx47(
2972
3216
  ListItem7,
2973
3217
  {
2974
3218
  title: itemTitle,
@@ -2980,7 +3224,7 @@ var renderDecisionList = ({ options, control }) => {
2980
3224
  media: getMedia(media, shouldUseAvatar(control, tags)),
2981
3225
  prompt: getInlineAlert(inlineAlert),
2982
3226
  additionalInfo: additionalText ? getAdditionalInfo({ text: additionalText }) : void 0,
2983
- control: /* @__PURE__ */ jsx43(ListItem7.Navigation, __spreadValues({}, getAnchorProps()))
3227
+ control: /* @__PURE__ */ jsx47(ListItem7.Navigation, __spreadValues({}, getAnchorProps()))
2984
3228
  },
2985
3229
  JSON.stringify(rest)
2986
3230
  );
@@ -2990,7 +3234,7 @@ var DecisionRenderer_default = DecisionRenderer;
2990
3234
 
2991
3235
  // ../renderers/src/DividerRenderer.tsx
2992
3236
  import { Divider } from "@transferwise/components";
2993
- import { jsx as jsx44 } from "react/jsx-runtime";
3237
+ import { jsx as jsx48 } from "react/jsx-runtime";
2994
3238
  var mapControlToLevel = (control) => {
2995
3239
  switch (control) {
2996
3240
  case "section":
@@ -3003,7 +3247,7 @@ var mapControlToLevel = (control) => {
3003
3247
  };
3004
3248
  var DividerRenderer = {
3005
3249
  canRenderType: "divider",
3006
- render: ({ margin, control }) => /* @__PURE__ */ jsx44(Divider, { className: `m-t-0 d-block ${getMargin(margin)}`, level: mapControlToLevel(control) })
3250
+ render: ({ margin, control }) => /* @__PURE__ */ jsx48(Divider, { className: `m-t-0 d-block ${getMargin(margin)}`, level: mapControlToLevel(control) })
3007
3251
  };
3008
3252
  var DividerRenderer_default = DividerRenderer;
3009
3253
 
@@ -3011,8 +3255,8 @@ var DividerRenderer_default = DividerRenderer;
3011
3255
  import { Button as Button5, Markdown as Markdown3, Modal } from "@transferwise/components";
3012
3256
 
3013
3257
  // ../renderers/src/messages/external-confirmation.messages.ts
3014
- import { defineMessages as defineMessages6 } from "react-intl";
3015
- var external_confirmation_messages_default = defineMessages6({
3258
+ import { defineMessages as defineMessages8 } from "react-intl";
3259
+ var external_confirmation_messages_default = defineMessages8({
3016
3260
  title: {
3017
3261
  id: "df.wise.ExternalConfirmation.title",
3018
3262
  defaultMessage: "Please confirm",
@@ -3036,9 +3280,9 @@ var external_confirmation_messages_default = defineMessages6({
3036
3280
  });
3037
3281
 
3038
3282
  // ../renderers/src/ExternalConfirmationRenderer.tsx
3039
- import { useIntl as useIntl6 } from "react-intl";
3283
+ import { useIntl as useIntl8 } from "react-intl";
3040
3284
  import { useEffect as useEffect9 } from "react";
3041
- import { Fragment as Fragment7, jsx as jsx45, jsxs as jsxs11 } from "react/jsx-runtime";
3285
+ import { Fragment as Fragment7, jsx as jsx49, jsxs as jsxs11 } from "react/jsx-runtime";
3042
3286
  var ExternalConfirmationRenderer = {
3043
3287
  canRenderType: "external-confirmation",
3044
3288
  render: ExternalConfirmationRendererComponent
@@ -3049,19 +3293,19 @@ function ExternalConfirmationRendererComponent({
3049
3293
  open,
3050
3294
  onCancel
3051
3295
  }) {
3052
- const { formatMessage } = useIntl6();
3296
+ const { formatMessage } = useIntl8();
3053
3297
  useEffect9(() => {
3054
3298
  open();
3055
3299
  }, []);
3056
- return /* @__PURE__ */ jsx45(
3300
+ return /* @__PURE__ */ jsx49(
3057
3301
  Modal,
3058
3302
  {
3059
3303
  open: visible,
3060
3304
  title: formatMessage(external_confirmation_messages_default.title),
3061
3305
  body: /* @__PURE__ */ jsxs11(Fragment7, { children: [
3062
- /* @__PURE__ */ jsx45(Markdown3, { config: { link: { target: "_blank" } }, className: "text-xs-center m-b-5", children: formatMessage(external_confirmation_messages_default.description, { origin: getOrigin(url) }) }),
3063
- /* @__PURE__ */ jsx45("div", { className: "df-box-renderer-fixed-width", children: /* @__PURE__ */ jsxs11("div", { className: "df-box-renderer-width-lg", children: [
3064
- /* @__PURE__ */ jsx45(
3306
+ /* @__PURE__ */ jsx49(Markdown3, { config: { link: { target: "_blank" } }, className: "text-xs-center m-b-5", children: formatMessage(external_confirmation_messages_default.description, { origin: getOrigin(url) }) }),
3307
+ /* @__PURE__ */ jsx49("div", { className: "df-box-renderer-fixed-width", children: /* @__PURE__ */ jsxs11("div", { className: "df-box-renderer-width-lg", children: [
3308
+ /* @__PURE__ */ jsx49(
3065
3309
  Button5,
3066
3310
  {
3067
3311
  v2: true,
@@ -3075,7 +3319,7 @@ function ExternalConfirmationRendererComponent({
3075
3319
  children: formatMessage(external_confirmation_messages_default.open)
3076
3320
  }
3077
3321
  ),
3078
- /* @__PURE__ */ jsx45(Button5, { v2: true, block: true, className: "m-b-2", priority: "tertiary", size: "md", onClick: onCancel, children: formatMessage(external_confirmation_messages_default.cancel) })
3322
+ /* @__PURE__ */ jsx49(Button5, { v2: true, block: true, className: "m-b-2", priority: "tertiary", size: "md", onClick: onCancel, children: formatMessage(external_confirmation_messages_default.cancel) })
3079
3323
  ] }) })
3080
3324
  ] }),
3081
3325
  onClose: onCancel
@@ -3092,27 +3336,27 @@ function getOrigin(url) {
3092
3336
  var ExternalConfirmationRenderer_default = ExternalConfirmationRenderer;
3093
3337
 
3094
3338
  // ../renderers/src/FormRenderer.tsx
3095
- import { jsx as jsx46 } from "react/jsx-runtime";
3339
+ import { jsx as jsx50 } from "react/jsx-runtime";
3096
3340
  var FormRenderer = {
3097
3341
  canRenderType: "form",
3098
- render: ({ children, margin }) => /* @__PURE__ */ jsx46("div", { className: getMargin(margin), children })
3342
+ render: ({ children, margin }) => /* @__PURE__ */ jsx50("div", { className: getMargin(margin), children })
3099
3343
  };
3100
3344
  var FormRenderer_default = FormRenderer;
3101
3345
 
3102
3346
  // ../renderers/src/FormSectionRenderer.tsx
3103
3347
  import { Header as Header4 } from "@transferwise/components";
3104
- import { jsx as jsx47, jsxs as jsxs12 } from "react/jsx-runtime";
3348
+ import { jsx as jsx51, jsxs as jsxs12 } from "react/jsx-runtime";
3105
3349
  var FormSectionRenderer = {
3106
3350
  canRenderType: "form-section",
3107
3351
  render: ({ title, description, children }) => /* @__PURE__ */ jsxs12("fieldset", { children: [
3108
- title && /* @__PURE__ */ jsx47(
3352
+ title && /* @__PURE__ */ jsx51(
3109
3353
  Header4,
3110
3354
  {
3111
3355
  as: "h2",
3112
3356
  title
3113
3357
  }
3114
3358
  ),
3115
- description && /* @__PURE__ */ jsx47("p", { children: description }),
3359
+ description && /* @__PURE__ */ jsx51("p", { children: description }),
3116
3360
  children
3117
3361
  ] })
3118
3362
  };
@@ -3120,18 +3364,18 @@ var FormSectionRenderer_default = FormSectionRenderer;
3120
3364
 
3121
3365
  // ../renderers/src/HeadingRenderer.tsx
3122
3366
  import { Display, Title } from "@transferwise/components";
3123
- import { jsx as jsx48 } from "react/jsx-runtime";
3367
+ import { jsx as jsx52 } from "react/jsx-runtime";
3124
3368
  var HeadingRenderer = {
3125
3369
  canRenderType: "heading",
3126
- render: (props) => /* @__PURE__ */ jsx48(Heading, __spreadValues({}, props))
3370
+ render: (props) => /* @__PURE__ */ jsx52(Heading, __spreadValues({}, props))
3127
3371
  };
3128
3372
  function Heading(props) {
3129
3373
  const { text, size, align, margin, control } = props;
3130
3374
  const className = getTextAlignmentAndMargin({ align, margin });
3131
- return control === "display" ? /* @__PURE__ */ jsx48(DisplayHeading, { size, text, className }) : /* @__PURE__ */ jsx48(StandardHeading, { size, text, className });
3375
+ return control === "display" ? /* @__PURE__ */ jsx52(DisplayHeading, { size, text, className }) : /* @__PURE__ */ jsx52(StandardHeading, { size, text, className });
3132
3376
  }
3133
3377
  function DisplayHeading({ size, text, className }) {
3134
- return /* @__PURE__ */ jsx48(Display, { type: getDisplayType(size), className, children: text });
3378
+ return /* @__PURE__ */ jsx52(Display, { type: getDisplayType(size), className, children: text });
3135
3379
  }
3136
3380
  var getDisplayType = (size) => {
3137
3381
  switch (size) {
@@ -3147,7 +3391,7 @@ var getDisplayType = (size) => {
3147
3391
  }
3148
3392
  };
3149
3393
  function StandardHeading({ size, text, className }) {
3150
- return /* @__PURE__ */ jsx48(Title, { type: getTitleTypeBySize(size), className, children: text });
3394
+ return /* @__PURE__ */ jsx52(Title, { type: getTitleTypeBySize(size), className, children: text });
3151
3395
  }
3152
3396
  var getTitleTypeBySize = (size) => {
3153
3397
  var _a;
@@ -3164,7 +3408,7 @@ var HeadingRenderer_default = HeadingRenderer;
3164
3408
 
3165
3409
  // ../renderers/src/ImageRenderer/UrlImage.tsx
3166
3410
  import { Image } from "@transferwise/components";
3167
- import { useEffect as useEffect10, useState as useState9 } from "react";
3411
+ import { useEffect as useEffect10, useState as useState10 } from "react";
3168
3412
 
3169
3413
  // ../renderers/src/utils/api-utils.ts
3170
3414
  function isRelativePath(url = "") {
@@ -3174,7 +3418,7 @@ function isRelativePath(url = "") {
3174
3418
  }
3175
3419
 
3176
3420
  // ../renderers/src/ImageRenderer/UrlImage.tsx
3177
- import { jsx as jsx49 } from "react/jsx-runtime";
3421
+ import { jsx as jsx53 } from "react/jsx-runtime";
3178
3422
  function UrlImage({
3179
3423
  accessibilityDescription,
3180
3424
  align,
@@ -3183,13 +3427,13 @@ function UrlImage({
3183
3427
  uri,
3184
3428
  httpClient
3185
3429
  }) {
3186
- const [imageSource, setImageSource] = useState9("");
3430
+ const [imageSource, setImageSource] = useState10("");
3187
3431
  useEffect10(() => {
3188
3432
  if (!uri.startsWith("urn:")) {
3189
3433
  void getImageSource(httpClient, uri).then(setImageSource);
3190
3434
  }
3191
3435
  }, [uri, httpClient]);
3192
- return /* @__PURE__ */ jsx49("div", { className: `df-image ${align} ${size || "md"} ${getMargin(margin)}`, children: /* @__PURE__ */ jsx49(
3436
+ return /* @__PURE__ */ jsx53("div", { className: `df-image ${align} ${size || "md"} ${getMargin(margin)}`, children: /* @__PURE__ */ jsx53(
3193
3437
  Image,
3194
3438
  {
3195
3439
  className: "df-reserve-space",
@@ -3232,121 +3476,6 @@ var getImageSource = async (httpClient, imageUrl) => {
3232
3476
  }
3233
3477
  };
3234
3478
 
3235
- // ../renderers/src/ImageRenderer/UrnFlagImage.tsx
3236
- import { jsx as jsx50 } from "react/jsx-runtime";
3237
- var maxFlagSize = 600;
3238
- function UrnFlagImage({
3239
- accessibilityDescription,
3240
- align,
3241
- margin,
3242
- size,
3243
- uri
3244
- }) {
3245
- return /* @__PURE__ */ jsx50("div", { className: `df-image ${align} ${size || "md"} ${getMargin(margin)}`, children: /* @__PURE__ */ jsx50(UrnFlag, { size: maxFlagSize, urn: uri, accessibilityDescription }) });
3246
- }
3247
-
3248
- // ../renderers/src/ImageRenderer/UrnIllustration.tsx
3249
- import {
3250
- Illustration,
3251
- isIllustrationSupport3D
3252
- } from "@wise/art";
3253
- import { useState as useState10 } from "react";
3254
-
3255
- // ../renderers/src/ImageRenderer/isAnimated.ts
3256
- var isAnimated = (uri) => {
3257
- const { rComponents } = stringToURN(uri);
3258
- return rComponents.type === "animated";
3259
- };
3260
-
3261
- // ../renderers/src/ImageRenderer/SafeIllustration3D.tsx
3262
- import { Illustration3D } from "@wise/art";
3263
- import { Component } from "react";
3264
- import { jsx as jsx51 } from "react/jsx-runtime";
3265
- var Illustration3DErrorBoundary = class extends Component {
3266
- constructor(props) {
3267
- super(props);
3268
- this.state = { hasError: false };
3269
- }
3270
- static getDerivedStateFromError() {
3271
- return { hasError: true };
3272
- }
3273
- componentDidCatch() {
3274
- this.props.onError();
3275
- }
3276
- render() {
3277
- if (this.state.hasError) {
3278
- return null;
3279
- }
3280
- return this.props.children;
3281
- }
3282
- };
3283
- var SafeIllustration3D = ({
3284
- name,
3285
- size,
3286
- onError
3287
- }) => {
3288
- return /* @__PURE__ */ jsx51(Illustration3DErrorBoundary, { onError, children: /* @__PURE__ */ jsx51(Illustration3D, { name, size }) });
3289
- };
3290
- var SafeIllustration3D_default = SafeIllustration3D;
3291
-
3292
- // ../renderers/src/ImageRenderer/UrnIllustration.tsx
3293
- import { jsx as jsx52 } from "react/jsx-runtime";
3294
- var urnPrefix = "urn:wise:illustrations:";
3295
- var isUrnIllustration = (uri) => uri.startsWith(urnPrefix);
3296
- function UrnIllustration({
3297
- accessibilityDescription,
3298
- align,
3299
- margin,
3300
- size,
3301
- uri
3302
- }) {
3303
- const [has3DFailed, setHas3DFailed] = useState10(false);
3304
- const illustrationSize = getIllustrationSize(size);
3305
- const illustrationName = getIllustrationName(uri);
3306
- const illustration3DName = getIllustration3DName(uri);
3307
- if (illustration3DName && isAnimated(uri) && !has3DFailed) {
3308
- return /* @__PURE__ */ jsx52("div", { className: `df-image ${align} ${getMargin(margin)}`, children: /* @__PURE__ */ jsx52(
3309
- SafeIllustration3D_default,
3310
- {
3311
- name: illustration3DName,
3312
- size: illustrationSize,
3313
- onError: () => setHas3DFailed(true)
3314
- }
3315
- ) });
3316
- }
3317
- return /* @__PURE__ */ jsx52("div", { className: `df-image ${align} ${getMargin(margin)}`, children: /* @__PURE__ */ jsx52(
3318
- Illustration,
3319
- {
3320
- className: "df-illustration",
3321
- name: illustrationName,
3322
- size: illustrationSize,
3323
- alt: accessibilityDescription
3324
- }
3325
- ) });
3326
- }
3327
- var getIllustrationSize = (size) => ({ xs: "small", sm: "small", md: "medium", lg: "large", xl: "large" })[size] || "medium";
3328
- var getIllustrationName = (uri) => {
3329
- return uri.replace(urnPrefix, "").split("?")[0];
3330
- };
3331
- var getIllustration3DName = (uri) => {
3332
- const illustrationName = getIllustrationName(uri);
3333
- return isIllustrationSupport3D(illustrationName) ? illustrationName : null;
3334
- };
3335
-
3336
- // ../renderers/src/ImageRenderer/UrnImage.tsx
3337
- import { jsx as jsx53 } from "react/jsx-runtime";
3338
- var isUrnImage = (uri) => uri.startsWith("urn:");
3339
- function UrnImage(props) {
3340
- const { uri } = props;
3341
- if (isUrnIllustration(uri)) {
3342
- return /* @__PURE__ */ jsx53(UrnIllustration, __spreadValues({}, props));
3343
- }
3344
- if (isUrnFlag(uri)) {
3345
- return /* @__PURE__ */ jsx53(UrnFlagImage, __spreadValues({}, props));
3346
- }
3347
- return null;
3348
- }
3349
-
3350
3479
  // ../renderers/src/ImageRenderer/ImageRenderer.tsx
3351
3480
  import { jsx as jsx54 } from "react/jsx-runtime";
3352
3481
  var ImageRenderer = {
@@ -3631,7 +3760,7 @@ var ModalRenderer = {
3631
3760
  // ../renderers/src/MoneyInputRenderer.tsx
3632
3761
  import { MoneyInput } from "@transferwise/components";
3633
3762
  import { useEffect as useEffect11 } from "react";
3634
- import { useIntl as useIntl7 } from "react-intl";
3763
+ import { useIntl as useIntl9 } from "react-intl";
3635
3764
  import { jsx as jsx64 } from "react/jsx-runtime";
3636
3765
  var groupingTags2 = Object.keys(group_messages_default).filter((key) => key !== "all");
3637
3766
  var MoneyInputRenderer = {
@@ -3658,7 +3787,7 @@ function MoneyInputRendererComponent(props) {
3658
3787
  onCurrencyChange(0);
3659
3788
  }
3660
3789
  }, [selectedCurrencyIndex, onCurrencyChange, currencies.length]);
3661
- const { formatMessage } = useIntl7();
3790
+ const { formatMessage } = useIntl9();
3662
3791
  return /* @__PURE__ */ jsx64(
3663
3792
  FieldInput_default,
3664
3793
  {
@@ -3732,7 +3861,7 @@ function assertCurrencyCodeIsString(currencyCode) {
3732
3861
  // ../renderers/src/MultiSelectInputRenderer/InlineComponent.tsx
3733
3862
  import { ListItem as ListItem9, SearchInput as SearchInput2 } from "@transferwise/components";
3734
3863
  import { useState as useState12 } from "react";
3735
- import { useIntl as useIntl8 } from "react-intl";
3864
+ import { useIntl as useIntl10 } from "react-intl";
3736
3865
 
3737
3866
  // ../renderers/src/utils/items-with-index.ts
3738
3867
  var zipWithIndex = (items) => items.map((item, index) => __spreadProps(__spreadValues({}, item), {
@@ -3757,7 +3886,7 @@ function InlineComponent(props) {
3757
3886
  } = props;
3758
3887
  const optionsWithIndex = zipWithIndex(options);
3759
3888
  const [query, setQuery] = useState12("");
3760
- const { formatMessage } = useIntl8();
3889
+ const { formatMessage } = useIntl10();
3761
3890
  const filtered = tags == null ? void 0 : tags.includes("filtered");
3762
3891
  const filteredOptions = query ? filterAndSortItems(optionsWithIndex, filtered ? query : "") : optionsWithIndex;
3763
3892
  return /* @__PURE__ */ jsxs16(Fragment8, { children: [
@@ -3830,11 +3959,11 @@ function InlineComponent(props) {
3830
3959
  // ../renderers/src/MultiSelectInputRenderer/DefaultComponent.tsx
3831
3960
  import { SelectInput, SelectInputOptionContent } from "@transferwise/components";
3832
3961
  import { useState as useState13 } from "react";
3833
- import { useIntl as useIntl9 } from "react-intl";
3962
+ import { useIntl as useIntl11 } from "react-intl";
3834
3963
 
3835
3964
  // ../renderers/src/messages/multi-select.messages.ts
3836
- import { defineMessages as defineMessages7 } from "react-intl";
3837
- var multi_select_messages_default = defineMessages7({
3965
+ import { defineMessages as defineMessages9 } from "react-intl";
3966
+ var multi_select_messages_default = defineMessages9({
3838
3967
  summary: {
3839
3968
  id: "df.wise.MultiSelect.summary",
3840
3969
  defaultMessage: "{first} and {count} more",
@@ -3845,7 +3974,7 @@ var multi_select_messages_default = defineMessages7({
3845
3974
  // ../renderers/src/MultiSelectInputRenderer/DefaultComponent.tsx
3846
3975
  import { jsx as jsx66 } from "react/jsx-runtime";
3847
3976
  function DefaultComponent(props) {
3848
- const { formatMessage } = useIntl9();
3977
+ const { formatMessage } = useIntl11();
3849
3978
  const [stagedIndices, setStagedIndices] = useState13();
3850
3979
  const {
3851
3980
  id,
@@ -4178,7 +4307,7 @@ var NumberInputRenderer = {
4178
4307
  var NumberInputRenderer_default = NumberInputRenderer;
4179
4308
 
4180
4309
  // ../renderers/src/ParagraphRenderer.tsx
4181
- import { useIntl as useIntl10 } from "react-intl";
4310
+ import { useIntl as useIntl12 } from "react-intl";
4182
4311
 
4183
4312
  // ../renderers/src/hooks/useSnackBarIfAvailable.ts
4184
4313
  import { SnackbarContext } from "@transferwise/components";
@@ -4194,8 +4323,8 @@ var import_classnames6 = __toESM(require_classnames());
4194
4323
  import { Button as Button7, Input as Input4 } from "@transferwise/components";
4195
4324
 
4196
4325
  // ../renderers/src/messages/paragraph.messages.ts
4197
- import { defineMessages as defineMessages8 } from "react-intl";
4198
- var paragraph_messages_default = defineMessages8({
4326
+ import { defineMessages as defineMessages10 } from "react-intl";
4327
+ var paragraph_messages_default = defineMessages10({
4199
4328
  copy: {
4200
4329
  id: "df.wise.DynamicParagraph.copy",
4201
4330
  defaultMessage: "Copy",
@@ -4229,7 +4358,7 @@ function CopyableParagraph({
4229
4358
  align,
4230
4359
  className
4231
4360
  }) {
4232
- const { formatMessage } = useIntl10();
4361
+ const { formatMessage } = useIntl12();
4233
4362
  const createSnackbar = useSnackBarIfAvailable();
4234
4363
  const copy = () => {
4235
4364
  navigator.clipboard.writeText(text).then(() => createSnackbar({ text: formatMessage(paragraph_messages_default.copied) })).catch(() => {
@@ -4279,11 +4408,11 @@ var import_classnames7 = __toESM(require_classnames());
4279
4408
  import { Button as Button8, Header as Header6, InlineAlert as InlineAlert3, Modal as Modal4, NavigationOption } from "@transferwise/components";
4280
4409
  import { Plus } from "@transferwise/icons";
4281
4410
  import { useState as useState14 } from "react";
4282
- import { useIntl as useIntl11 } from "react-intl";
4411
+ import { useIntl as useIntl13 } from "react-intl";
4283
4412
 
4284
4413
  // ../renderers/src/messages/repeatable.messages.ts
4285
- import { defineMessages as defineMessages9 } from "react-intl";
4286
- var repeatable_messages_default = defineMessages9({
4414
+ import { defineMessages as defineMessages11 } from "react-intl";
4415
+ var repeatable_messages_default = defineMessages11({
4287
4416
  addItemTitle: {
4288
4417
  id: "df.wise.ArraySchema.addItemTitle",
4289
4418
  defaultMessage: "Add Item",
@@ -4327,7 +4456,7 @@ function Repeatable(props) {
4327
4456
  onSave,
4328
4457
  onRemove
4329
4458
  } = props;
4330
- const { formatMessage } = useIntl11();
4459
+ const { formatMessage } = useIntl13();
4331
4460
  const [openModalType, setOpenModalType] = useState14(null);
4332
4461
  const { ref } = useScrollToError(validationState, features);
4333
4462
  const onAddItem = () => {
@@ -4481,7 +4610,7 @@ var getFieldLabel = (label, help, onClick) => {
4481
4610
  // ../renderers/src/ReviewRenderer.tsx
4482
4611
  import { ListItem as ListItem10, Markdown as Markdown5, Popover } from "@transferwise/components";
4483
4612
  import { QuestionMarkCircle } from "@transferwise/icons";
4484
- import { useIntl as useIntl12 } from "react-intl";
4613
+ import { useIntl as useIntl14 } from "react-intl";
4485
4614
  import { jsx as jsx76, jsxs as jsxs21 } from "react/jsx-runtime";
4486
4615
  var IGNORED_CONTROLS = [
4487
4616
  "horizontal",
@@ -4503,7 +4632,7 @@ var Review = ({
4503
4632
  title,
4504
4633
  trackEvent
4505
4634
  }) => {
4506
- const intl = useIntl12();
4635
+ const intl = useIntl14();
4507
4636
  return /* @__PURE__ */ jsxs21("div", { className: getMargin(margin), children: [
4508
4637
  /* @__PURE__ */ jsx76(Header, { title, callToAction }),
4509
4638
  fields.map((field) => {
@@ -4551,11 +4680,11 @@ var ReviewRenderer_default = ReviewRenderer2;
4551
4680
  // ../renderers/src/SearchRenderer/BlockSearchRendererComponent.tsx
4552
4681
  import { Input as Input5, InputGroup as InputGroup4, List, ListItem as ListItem11, Markdown as Markdown6 } from "@transferwise/components";
4553
4682
  import { useState as useState15 } from "react";
4554
- import { useIntl as useIntl14 } from "react-intl";
4683
+ import { useIntl as useIntl16 } from "react-intl";
4555
4684
 
4556
4685
  // ../renderers/src/messages/search.messages.ts
4557
- import { defineMessages as defineMessages10 } from "react-intl";
4558
- var search_messages_default = defineMessages10({
4686
+ import { defineMessages as defineMessages12 } from "react-intl";
4687
+ var search_messages_default = defineMessages12({
4559
4688
  loading: {
4560
4689
  id: "df.wise.SearchLayout.loading",
4561
4690
  defaultMessage: "Loading...",
@@ -4564,33 +4693,11 @@ var search_messages_default = defineMessages10({
4564
4693
  });
4565
4694
 
4566
4695
  // ../renderers/src/SearchRenderer/ErrorResult.tsx
4567
- import { useIntl as useIntl13 } from "react-intl";
4568
-
4569
- // ../renderers/src/messages/generic-error.messages.ts
4570
- import { defineMessages as defineMessages11 } from "react-intl";
4571
- var generic_error_messages_default = defineMessages11({
4572
- genericErrorRetryHint: {
4573
- id: "df.wise.PersistAsyncSchema.genericError",
4574
- defaultMessage: "Something went wrong, please try again.",
4575
- description: "Generic error message for persist async schema"
4576
- },
4577
- genericError: {
4578
- id: "df.wise.ErrorBoundary.errorAlert",
4579
- defaultMessage: "Something went wrong.",
4580
- description: "Generic error message for when something has gone wrong."
4581
- },
4582
- retry: {
4583
- id: "df.wise.ErrorBoundary.retry",
4584
- defaultMessage: "Retry",
4585
- description: "Usually this follows the generic error and contains a link."
4586
- }
4587
- });
4588
-
4589
- // ../renderers/src/SearchRenderer/ErrorResult.tsx
4696
+ import { useIntl as useIntl15 } from "react-intl";
4590
4697
  import { Link as DSLink2 } from "@transferwise/components";
4591
4698
  import { jsx as jsx77, jsxs as jsxs22 } from "react/jsx-runtime";
4592
4699
  function ErrorResult({ state }) {
4593
- const intl = useIntl13();
4700
+ const intl = useIntl15();
4594
4701
  return /* @__PURE__ */ jsxs22("p", { className: "m-t-2", children: [
4595
4702
  intl.formatMessage(generic_error_messages_default.genericError),
4596
4703
  "\xA0",
@@ -4614,7 +4721,7 @@ function BlockSearchRendererComponent({
4614
4721
  onChange
4615
4722
  }) {
4616
4723
  const [hasSearched, setHasSearched] = useState15(false);
4617
- const { formatMessage } = useIntl14();
4724
+ const { formatMessage } = useIntl16();
4618
4725
  return /* @__PURE__ */ jsxs23("div", { className: getMargin(margin), children: [
4619
4726
  /* @__PURE__ */ jsx78(
4620
4727
  FieldInput_default,
@@ -4707,7 +4814,7 @@ var BlockSearchRendererComponent_default = BlockSearchRendererComponent;
4707
4814
  import { Markdown as Markdown7, Typeahead } from "@transferwise/components";
4708
4815
  import { Search as Search3 } from "@transferwise/icons";
4709
4816
  import { useState as useState16 } from "react";
4710
- import { useIntl as useIntl15 } from "react-intl";
4817
+ import { useIntl as useIntl17 } from "react-intl";
4711
4818
  import { jsx as jsx79 } from "react/jsx-runtime";
4712
4819
  function InlineSearchRenderer({
4713
4820
  id,
@@ -4721,7 +4828,7 @@ function InlineSearchRenderer({
4721
4828
  trackEvent
4722
4829
  }) {
4723
4830
  const [hasSearched, setHasSearched] = useState16(false);
4724
- const intl = useIntl15();
4831
+ const intl = useIntl17();
4725
4832
  return /* @__PURE__ */ jsx79("div", { className: getMargin(margin), children: /* @__PURE__ */ jsx79(
4726
4833
  FieldInput_default,
4727
4834
  {
@@ -4780,7 +4887,7 @@ function mapResultToTypeaheadOption(result) {
4780
4887
  };
4781
4888
  }
4782
4889
  function TypeaheadFooter({ state, isLoading }) {
4783
- const { formatMessage } = useIntl15();
4890
+ const { formatMessage } = useIntl17();
4784
4891
  if (state.type === "layout") {
4785
4892
  return /* @__PURE__ */ jsx79("div", { className: "m-x-1 m-y-1", children: state.layout });
4786
4893
  }
@@ -5209,11 +5316,11 @@ var StatusListRenderer_default = StatusListRenderer;
5209
5316
 
5210
5317
  // ../renderers/src/utils/useCustomTheme.ts
5211
5318
  import { useTheme } from "@wise/components-theming";
5212
- import { useEffect as useEffect14, useMemo as useMemo2 } from "react";
5319
+ import { useEffect as useEffect14, useMemo } from "react";
5213
5320
  var ThemeRequiredEventName = "Theme Required";
5214
5321
  var useCustomTheme = (theme, trackEvent) => {
5215
5322
  const theming = useTheme();
5216
- const previousTheme = useMemo2(() => theming.theme, []);
5323
+ const previousTheme = useMemo(() => theming.theme, []);
5217
5324
  useEffect14(() => {
5218
5325
  theming.setTheme(theme);
5219
5326
  trackEvent(ThemeRequiredEventName, { theme });
@@ -5245,11 +5352,11 @@ var getHeaderStyle = (tags) => {
5245
5352
  // ../renderers/src/step/topbar/BackButton.tsx
5246
5353
  import { IconButton } from "@transferwise/components";
5247
5354
  import { ArrowLeft } from "@transferwise/icons";
5248
- import { useIntl as useIntl16 } from "react-intl";
5355
+ import { useIntl as useIntl18 } from "react-intl";
5249
5356
 
5250
5357
  // ../renderers/src/messages/back.messages.ts
5251
- import { defineMessages as defineMessages12 } from "react-intl";
5252
- var back_messages_default = defineMessages12({
5358
+ import { defineMessages as defineMessages13 } from "react-intl";
5359
+ var back_messages_default = defineMessages13({
5253
5360
  back: {
5254
5361
  id: "df.wise.back.label",
5255
5362
  defaultMessage: "Back",
@@ -5260,7 +5367,7 @@ var back_messages_default = defineMessages12({
5260
5367
  // ../renderers/src/step/topbar/BackButton.tsx
5261
5368
  import { jsx as jsx90, jsxs as jsxs32 } from "react/jsx-runtime";
5262
5369
  function BackButton({ title, onClick }) {
5263
- const { formatMessage } = useIntl16();
5370
+ const { formatMessage } = useIntl18();
5264
5371
  return /* @__PURE__ */ jsxs32(IconButton, { className: "df-back-button", priority: "tertiary", onClick, children: [
5265
5372
  /* @__PURE__ */ jsx90("span", { className: "sr-only", children: title != null ? title : formatMessage(back_messages_default.back) }),
5266
5373
  /* @__PURE__ */ jsx90(ArrowLeft, {})
@@ -5981,11 +6088,11 @@ var customEventsToAnalytics = {
5981
6088
 
5982
6089
  // src/dynamicFlow/useOnCopy.tsx
5983
6090
  import { useCallback as useCallback2 } from "react";
5984
- import { useIntl as useIntl17 } from "react-intl";
6091
+ import { useIntl as useIntl19 } from "react-intl";
5985
6092
 
5986
6093
  // src/dynamicFlow/messages.ts
5987
- import { defineMessages as defineMessages13 } from "react-intl";
5988
- var messages_default = defineMessages13({
6094
+ import { defineMessages as defineMessages14 } from "react-intl";
6095
+ var messages_default = defineMessages14({
5989
6096
  copied: {
5990
6097
  id: "df.wise.CopyFeedback.copy",
5991
6098
  defaultMessage: "Copied to clipboard",
@@ -6000,7 +6107,7 @@ var messages_default = defineMessages13({
6000
6107
 
6001
6108
  // src/dynamicFlow/useOnCopy.tsx
6002
6109
  var useOnCopy = () => {
6003
- const { formatMessage } = useIntl17();
6110
+ const { formatMessage } = useIntl19();
6004
6111
  const createSnackBar = useSnackBarIfAvailable();
6005
6112
  return useCallback2(
6006
6113
  (copiedContent) => {
@@ -6016,9 +6123,9 @@ var useOnCopy = () => {
6016
6123
 
6017
6124
  // src/dynamicFlow/useWiseHttpClient.tsx
6018
6125
  import { useCallback as useCallback3 } from "react";
6019
- import { useIntl as useIntl18 } from "react-intl";
6126
+ import { useIntl as useIntl20 } from "react-intl";
6020
6127
  var useWiseHttpClient = (httpClient) => {
6021
- const { locale } = useIntl18();
6128
+ const { locale } = useIntl20();
6022
6129
  return useCallback3(
6023
6130
  async (input, init = {}) => {
6024
6131
  const headers = new Headers(init.headers);
@@ -6060,10 +6167,10 @@ var useWiseToCoreProps = (props) => {
6060
6167
  onLog
6061
6168
  } = props;
6062
6169
  const httpClient = useWiseHttpClient(customFetch);
6063
- const mergedRenderers = useMemo3(() => getMergedRenderers(props), [renderers]);
6170
+ const mergedRenderers = useMemo2(() => getMergedRenderers(props), [renderers]);
6064
6171
  const createSnackBar = useCreateSnackBar();
6065
- const logEvent = useMemo3(() => getLogEvent(onLog), [onLog]);
6066
- const trackEvent = useMemo3(() => getTrackEvent(onEvent, onAnalytics), [onEvent, onAnalytics]);
6172
+ const logEvent = useMemo2(() => getLogEvent(onLog), [onLog]);
6173
+ const trackEvent = useMemo2(() => getTrackEvent(onEvent, onAnalytics), [onEvent, onAnalytics]);
6067
6174
  const onCopy = useOnCopy();
6068
6175
  return __spreadProps(__spreadValues({}, props), {
6069
6176
  httpClient,
@@ -6142,6 +6249,7 @@ import { findRendererPropsByType } from "@wise/dynamic-flow-client";
6142
6249
  var Header10 = Header;
6143
6250
  var Media2 = Media;
6144
6251
  var getMargin2 = getMargin;
6252
+ var createCollectionRenderer2 = createCollectionRenderer;
6145
6253
 
6146
6254
  // src/i18n/index.ts
6147
6255
  import { translations as coreTranslations } from "@wise/dynamic-flow-client";
@@ -6155,6 +6263,7 @@ var cs_default = {
6155
6263
  "df.wise.ArraySchema.minItemsError": "P\u0159idejte alespo\u0148 {minItems}.",
6156
6264
  "df.wise.ArraySchema.removeItem": "Odebrat",
6157
6265
  "df.wise.ButtonLayout.buttonLoadingMessage": "M\u016F\u017Ee to trvat p\xE1r sekund",
6266
+ "df.wise.Collection.loadMoreMessage": "Na\u010D\xEDst v\xEDce",
6158
6267
  "df.wise.ControlFeedback.maxLength": "Zadejte {maxLength} nebo m\xE9n\u011B znak\u016F.",
6159
6268
  "df.wise.ControlFeedback.maximum": "Zadejte \u010D\xEDslo, kter\xE9 je {maximum} nebo men\u0161\xED.",
6160
6269
  "df.wise.ControlFeedback.maximumDate": "Zadejte datum, kter\xE9 je {maximum} nebo p\u0159edt\xEDm.",
@@ -6202,6 +6311,7 @@ var de_default = {
6202
6311
  "df.wise.ArraySchema.minItemsError": "Bitte f\xFCge mindestens {minItems} hinzu.",
6203
6312
  "df.wise.ArraySchema.removeItem": "Entfernen",
6204
6313
  "df.wise.ButtonLayout.buttonLoadingMessage": "Dies kann ein paar Sekunden dauern",
6314
+ "df.wise.Collection.loadMoreMessage": "Mehr laden",
6205
6315
  "df.wise.ControlFeedback.maxLength": "Bitte gib nicht mehr als {maxLength} Zeichen ein.",
6206
6316
  "df.wise.ControlFeedback.maximum": "Bitte gib eine Zahl ein, die {maximum} oder weniger betr\xE4gt.",
6207
6317
  "df.wise.ControlFeedback.maximumDate": "Bitte gib ein Datum ein, das am oder vor dem {maximum} liegt.",
@@ -6249,6 +6359,7 @@ var en_default = {
6249
6359
  "df.wise.ArraySchema.minItemsError": "Please add at least {minItems}.",
6250
6360
  "df.wise.ArraySchema.removeItem": "Remove",
6251
6361
  "df.wise.ButtonLayout.buttonLoadingMessage": "This might take a few seconds",
6362
+ "df.wise.Collection.loadMoreMessage": "Load more",
6252
6363
  "df.wise.ControlFeedback.maxLength": "Please enter {maxLength} or fewer characters.",
6253
6364
  "df.wise.ControlFeedback.maximum": "Please enter a number that's {maximum} or less.",
6254
6365
  "df.wise.ControlFeedback.maximumDate": "Please enter a date that's on or before {maximum}.",
@@ -6296,6 +6407,7 @@ var es_default = {
6296
6407
  "df.wise.ArraySchema.minItemsError": "A\xF1ade al menos {minItems}.",
6297
6408
  "df.wise.ArraySchema.removeItem": "Eliminar",
6298
6409
  "df.wise.ButtonLayout.buttonLoadingMessage": "Esto puede tardar unos segundos",
6410
+ "df.wise.Collection.loadMoreMessage": "Cargar m\xE1s",
6299
6411
  "df.wise.ControlFeedback.maxLength": "Introduce {maxLength} caracteres o menos.",
6300
6412
  "df.wise.ControlFeedback.maximum": "Introduce una cifra igual o inferior a {maximum}.",
6301
6413
  "df.wise.ControlFeedback.maximumDate": "Introduce una fecha que sea igual o anterior al {maximum}.",
@@ -6343,6 +6455,7 @@ var fr_default = {
6343
6455
  "df.wise.ArraySchema.minItemsError": "Veuillez ajouter au moins {minItems}.",
6344
6456
  "df.wise.ArraySchema.removeItem": "Supprimer",
6345
6457
  "df.wise.ButtonLayout.buttonLoadingMessage": "Un instant, s'il vous pla\xEEt...",
6458
+ "df.wise.Collection.loadMoreMessage": "Charger plus",
6346
6459
  "df.wise.ControlFeedback.maxLength": "Veuillez saisir {maxLength} caract\xE8res ou moins.",
6347
6460
  "df.wise.ControlFeedback.maximum": "Veuillez saisir un nombre inf\xE9rieur ou \xE9gal \xE0 {maximum}.",
6348
6461
  "df.wise.ControlFeedback.maximumDate": "Veuillez saisir une date \xE9gale ou ant\xE9rieure au {maximum}.",
@@ -6390,6 +6503,7 @@ var hu_default = {
6390
6503
  "df.wise.ArraySchema.minItemsError": "K\xE9r\xFCnk, legal\xE1bb {minItems} t\xE9telt adj meg.",
6391
6504
  "df.wise.ArraySchema.removeItem": "Elt\xE1vol\xEDt\xE1s",
6392
6505
  "df.wise.ButtonLayout.buttonLoadingMessage": "Ez eltarthat n\xE9h\xE1ny m\xE1sodpercig",
6506
+ "df.wise.Collection.loadMoreMessage": "Tov\xE1bbiak bet\xF6lt\xE9se",
6393
6507
  "df.wise.ControlFeedback.maxLength": "K\xE9r\xFCnk, legfeljebb {maxLength} karaktert adj meg.",
6394
6508
  "df.wise.ControlFeedback.maximum": "K\xE9r\xFCnk, add meg ezt vagy egy enn\xE9l kisebb sz\xE1mot: {maximum}.",
6395
6509
  "df.wise.ControlFeedback.maximumDate": "K\xE9r\xFCnk, adj meg egy d\xE1tumot, ami megegyezik {maximum} napj\xE1val, vagy egy enn\xE9l kor\xE1bbit.",
@@ -6437,6 +6551,7 @@ var id_default = {
6437
6551
  "df.wise.ArraySchema.minItemsError": "Harap tambahkan setidaknya {minItems}.",
6438
6552
  "df.wise.ArraySchema.removeItem": "Hapus",
6439
6553
  "df.wise.ButtonLayout.buttonLoadingMessage": "Ini mungkin memakan waktu beberapa detik",
6554
+ "df.wise.Collection.loadMoreMessage": "Muat lebih banyak",
6440
6555
  "df.wise.ControlFeedback.maxLength": "Harap masukkan {maxLength} karakter atau kurang.",
6441
6556
  "df.wise.ControlFeedback.maximum": "Harap masukkan angka paling besar {maximum} atau kurang dari itu.",
6442
6557
  "df.wise.ControlFeedback.maximumDate": "Harap masukkan tanggal pada atau sebelum {maximum}.",
@@ -6484,6 +6599,7 @@ var it_default = {
6484
6599
  "df.wise.ArraySchema.minItemsError": "Aggiungi almeno {minItems}.",
6485
6600
  "df.wise.ArraySchema.removeItem": "Rimuovi",
6486
6601
  "df.wise.ButtonLayout.buttonLoadingMessage": "Potrebbero volerci un paio di secondi",
6602
+ "df.wise.Collection.loadMoreMessage": "Carica altro",
6487
6603
  "df.wise.ControlFeedback.maxLength": "Inserisci un massimo di {maxLength} caratteri.",
6488
6604
  "df.wise.ControlFeedback.maximum": "Inserisci un numero uguale o inferiore a {maximum}.",
6489
6605
  "df.wise.ControlFeedback.maximumDate": "Inserisci una data corrispondente o precedente al {maximum}.",
@@ -6531,6 +6647,7 @@ var ja_default = {
6531
6647
  "df.wise.ArraySchema.minItemsError": "{minItems}\u30A2\u30A4\u30C6\u30E0\u4EE5\u4E0A\u3092\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
6532
6648
  "df.wise.ArraySchema.removeItem": "\u524A\u9664\u3059\u308B",
6533
6649
  "df.wise.ButtonLayout.buttonLoadingMessage": "\u6570\u79D2\u304B\u304B\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059",
6650
+ "df.wise.Collection.loadMoreMessage": "\u3082\u3063\u3068\u898B\u308B",
6534
6651
  "df.wise.ControlFeedback.maxLength": "{maxLength}\u6587\u5B57\u4EE5\u4E0B\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
6535
6652
  "df.wise.ControlFeedback.maximum": "{maximum}\u4EE5\u4E0B\u306E\u6570\u5B57\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
6536
6653
  "df.wise.ControlFeedback.maximumDate": "{maximum}\u307E\u305F\u306F\u305D\u308C\u4EE5\u524D\u306E\u65E5\u4ED8\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
@@ -6578,6 +6695,7 @@ var nl_default = {
6578
6695
  "df.wise.ArraySchema.minItemsError": "Voeg minimaal {minItems} toe.",
6579
6696
  "df.wise.ArraySchema.removeItem": "Verwijderen",
6580
6697
  "df.wise.ButtonLayout.buttonLoadingMessage": "Dit kan enkele seconden duren",
6698
+ "df.wise.Collection.loadMoreMessage": "Meer laden",
6581
6699
  "df.wise.ControlFeedback.maxLength": "Voer {maxLength} of minder tekens in.",
6582
6700
  "df.wise.ControlFeedback.maximum": "Voer een getal in dat {maximum} of lager is.",
6583
6701
  "df.wise.ControlFeedback.maximumDate": "Voer een datum in die op of voor {maximum} is.",
@@ -6625,6 +6743,7 @@ var pl_default = {
6625
6743
  "df.wise.ArraySchema.minItemsError": "Prosimy doda\u0107 co najmniej {minItems}.",
6626
6744
  "df.wise.ArraySchema.removeItem": "Usu\u0144",
6627
6745
  "df.wise.ButtonLayout.buttonLoadingMessage": "To mo\u017Ce potrwa\u0107 kilka sekund",
6746
+ "df.wise.Collection.loadMoreMessage": "Za\u0142aduj wi\u0119cej",
6628
6747
  "df.wise.ControlFeedback.maxLength": "Prosimy wprowadzi\u0107 do {maxLength} znak\xF3w.",
6629
6748
  "df.wise.ControlFeedback.maximum": "Wprowad\u017A liczb\u0119 r\xF3wn\u0105 lub mniejsz\u0105 ni\u017C {maximum}.",
6630
6749
  "df.wise.ControlFeedback.maximumDate": "Wprowad\u017A dat\u0119 nie p\xF3\u017Aniejsz\u0105 ni\u017C {maximum}.",
@@ -6672,6 +6791,7 @@ var pt_default = {
6672
6791
  "df.wise.ArraySchema.minItemsError": "Adicione pelo menos {minItems}.",
6673
6792
  "df.wise.ArraySchema.removeItem": "Remover",
6674
6793
  "df.wise.ButtonLayout.buttonLoadingMessage": "Isso pode levar alguns segundos",
6794
+ "df.wise.Collection.loadMoreMessage": "Carregar mais",
6675
6795
  "df.wise.ControlFeedback.maxLength": "Por favor, insira {maxLength} caracteres ou menos.",
6676
6796
  "df.wise.ControlFeedback.maximum": "Por favor, insira um n\xFAmero que seja {maximum} ou menos.",
6677
6797
  "df.wise.ControlFeedback.maximumDate": "Por favor, insira uma data que seja em ou antes de {maximum}.",
@@ -6719,6 +6839,7 @@ var ro_default = {
6719
6839
  "df.wise.ArraySchema.minItemsError": "Te rug\u0103m s\u0103 adaugi cel pu\u021Bin {minItems}.",
6720
6840
  "df.wise.ArraySchema.removeItem": "Elimin\u0103",
6721
6841
  "df.wise.ButtonLayout.buttonLoadingMessage": "Acest lucru ar putea dura c\xE2teva secunde",
6842
+ "df.wise.Collection.loadMoreMessage": "\xCEncarc\u0103 mai multe",
6722
6843
  "df.wise.ControlFeedback.maxLength": "Te rug\u0103m s\u0103 introduci {maxLength} sau mai pu\u021Bine caractere.",
6723
6844
  "df.wise.ControlFeedback.maximum": "Te rug\u0103m s\u0103 introduci un num\u0103r egal cu {maximum} sau mai mic.",
6724
6845
  "df.wise.ControlFeedback.maximumDate": "Te rug\u0103m s\u0103 introduci o dat\u0103 de \xEEnainte de sau egal\u0103 cu {maximum}.",
@@ -6766,6 +6887,7 @@ var ru_default = {
6766
6887
  "df.wise.ArraySchema.minItemsError": "\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0434\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u043F\u043E \u043A\u0440\u0430\u0439\u043D\u0435\u0439 \u043C\u0435\u0440\u0435 {minItems}.",
6767
6888
  "df.wise.ArraySchema.removeItem": "\u0423\u0434\u0430\u043B\u0438\u0442\u044C",
6768
6889
  "df.wise.ButtonLayout.buttonLoadingMessage": "\u042D\u0442\u043E \u043C\u043E\u0436\u0435\u0442 \u0437\u0430\u043D\u044F\u0442\u044C \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0435\u043A\u0443\u043D\u0434",
6890
+ "df.wise.Collection.loadMoreMessage": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435",
6769
6891
  "df.wise.ControlFeedback.maxLength": "\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 {maxLength} \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0438\u043B\u0438 \u043C\u0435\u043D\u044C\u0448\u0435.",
6770
6892
  "df.wise.ControlFeedback.maximum": "\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043B\u043E, \u0440\u0430\u0432\u043D\u043E\u0435 {maximum} \u0438\u043B\u0438 \u043C\u0435\u043D\u044C\u0448\u0435.",
6771
6893
  "df.wise.ControlFeedback.maximumDate": "\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0430\u0442\u0443, \u0440\u0430\u0432\u043D\u0443\u044E {maximum} \u0438\u043B\u0438 \u0431\u043E\u043B\u0435\u0435 \u0440\u0430\u043D\u043D\u044E\u044E.",
@@ -6813,6 +6935,7 @@ var th_default = {
6813
6935
  "df.wise.ArraySchema.minItemsError": "\u0E42\u0E1B\u0E23\u0E14\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22 {minItems}",
6814
6936
  "df.wise.ArraySchema.removeItem": "\u0E25\u0E1A",
6815
6937
  "df.wise.ButtonLayout.buttonLoadingMessage": "\u0E2D\u0E32\u0E08\u0E43\u0E0A\u0E49\u0E40\u0E27\u0E25\u0E32\u0E2A\u0E31\u0E01\u0E2A\u0E2D\u0E07\u0E2A\u0E32\u0E21\u0E27\u0E34\u0E19\u0E32\u0E17\u0E35",
6938
+ "df.wise.Collection.loadMoreMessage": "\u0E42\u0E2B\u0E25\u0E14\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E40\u0E15\u0E34\u0E21",
6816
6939
  "df.wise.ControlFeedback.maxLength": "\u0E42\u0E1B\u0E23\u0E14\u0E1B\u0E49\u0E2D\u0E19 {maxLength} \u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23\u0E2B\u0E23\u0E37\u0E2D\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E19\u0E31\u0E49\u0E19",
6817
6940
  "df.wise.ControlFeedback.maximum": "\u0E42\u0E1B\u0E23\u0E14\u0E1B\u0E49\u0E2D\u0E19\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02 {maximum} \u0E2B\u0E23\u0E37\u0E2D\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32",
6818
6941
  "df.wise.ControlFeedback.maximumDate": "\u0E42\u0E1B\u0E23\u0E14\u0E43\u0E2A\u0E48\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E1B\u0E47\u0E19 {maximum} \u0E2B\u0E23\u0E37\u0E2D\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32\u0E19\u0E31\u0E49\u0E19",
@@ -6860,6 +6983,7 @@ var tr_default = {
6860
6983
  "df.wise.ArraySchema.minItemsError": "L\xFCtfen en az {minItems} ekleme yap\u0131n.",
6861
6984
  "df.wise.ArraySchema.removeItem": "Kald\u0131r",
6862
6985
  "df.wise.ButtonLayout.buttonLoadingMessage": "Bu birka\xE7 saniye s\xFCrebilir",
6986
+ "df.wise.Collection.loadMoreMessage": "Daha fazla y\xFCkle",
6863
6987
  "df.wise.ControlFeedback.maxLength": "L\xFCtfen {maxLength} veya daha az karakter girin.",
6864
6988
  "df.wise.ControlFeedback.maximum": "L\xFCtfen {maximum} veya daha d\xFC\u015F\xFCk bir say\u0131 girin.",
6865
6989
  "df.wise.ControlFeedback.maximumDate": "L\xFCtfen {maximum} veya daha erken bir tarih girin.",
@@ -6907,6 +7031,7 @@ var zh_CN_default = {
6907
7031
  "df.wise.ArraySchema.minItemsError": "\u8BF7\u81F3\u5C11\u6DFB\u52A0 {minItems} \u9879\u3002",
6908
7032
  "df.wise.ArraySchema.removeItem": "\u79FB\u9664",
6909
7033
  "df.wise.ButtonLayout.buttonLoadingMessage": "\u6B64\u8FC7\u7A0B\u53EF\u80FD\u9700\u8981\u51E0\u79D2\u949F",
7034
+ "df.wise.Collection.loadMoreMessage": "\u52A0\u8F7D\u66F4\u591A",
6910
7035
  "df.wise.ControlFeedback.maxLength": "\u8BF7\u8F93\u5165\u4E0D\u8D85\u8FC7 {maxLength} \u4E2A\u5B57\u7B26\u3002",
6911
7036
  "df.wise.ControlFeedback.maximum": "\u8BF7\u8F93\u5165\u4E00\u4E2A\u5C0F\u4E8E\u6216\u7B49\u4E8E {maximum} \u7684\u6570\u5B57\u3002",
6912
7037
  "df.wise.ControlFeedback.maximumDate": "\u8BF7\u8F93\u5165 {maximum} \u6216\u4E4B\u524D\u7684\u65E5\u671F",
@@ -6954,6 +7079,7 @@ var zh_HK_default = {
6954
7079
  "df.wise.ArraySchema.minItemsError": "\u8ACB\u81F3\u5C11\u6DFB\u52A0{minItems}\u9805\u3002",
6955
7080
  "df.wise.ArraySchema.removeItem": "\u79FB\u9664",
6956
7081
  "df.wise.ButtonLayout.buttonLoadingMessage": "\u6B64\u7A0B\u5E8F\u53EF\u80FD\u9700\u6642\u5E7E\u79D2",
7082
+ "df.wise.Collection.loadMoreMessage": "\u8F09\u5165\u66F4\u591A",
6957
7083
  "df.wise.ControlFeedback.maxLength": "\u8ACB\u8F38\u5165\u6700\u591A{maxLength}\u500B\u5B57\u5143\u3002",
6958
7084
  "df.wise.ControlFeedback.maximum": "\u8ACB\u8F38\u5165\u4E00\u500B\u5C0F\u65BC\u6216\u7B49\u65BC{maximum}\u7684\u6578\u5B57\u3002",
6959
7085
  "df.wise.ControlFeedback.maximumDate": "\u8ACB\u8F38\u5165{maximum}\u6216\u4E4B\u524D\u7684\u65E5\u671F\u3002",
@@ -7027,6 +7153,7 @@ export {
7027
7153
  DynamicFlowWithRef,
7028
7154
  Header10 as Header,
7029
7155
  Media2 as Media,
7156
+ createCollectionRenderer2 as createCollectionRenderer,
7030
7157
  findRendererPropsByType,
7031
7158
  getMargin2 as getMargin,
7032
7159
  makeHttpClient as makeCustomFetch,