@wise/dynamic-flow-client-internal 5.27.2 → 5.27.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/main.mjs CHANGED
@@ -64,7 +64,7 @@ var require_classnames = __commonJS({
64
64
  (function() {
65
65
  "use strict";
66
66
  var hasOwn = {}.hasOwnProperty;
67
- function classNames8() {
67
+ function classNames33() {
68
68
  var classes = "";
69
69
  for (var i = 0; i < arguments.length; i++) {
70
70
  var arg = arguments[i];
@@ -82,7 +82,7 @@ var require_classnames = __commonJS({
82
82
  return "";
83
83
  }
84
84
  if (Array.isArray(arg)) {
85
- return classNames8.apply(null, arg);
85
+ return classNames33.apply(null, arg);
86
86
  }
87
87
  if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) {
88
88
  return arg.toString();
@@ -105,14 +105,14 @@ var require_classnames = __commonJS({
105
105
  return value + newClass;
106
106
  }
107
107
  if (typeof module !== "undefined" && module.exports) {
108
- classNames8.default = classNames8;
109
- module.exports = classNames8;
108
+ classNames33.default = classNames33;
109
+ module.exports = classNames33;
110
110
  } else if (typeof define === "function" && typeof define.amd === "object" && define.amd) {
111
111
  define("classnames", [], function() {
112
- return classNames8;
112
+ return classNames33;
113
113
  });
114
114
  } else {
115
- window.classNames = classNames8;
115
+ window.classNames = classNames33;
116
116
  }
117
117
  })();
118
118
  }
@@ -127,7 +127,7 @@ import { useDynamicFlow } from "@wise/dynamic-flow-client";
127
127
  // src/dynamicFlow/telemetry/app-version.ts
128
128
  var appVersion = (
129
129
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
130
- typeof process !== "undefined" ? "5.27.2" : "0.0.0"
130
+ typeof process !== "undefined" ? "5.27.3" : "0.0.0"
131
131
  );
132
132
 
133
133
  // src/dynamicFlow/context-menu/useContextMenu.tsx
@@ -326,6 +326,7 @@ import { getDynamicSubflowRenderer } from "@wise/dynamic-flow-client";
326
326
  import { useState as useState3 } from "react";
327
327
 
328
328
  // ../renderers/src/AlertRenderer/ActionPromptComponent.tsx
329
+ var import_classnames3 = __toESM(require_classnames());
329
330
  import { ActionPrompt } from "@transferwise/components";
330
331
 
331
332
  // ../renderers/src/utils/UrnFlag.tsx
@@ -661,6 +662,17 @@ function OptionMedia(props) {
661
662
  import { jsx as jsx12 } from "react/jsx-runtime";
662
663
  var getInlineMedia = (media) => media ? /* @__PURE__ */ jsx12(Media, { media, preferAvatar: false, size: 24 }) : null;
663
664
 
665
+ // ../renderers/src/ImageRenderer/UrnFlagImage.tsx
666
+ var import_classnames = __toESM(require_classnames());
667
+
668
+ // ../renderers/src/utils/controlAndTagsToCSSClass.ts
669
+ var controlAndTagsToCSSClass = ({ control, tags }) => {
670
+ var _a;
671
+ const controlClass = control ? `df-control-${control}` : "";
672
+ const tagsClass = (_a = tags == null ? void 0 : tags.map((tag) => `df-tag-${tag}`).join(" ")) != null ? _a : "";
673
+ return [controlClass, tagsClass].join(" ").trim();
674
+ };
675
+
664
676
  // ../renderers/src/utils/layout-utils.ts
665
677
  var getMargin = (size) => {
666
678
  switch (size) {
@@ -697,18 +709,30 @@ var maxFlagSize = 600;
697
709
  function UrnFlagImage({
698
710
  accessibilityDescription,
699
711
  align,
712
+ control,
700
713
  margin,
701
714
  size,
715
+ tags,
702
716
  uri
703
717
  }) {
704
- return /* @__PURE__ */ jsx13("div", { className: `df-image ${align} ${size || "md"} ${getMargin(margin)}`, children: /* @__PURE__ */ jsx13(UrnFlag, { size: maxFlagSize, urn: uri, accessibilityDescription }) });
718
+ return /* @__PURE__ */ jsx13(
719
+ "div",
720
+ {
721
+ className: (0, import_classnames.default)(
722
+ "df-image",
723
+ align,
724
+ size || "md",
725
+ getMargin(margin),
726
+ controlAndTagsToCSSClass({ control, tags })
727
+ ),
728
+ children: /* @__PURE__ */ jsx13(UrnFlag, { size: maxFlagSize, urn: uri, accessibilityDescription })
729
+ }
730
+ );
705
731
  }
706
732
 
707
733
  // ../renderers/src/ImageRenderer/UrnIllustration.tsx
708
- import {
709
- Illustration,
710
- isIllustrationSupport3D
711
- } from "@wise/art";
734
+ var import_classnames2 = __toESM(require_classnames());
735
+ import { Illustration, isIllustrationSupport3D } from "@wise/art";
712
736
  import { useState as useState2 } from "react";
713
737
 
714
738
  // ../renderers/src/ImageRenderer/isAnimated.ts
@@ -755,8 +779,10 @@ var isUrnIllustration = (uri) => uri.startsWith(urnPrefix);
755
779
  function UrnIllustration({
756
780
  accessibilityDescription,
757
781
  align,
782
+ control,
758
783
  margin,
759
784
  size,
785
+ tags,
760
786
  uri
761
787
  }) {
762
788
  const [has3DFailed, setHas3DFailed] = useState2(false);
@@ -764,24 +790,46 @@ function UrnIllustration({
764
790
  const illustrationName = getIllustrationName(uri);
765
791
  const illustration3DName = getIllustration3DName(uri);
766
792
  if (illustration3DName && isAnimated(uri) && !has3DFailed) {
767
- return /* @__PURE__ */ jsx15("div", { className: `df-image ${align} ${getMargin(margin)}`, children: /* @__PURE__ */ jsx15(
768
- SafeIllustration3D_default,
793
+ return /* @__PURE__ */ jsx15(
794
+ "div",
769
795
  {
770
- name: illustration3DName,
771
- size: illustrationSize,
772
- onError: () => setHas3DFailed(true)
796
+ className: (0, import_classnames2.default)(
797
+ "df-image",
798
+ align,
799
+ getMargin(margin),
800
+ controlAndTagsToCSSClass({ control, tags })
801
+ ),
802
+ children: /* @__PURE__ */ jsx15(
803
+ SafeIllustration3D_default,
804
+ {
805
+ name: illustration3DName,
806
+ size: illustrationSize,
807
+ onError: () => setHas3DFailed(true)
808
+ }
809
+ )
773
810
  }
774
- ) });
811
+ );
775
812
  }
776
- return /* @__PURE__ */ jsx15("div", { className: `df-image ${align} ${getMargin(margin)}`, children: /* @__PURE__ */ jsx15(
777
- Illustration,
813
+ return /* @__PURE__ */ jsx15(
814
+ "div",
778
815
  {
779
- className: "df-illustration",
780
- name: illustrationName,
781
- size: illustrationSize,
782
- alt: accessibilityDescription
816
+ className: (0, import_classnames2.default)(
817
+ "df-image",
818
+ align,
819
+ getMargin(margin),
820
+ controlAndTagsToCSSClass({ control, tags })
821
+ ),
822
+ children: /* @__PURE__ */ jsx15(
823
+ Illustration,
824
+ {
825
+ className: "df-illustration",
826
+ name: illustrationName,
827
+ size: illustrationSize,
828
+ alt: accessibilityDescription
829
+ }
830
+ )
783
831
  }
784
- ) });
832
+ );
785
833
  }
786
834
  var getIllustrationSize = (size) => ({ xs: "small", sm: "small", md: "medium", lg: "large", xl: "large" })[size] || "medium";
787
835
  var getIllustrationName = (uri) => {
@@ -900,7 +948,9 @@ function ActionPromptComponent({
900
948
  media,
901
949
  onDismiss,
902
950
  secondaryCallToAction,
903
- title
951
+ title,
952
+ control,
953
+ tags
904
954
  }) {
905
955
  return /* @__PURE__ */ jsx19(
906
956
  ActionPrompt,
@@ -908,7 +958,7 @@ function ActionPromptComponent({
908
958
  title: title != null ? title : "",
909
959
  description: mapPromptDescription(markdown),
910
960
  sentiment: mapPromptSentiment(context),
911
- className: getMargin(margin),
961
+ className: (0, import_classnames3.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
912
962
  media: media && getActionPromptMedia(media),
913
963
  action: mapCallToAction(callToAction),
914
964
  actionSecondary: secondaryCallToAction ? mapCallToAction(secondaryCallToAction) : void 0,
@@ -918,6 +968,7 @@ function ActionPromptComponent({
918
968
  }
919
969
 
920
970
  // ../renderers/src/AlertRenderer/InfoPromptComponent.tsx
971
+ var import_classnames4 = __toESM(require_classnames());
921
972
  import { InfoPrompt } from "@transferwise/components";
922
973
  import { jsx as jsx20 } from "react/jsx-runtime";
923
974
  function InfoPromptComponent({
@@ -927,7 +978,9 @@ function InfoPromptComponent({
927
978
  markdown,
928
979
  media,
929
980
  onDismiss,
930
- title
981
+ title,
982
+ control,
983
+ tags
931
984
  }) {
932
985
  return /* @__PURE__ */ jsx20(
933
986
  InfoPrompt,
@@ -935,7 +988,7 @@ function InfoPromptComponent({
935
988
  title,
936
989
  description: mapPromptDescription(markdown),
937
990
  sentiment: mapPromptSentiment(context),
938
- className: getMargin(margin),
991
+ className: (0, import_classnames4.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
939
992
  media: media && getInfoPromptMedia(media),
940
993
  action: callToAction ? mapCallToAction(callToAction) : void 0,
941
994
  onDismiss
@@ -973,32 +1026,38 @@ var shouldRenderActionPrompt = (props) => {
973
1026
  var AlertRenderer_default = AlertRenderer;
974
1027
 
975
1028
  // ../renderers/src/BoxRenderer.tsx
976
- var import_classnames = __toESM(require_classnames());
1029
+ var import_classnames5 = __toESM(require_classnames());
977
1030
  import { jsx as jsx22 } from "react/jsx-runtime";
978
1031
  var BoxRenderer = {
979
1032
  canRenderType: "box",
980
- render: ({ children, control, margin, width }) => {
1033
+ render: ({ children, control, margin, width, tags }) => {
981
1034
  const hasFixedWidth = width !== "xl";
982
1035
  const hasBorder = control === "bordered" || control === "bordered-web";
983
1036
  const contents = /* @__PURE__ */ jsx22(
984
1037
  "div",
985
1038
  {
986
- className: (0, import_classnames.default)("df-box-renderer", {
987
- "df-box-renderer-border": hasBorder,
988
- [`df-box-renderer-width-${width}`]: hasFixedWidth,
989
- [getMargin(margin)]: !hasFixedWidth
990
- }),
1039
+ className: (0, import_classnames5.default)(
1040
+ "df-box-renderer",
1041
+ {
1042
+ "df-box-renderer-border": hasBorder,
1043
+ [`df-box-renderer-width-${width}`]: hasFixedWidth,
1044
+ [getMargin(margin)]: !hasFixedWidth
1045
+ },
1046
+ controlAndTagsToCSSClass({ control, tags })
1047
+ ),
991
1048
  children
992
1049
  }
993
1050
  );
994
- return hasFixedWidth ? /* @__PURE__ */ jsx22("div", { className: (0, import_classnames.default)("df-box-renderer-fixed-width", getMargin(margin)), children: contents }) : contents;
1051
+ return hasFixedWidth ? /* @__PURE__ */ jsx22("div", { className: (0, import_classnames5.default)("df-box-renderer-fixed-width", getMargin(margin)), children: contents }) : contents;
995
1052
  }
996
1053
  };
997
1054
  var BoxRenderer_default = BoxRenderer;
998
1055
 
999
1056
  // ../renderers/src/ButtonRenderer/AddressValidationButtonRenderer.tsx
1057
+ var import_classnames6 = __toESM(require_classnames());
1000
1058
  import { Button, InlineAlert } from "@transferwise/components";
1001
1059
  import { useIntl } from "react-intl";
1060
+ import { useEffect as useEffect2, useState as useState4 } from "react";
1002
1061
 
1003
1062
  // ../renderers/src/messages/loading-button.messages.ts
1004
1063
  import { defineMessages } from "react-intl";
@@ -1011,7 +1070,6 @@ var loading_button_messages_default = defineMessages({
1011
1070
  });
1012
1071
 
1013
1072
  // ../renderers/src/ButtonRenderer/AddressValidationButtonRenderer.tsx
1014
- import { useEffect as useEffect2, useState as useState4 } from "react";
1015
1073
  import { jsx as jsx23, jsxs as jsxs3 } from "react/jsx-runtime";
1016
1074
  var AddressValidationButtonRenderer = {
1017
1075
  canRenderType: "button",
@@ -1019,7 +1077,7 @@ var AddressValidationButtonRenderer = {
1019
1077
  render: AddressValidationButtonComponent
1020
1078
  };
1021
1079
  function AddressValidationButtonComponent(props) {
1022
- const { disabled, margin, title, stepLoadingState, onClick } = props;
1080
+ const { disabled, margin, title, stepLoadingState, onClick, control, tags } = props;
1023
1081
  const { formatMessage } = useIntl();
1024
1082
  const [spinny, setSpinny] = useState4(false);
1025
1083
  useEffect2(() => {
@@ -1032,31 +1090,60 @@ function AddressValidationButtonComponent(props) {
1032
1090
  setSpinny(false);
1033
1091
  }
1034
1092
  };
1035
- return /* @__PURE__ */ jsxs3("div", { className: `d-flex flex-column ${getMargin(margin)}`, children: [
1036
- /* @__PURE__ */ jsx23(
1037
- Button,
1038
- {
1039
- v2: true,
1040
- block: true,
1041
- disabled,
1042
- priority: "primary",
1043
- size: "lg",
1044
- loading: spinny,
1045
- onClick: () => {
1046
- setSpinny(true);
1047
- onClick();
1048
- },
1049
- onBlur,
1050
- children: title
1051
- }
1052
- ),
1053
- spinny && /* @__PURE__ */ jsx23(InlineAlert, { type: "warning", className: "m-x-auto", children: formatMessage(loading_button_messages_default.buttonLoadingMessage) })
1054
- ] });
1093
+ return /* @__PURE__ */ jsxs3(
1094
+ "div",
1095
+ {
1096
+ className: (0, import_classnames6.default)(
1097
+ "d-flex flex-column",
1098
+ getMargin(margin),
1099
+ controlAndTagsToCSSClass({ control, tags })
1100
+ ),
1101
+ children: [
1102
+ /* @__PURE__ */ jsx23(
1103
+ Button,
1104
+ {
1105
+ v2: true,
1106
+ block: true,
1107
+ disabled,
1108
+ priority: "primary",
1109
+ size: "lg",
1110
+ loading: spinny,
1111
+ onClick: () => {
1112
+ setSpinny(true);
1113
+ onClick();
1114
+ },
1115
+ onBlur,
1116
+ children: title
1117
+ }
1118
+ ),
1119
+ spinny && /* @__PURE__ */ jsx23(InlineAlert, { type: "warning", className: "m-x-auto", children: formatMessage(loading_button_messages_default.buttonLoadingMessage) })
1120
+ ]
1121
+ }
1122
+ );
1055
1123
  }
1056
1124
  var AddressValidationButtonRenderer_default = AddressValidationButtonRenderer;
1057
1125
 
1058
1126
  // ../renderers/src/ButtonRenderer/ButtonRenderer.tsx
1127
+ var import_classnames7 = __toESM(require_classnames());
1059
1128
  import { Button as Button2 } from "@transferwise/components";
1129
+ import { useEffect as useEffect3, useState as useState5 } from "react";
1130
+
1131
+ // ../renderers/src/components/Media/getAddonStartMedia.ts
1132
+ var getAddonStartMedia = (media) => {
1133
+ if (media.type === "avatar") {
1134
+ if (media.content.length > 0 && media.content[0].type === "uri" && isValidIconUrn(media.content[0].uri)) {
1135
+ return {
1136
+ type: "icon",
1137
+ value: getInlineMedia({
1138
+ type: "image",
1139
+ uri: media.content[0].uri
1140
+ })
1141
+ };
1142
+ }
1143
+ return void 0;
1144
+ }
1145
+ return { type: "icon", value: getInlineMedia(media) };
1146
+ };
1060
1147
 
1061
1148
  // ../renderers/src/utils/isButtonPriority.ts
1062
1149
  var validPriorities = ["primary", "secondary", "secondary-neutral", "tertiary"];
@@ -1081,27 +1168,6 @@ var mapLegacyButtonSize = (size) => {
1081
1168
  };
1082
1169
 
1083
1170
  // ../renderers/src/ButtonRenderer/ButtonRenderer.tsx
1084
- import { useEffect as useEffect3, useState as useState5 } from "react";
1085
-
1086
- // ../renderers/src/components/Media/getAddonStartMedia.ts
1087
- var getAddonStartMedia = (media) => {
1088
- if (media.type === "avatar") {
1089
- if (media.content.length > 0 && media.content[0].type === "uri" && isValidIconUrn(media.content[0].uri)) {
1090
- return {
1091
- type: "icon",
1092
- value: getInlineMedia({
1093
- type: "image",
1094
- uri: media.content[0].uri
1095
- })
1096
- };
1097
- }
1098
- return void 0;
1099
- }
1100
- return { type: "icon", value: getInlineMedia(media) };
1101
- };
1102
-
1103
- // ../renderers/src/ButtonRenderer/ButtonRenderer.tsx
1104
- var import_classnames2 = __toESM(require_classnames());
1105
1171
  import { jsx as jsx24 } from "react/jsx-runtime";
1106
1172
  var ButtonRenderer = {
1107
1173
  canRenderType: "button",
@@ -1135,10 +1201,15 @@ function ButtonComponent(props) {
1135
1201
  const buttonProps = {
1136
1202
  v2: true,
1137
1203
  block: control !== "small",
1138
- className: (0, import_classnames2.default)(getMargin(margin), "df-button", {
1139
- small: control === "small",
1140
- "align-center": tags == null ? void 0 : tags.includes("align-center")
1141
- }),
1204
+ className: (0, import_classnames7.default)(
1205
+ getMargin(margin),
1206
+ "df-button",
1207
+ {
1208
+ small: control === "small",
1209
+ "align-center": tags == null ? void 0 : tags.includes("align-center")
1210
+ },
1211
+ controlAndTagsToCSSClass({ control, tags })
1212
+ ),
1142
1213
  addonStart: control === "small" && media ? getAddonStartMedia(media) : void 0,
1143
1214
  disabled,
1144
1215
  priority: getPriority(control, tags),
@@ -1241,7 +1312,9 @@ function FieldInput({
1241
1312
  help,
1242
1313
  loadingState = "idle",
1243
1314
  inlineAlert,
1244
- features
1315
+ features,
1316
+ control,
1317
+ tags
1245
1318
  }) {
1246
1319
  var _a;
1247
1320
  const labelContent = label && help ? /* @__PURE__ */ jsx27(LabelContentWithHelp, { text: label, help }) : label;
@@ -1255,6 +1328,7 @@ function FieldInput({
1255
1328
  message: (_a = validation == null ? void 0 : validation.message) != null ? _a : inlineAlert == null ? void 0 : inlineAlert.content,
1256
1329
  messageLoading: loadingState !== "idle",
1257
1330
  sentiment: mapStatusToSentiment(validation, inlineAlert == null ? void 0 : inlineAlert.context),
1331
+ className: controlAndTagsToCSSClass({ control, tags }),
1258
1332
  children
1259
1333
  }
1260
1334
  ) });
@@ -1348,6 +1422,8 @@ var CheckboxComponent = (props) => {
1348
1422
  inlineAlert: rest.inlineAlert,
1349
1423
  loadingState: rest.fieldLoadingState,
1350
1424
  features: rest.features,
1425
+ control,
1426
+ tags: rest.tags,
1351
1427
  children: /* @__PURE__ */ jsx31(Checkbox, __spreadValues({ id }, checkboxProps))
1352
1428
  }
1353
1429
  );
@@ -1369,7 +1445,7 @@ var CheckboxItemComponent = (props) => {
1369
1445
  const { ref } = useScrollToError(validationState, features);
1370
1446
  return /* @__PURE__ */ jsx31("div", { ref, children: /* @__PURE__ */ jsx31(
1371
1447
  ListItem3,
1372
- __spreadValues({
1448
+ __spreadProps(__spreadValues({
1373
1449
  title,
1374
1450
  subtitle: description,
1375
1451
  additionalInfo: getAdditionalText(additionalText),
@@ -1377,7 +1453,9 @@ var CheckboxItemComponent = (props) => {
1377
1453
  disabled,
1378
1454
  prompt: getInlineAlertOrValidation(validationState, inlineAlert),
1379
1455
  control: /* @__PURE__ */ jsx31(ListItem3.Checkbox, { checked: value, onChange: () => onChange(!value) })
1380
- }, getSupportingValues(supportingValues))
1456
+ }, getSupportingValues(supportingValues)), {
1457
+ className: controlAndTagsToCSSClass(props)
1458
+ })
1381
1459
  ) });
1382
1460
  };
1383
1461
  var SwitchItemComponent = (props) => {
@@ -1397,7 +1475,7 @@ var SwitchItemComponent = (props) => {
1397
1475
  const { ref } = useScrollToError(validationState, features);
1398
1476
  return /* @__PURE__ */ jsx31("div", { ref, children: /* @__PURE__ */ jsx31(
1399
1477
  ListItem3,
1400
- __spreadValues({
1478
+ __spreadProps(__spreadValues({
1401
1479
  title,
1402
1480
  subtitle: description,
1403
1481
  additionalInfo: getAdditionalText(additionalText),
@@ -1405,7 +1483,9 @@ var SwitchItemComponent = (props) => {
1405
1483
  disabled,
1406
1484
  prompt: getInlineAlertOrValidation(validationState, inlineAlert),
1407
1485
  control: /* @__PURE__ */ jsx31(ListItem3.Switch, { checked: value, onClick: () => onChange(!value) })
1408
- }, getSupportingValues(supportingValues))
1486
+ }, getSupportingValues(supportingValues)), {
1487
+ className: controlAndTagsToCSSClass(props)
1488
+ })
1409
1489
  ) });
1410
1490
  };
1411
1491
  var getInlineAlertOrValidation = (validationState, inlineAlert) => {
@@ -2760,7 +2840,13 @@ import {
2760
2840
  import { CrossCircleFill, Search } from "@transferwise/icons";
2761
2841
  import { useIntl as useIntl5 } from "react-intl";
2762
2842
  import { jsx as jsx38 } from "react/jsx-runtime";
2763
- var SearchComponent = ({ state, status, features }) => {
2843
+ var SearchComponent = ({
2844
+ state,
2845
+ status,
2846
+ features,
2847
+ control,
2848
+ tags
2849
+ }) => {
2764
2850
  const { search } = state;
2765
2851
  const { formatMessage } = useIntl5();
2766
2852
  if (!search) {
@@ -2800,6 +2886,8 @@ var SearchComponent = ({ state, status, features }) => {
2800
2886
  help: "",
2801
2887
  label: search.title,
2802
2888
  features,
2889
+ control,
2890
+ tags,
2803
2891
  children: /* @__PURE__ */ jsx38(InputGroup, { addonStart: { content: /* @__PURE__ */ jsx38(Search, { size: 24 }) }, addonEnd: getAddon(), children: /* @__PURE__ */ jsx38(
2804
2892
  Input,
2805
2893
  {
@@ -2868,7 +2956,7 @@ var CollectionRenderer = createCollectionRenderer(() => true);
2868
2956
  var CollectionRenderer_default = CollectionRenderer;
2869
2957
 
2870
2958
  // ../renderers/src/ColumnsRenderer.tsx
2871
- var import_classnames3 = __toESM(require_classnames());
2959
+ var import_classnames8 = __toESM(require_classnames());
2872
2960
 
2873
2961
  // ../renderers/src/utils/useIsCollapsed.ts
2874
2962
  import { useEffect as useEffect8, useState as useState8 } from "react";
@@ -2897,14 +2985,9 @@ var ColumnsRenderer = {
2897
2985
  canRenderType: "columns",
2898
2986
  render: ColumnsRendererComponent
2899
2987
  };
2900
- function ColumnsRendererComponent({
2901
- bias,
2902
- margin,
2903
- startChildren,
2904
- endChildren,
2905
- tags
2906
- }) {
2988
+ function ColumnsRendererComponent(props) {
2907
2989
  var _a;
2990
+ const { bias, margin, startChildren, endChildren, tags } = props;
2908
2991
  const isCollapsed = useIsCollapsed();
2909
2992
  const reverse = isCollapsed && ((_a = tags == null ? void 0 : tags.includes(RIGHT_FIRST_STACKING)) != null ? _a : false);
2910
2993
  const startColumn = /* @__PURE__ */ jsx42("div", { className: "df-columns-renderer-column", children: startChildren });
@@ -2912,10 +2995,15 @@ function ColumnsRendererComponent({
2912
2995
  return /* @__PURE__ */ jsxs8(
2913
2996
  "div",
2914
2997
  {
2915
- className: (0, import_classnames3.default)("df-columns-renderer-container", getMargin(margin), {
2916
- "df-columns-renderer-bias-start": bias === "start",
2917
- "df-columns-renderer-bias-end": bias === "end"
2918
- }),
2998
+ className: (0, import_classnames8.default)(
2999
+ "df-columns-renderer-container",
3000
+ getMargin(margin),
3001
+ {
3002
+ "df-columns-renderer-bias-start": bias === "start",
3003
+ "df-columns-renderer-bias-end": bias === "end"
3004
+ },
3005
+ controlAndTagsToCSSClass(props)
3006
+ ),
2919
3007
  children: [
2920
3008
  reverse ? endColumn : startColumn,
2921
3009
  reverse ? startColumn : endColumn
@@ -3038,6 +3126,8 @@ var DateInputRenderer = {
3038
3126
  loadingState: props.fieldLoadingState,
3039
3127
  help,
3040
3128
  features: props.features,
3129
+ control,
3130
+ tags: props.tags,
3041
3131
  children: /* @__PURE__ */ jsx44(VariableDateInput_default, { control, inputProps })
3042
3132
  }
3043
3133
  );
@@ -3183,10 +3273,11 @@ var GroupedDecisionList = (_a) => {
3183
3273
  };
3184
3274
 
3185
3275
  // ../renderers/src/DecisionRenderer/DecisionWrapper.tsx
3276
+ var import_classnames9 = __toESM(require_classnames());
3186
3277
  import { Fragment as Fragment5, jsx as jsx46, jsxs as jsxs10 } from "react/jsx-runtime";
3187
3278
  var DecisionWrapper = (props) => {
3188
- const { title, control, margin } = props;
3189
- return /* @__PURE__ */ jsxs10("div", { className: getMargin(margin), children: [
3279
+ const { margin, control, title, tags } = props;
3280
+ return /* @__PURE__ */ jsxs10("div", { className: (0, import_classnames9.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
3190
3281
  title && /* @__PURE__ */ jsx46(Header3, { as: "h2", title }),
3191
3282
  control === "filtered" ? /* @__PURE__ */ jsx46(FilteredDecisionList, __spreadValues({}, props)) : /* @__PURE__ */ jsx46(UnfilteredDecisionList, __spreadValues({}, props))
3192
3283
  ] });
@@ -3266,6 +3357,7 @@ var renderDecisionList = ({ options, control }) => {
3266
3357
  var DecisionRenderer_default = DecisionRenderer;
3267
3358
 
3268
3359
  // ../renderers/src/DividerRenderer.tsx
3360
+ var import_classnames10 = __toESM(require_classnames());
3269
3361
  import { Divider } from "@transferwise/components";
3270
3362
  import { jsx as jsx48 } from "react/jsx-runtime";
3271
3363
  var mapControlToLevel = (control) => {
@@ -3280,7 +3372,18 @@ var mapControlToLevel = (control) => {
3280
3372
  };
3281
3373
  var DividerRenderer = {
3282
3374
  canRenderType: "divider",
3283
- render: ({ margin, control }) => /* @__PURE__ */ jsx48(Divider, { className: `m-t-0 d-block ${getMargin(margin)}`, level: mapControlToLevel(control) })
3375
+ render: ({ margin, control, tags }) => /* @__PURE__ */ jsx48(
3376
+ Divider,
3377
+ {
3378
+ className: (0, import_classnames10.default)(
3379
+ "m-t-0",
3380
+ "d-block",
3381
+ getMargin(margin),
3382
+ controlAndTagsToCSSClass({ control, tags })
3383
+ ),
3384
+ level: mapControlToLevel(control)
3385
+ }
3386
+ )
3284
3387
  };
3285
3388
  var DividerRenderer_default = DividerRenderer;
3286
3389
 
@@ -3324,7 +3427,9 @@ function ExternalConfirmationRendererComponent({
3324
3427
  url,
3325
3428
  visible,
3326
3429
  open,
3327
- onCancel
3430
+ onCancel,
3431
+ control,
3432
+ tags
3328
3433
  }) {
3329
3434
  const { formatMessage } = useIntl9();
3330
3435
  useEffect9(() => {
@@ -3355,6 +3460,7 @@ function ExternalConfirmationRendererComponent({
3355
3460
  /* @__PURE__ */ jsx49(Button5, { v2: true, block: true, className: "m-b-2", priority: "tertiary", size: "md", onClick: onCancel, children: formatMessage(external_confirmation_messages_default.cancel) })
3356
3461
  ] }) })
3357
3462
  ] }),
3463
+ className: controlAndTagsToCSSClass({ control, tags }),
3358
3464
  onClose: onCancel
3359
3465
  }
3360
3466
  );
@@ -3369,10 +3475,11 @@ function getOrigin(url) {
3369
3475
  var ExternalConfirmationRenderer_default = ExternalConfirmationRenderer;
3370
3476
 
3371
3477
  // ../renderers/src/FormRenderer.tsx
3478
+ var import_classnames11 = __toESM(require_classnames());
3372
3479
  import { jsx as jsx50 } from "react/jsx-runtime";
3373
3480
  var FormRenderer = {
3374
3481
  canRenderType: "form",
3375
- render: ({ children, margin }) => /* @__PURE__ */ jsx50("div", { className: getMargin(margin), children })
3482
+ render: ({ children, margin, control, tags }) => /* @__PURE__ */ jsx50("div", { className: (0, import_classnames11.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children })
3376
3483
  };
3377
3484
  var FormRenderer_default = FormRenderer;
3378
3485
 
@@ -3381,7 +3488,7 @@ import { Header as Header4 } from "@transferwise/components";
3381
3488
  import { jsx as jsx51, jsxs as jsxs12 } from "react/jsx-runtime";
3382
3489
  var FormSectionRenderer = {
3383
3490
  canRenderType: "form-section",
3384
- render: ({ title, description, children }) => /* @__PURE__ */ jsxs12("fieldset", { children: [
3491
+ render: ({ title, description, children, control, tags }) => /* @__PURE__ */ jsxs12("fieldset", { className: controlAndTagsToCSSClass({ control, tags }), children: [
3385
3492
  title && /* @__PURE__ */ jsx51(
3386
3493
  Header4,
3387
3494
  {
@@ -3396,15 +3503,19 @@ var FormSectionRenderer = {
3396
3503
  var FormSectionRenderer_default = FormSectionRenderer;
3397
3504
 
3398
3505
  // ../renderers/src/HeadingRenderer.tsx
3506
+ var import_classnames12 = __toESM(require_classnames());
3399
3507
  import { Display, Title } from "@transferwise/components";
3400
3508
  import { jsx as jsx52 } from "react/jsx-runtime";
3401
3509
  var HeadingRenderer = {
3402
3510
  canRenderType: "heading",
3403
- render: (props) => /* @__PURE__ */ jsx52(Heading, __spreadValues({}, props))
3511
+ render: Heading
3404
3512
  };
3405
3513
  function Heading(props) {
3406
3514
  const { text, size, align, margin, control } = props;
3407
- const className = getTextAlignmentAndMargin({ align, margin });
3515
+ const className = (0, import_classnames12.default)(
3516
+ getTextAlignmentAndMargin({ align, margin }),
3517
+ controlAndTagsToCSSClass(props)
3518
+ );
3408
3519
  return control === "display" ? /* @__PURE__ */ jsx52(DisplayHeading, { size, text, className }) : /* @__PURE__ */ jsx52(StandardHeading, { size, text, className });
3409
3520
  }
3410
3521
  function DisplayHeading({ size, text, className }) {
@@ -3440,6 +3551,7 @@ var getTitleTypeBySize = (size) => {
3440
3551
  var HeadingRenderer_default = HeadingRenderer;
3441
3552
 
3442
3553
  // ../renderers/src/ImageRenderer/UrlImage.tsx
3554
+ var import_classnames13 = __toESM(require_classnames());
3443
3555
  import { Image } from "@transferwise/components";
3444
3556
  import { useEffect as useEffect10, useState as useState10 } from "react";
3445
3557
 
@@ -3455,8 +3567,10 @@ import { jsx as jsx53 } from "react/jsx-runtime";
3455
3567
  function UrlImage({
3456
3568
  accessibilityDescription,
3457
3569
  align,
3570
+ control,
3458
3571
  margin,
3459
3572
  size,
3573
+ tags,
3460
3574
  uri,
3461
3575
  httpClient
3462
3576
  }) {
@@ -3466,16 +3580,28 @@ function UrlImage({
3466
3580
  void getImageSource(httpClient, uri).then(setImageSource);
3467
3581
  }
3468
3582
  }, [uri, httpClient]);
3469
- return /* @__PURE__ */ jsx53("div", { className: `df-image ${align} ${size || "md"} ${getMargin(margin)}`, children: /* @__PURE__ */ jsx53(
3470
- Image,
3583
+ return /* @__PURE__ */ jsx53(
3584
+ "div",
3471
3585
  {
3472
- className: "df-reserve-space",
3473
- alt: accessibilityDescription != null ? accessibilityDescription : "",
3474
- src: imageSource,
3475
- stretch: true,
3476
- shrink: true
3586
+ className: (0, import_classnames13.default)(
3587
+ "df-image",
3588
+ align,
3589
+ size || "md",
3590
+ getMargin(margin),
3591
+ controlAndTagsToCSSClass({ control, tags })
3592
+ ),
3593
+ children: /* @__PURE__ */ jsx53(
3594
+ Image,
3595
+ {
3596
+ className: "df-reserve-space",
3597
+ alt: accessibilityDescription != null ? accessibilityDescription : "",
3598
+ src: imageSource,
3599
+ stretch: true,
3600
+ shrink: true
3601
+ }
3602
+ )
3477
3603
  }
3478
- ) });
3604
+ );
3479
3605
  }
3480
3606
  var readImageBlobAsDataURL = async (imageBlob) => (
3481
3607
  // we can safely assume the type of reader.result is string
@@ -3520,16 +3646,17 @@ var ImageRenderer = {
3520
3646
  var ImageRenderer_default = ImageRenderer;
3521
3647
 
3522
3648
  // ../renderers/src/InstructionsRenderer.tsx
3649
+ var import_classnames14 = __toESM(require_classnames());
3523
3650
  import { Header as Header5, InstructionsList } from "@transferwise/components";
3524
3651
  import { jsx as jsx55, jsxs as jsxs13 } from "react/jsx-runtime";
3525
3652
  var doContext = ["positive", "neutral", "proposition"];
3526
3653
  var dontContext = ["warning", "negative"];
3527
3654
  var InstructionsRenderer = {
3528
3655
  canRenderType: "instructions",
3529
- render: ({ items, margin, title }) => {
3656
+ render: ({ items, margin, title, control, tags }) => {
3530
3657
  const dos = items.filter((item) => doContext.includes(item.context)).map(({ text }) => text);
3531
3658
  const donts = items.filter((item) => dontContext.includes(item.context)).map(({ text }) => text);
3532
- return /* @__PURE__ */ jsxs13("div", { className: getMargin(margin), children: [
3659
+ return /* @__PURE__ */ jsxs13("div", { className: (0, import_classnames14.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
3533
3660
  title ? /* @__PURE__ */ jsx55(Header5, { title }) : null,
3534
3661
  /* @__PURE__ */ jsx55(InstructionsList, { dos, donts })
3535
3662
  ] });
@@ -3589,6 +3716,8 @@ var IntegerInputRenderer = {
3589
3716
  loadingState: props.fieldLoadingState,
3590
3717
  help,
3591
3718
  features: props.features,
3719
+ control: props.control,
3720
+ tags: props.tags,
3592
3721
  children: /* @__PURE__ */ jsx56(InputGroup2, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx56(
3593
3722
  Input2,
3594
3723
  __spreadValues({
@@ -3612,6 +3741,7 @@ var IntegerInputRenderer = {
3612
3741
  var IntegerInputRenderer_default = IntegerInputRenderer;
3613
3742
 
3614
3743
  // ../renderers/src/ListRenderer.tsx
3744
+ var import_classnames15 = __toESM(require_classnames());
3615
3745
  import { ListItem as ListItem8 } from "@transferwise/components";
3616
3746
 
3617
3747
  // ../renderers/src/components/Header.tsx
@@ -3632,7 +3762,7 @@ var getHeaderAction = (callToAction) => {
3632
3762
  import { jsx as jsx58, jsxs as jsxs14 } from "react/jsx-runtime";
3633
3763
  var ListRenderer = {
3634
3764
  canRenderType: "list",
3635
- render: ({ callToAction, control, margin, items, tags, title }) => /* @__PURE__ */ jsxs14("div", { className: getMargin(margin), children: [
3765
+ render: ({ callToAction, control, margin, items, tags, title }) => /* @__PURE__ */ jsxs14("div", { className: (0, import_classnames15.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
3636
3766
  /* @__PURE__ */ jsx58(Header, { title, callToAction }),
3637
3767
  items.map((item) => {
3638
3768
  var _a, _b;
@@ -3670,15 +3800,23 @@ var ListRenderer = {
3670
3800
  var ListRenderer_default = ListRenderer;
3671
3801
 
3672
3802
  // ../renderers/src/LoadingIndicatorRenderer.tsx
3803
+ var import_classnames16 = __toESM(require_classnames());
3673
3804
  import { Loader } from "@transferwise/components";
3674
3805
  import { jsx as jsx59 } from "react/jsx-runtime";
3675
3806
  var LoadingIndicatorRenderer = {
3676
3807
  canRenderType: "loading-indicator",
3677
- render: ({ margin, size }) => /* @__PURE__ */ jsx59(
3808
+ render: ({ size, margin, control, tags }) => /* @__PURE__ */ jsx59(
3678
3809
  Loader,
3679
3810
  {
3680
3811
  size,
3681
- classNames: { "tw-loader": `tw-loader m-x-auto ${getMargin(margin)}` },
3812
+ classNames: {
3813
+ "tw-loader": (0, import_classnames16.default)(
3814
+ "tw-loader",
3815
+ "m-x-auto",
3816
+ getMargin(margin),
3817
+ controlAndTagsToCSSClass({ control, tags })
3818
+ )
3819
+ },
3682
3820
  "data-testid": "loading-indicator"
3683
3821
  }
3684
3822
  )
@@ -3686,26 +3824,39 @@ var LoadingIndicatorRenderer = {
3686
3824
  var LoadingIndicatorRenderer_default = LoadingIndicatorRenderer;
3687
3825
 
3688
3826
  // ../renderers/src/MarkdownRenderer.tsx
3827
+ var import_classnames17 = __toESM(require_classnames());
3689
3828
  import { Markdown as Markdown4 } from "@transferwise/components";
3690
- var import_classnames4 = __toESM(require_classnames());
3691
3829
  import { jsx as jsx60 } from "react/jsx-runtime";
3692
3830
  var MarkdownRenderer = {
3693
3831
  canRenderType: "markdown",
3694
- render: ({ content, align, margin, size }) => /* @__PURE__ */ jsx60("div", { className: getTextAlignmentAndMargin({ align, margin }), children: /* @__PURE__ */ jsx60(
3695
- Markdown4,
3696
- {
3697
- className: (0, import_classnames4.default)(
3698
- "df-markdown",
3699
- ["xs", "sm"].includes(size) ? "np-text-body-default" : "np-text-body-large"
3700
- ),
3701
- config: { link: { target: "_blank" } },
3702
- children: content
3703
- }
3704
- ) })
3832
+ render: ({ content, align, margin, size, control, tags }) => {
3833
+ const isLarge = !["xs", "sm"].includes(size);
3834
+ return /* @__PURE__ */ jsx60(
3835
+ "div",
3836
+ {
3837
+ className: (0, import_classnames17.default)(
3838
+ getTextAlignmentAndMargin({ align, margin }),
3839
+ controlAndTagsToCSSClass({ control, tags })
3840
+ ),
3841
+ children: /* @__PURE__ */ jsx60(
3842
+ Markdown4,
3843
+ {
3844
+ className: (0, import_classnames17.default)("df-markdown", {
3845
+ "np-text-body-large": isLarge,
3846
+ "np-text-body-default": !isLarge
3847
+ }),
3848
+ config: { link: { target: "_blank" } },
3849
+ children: content
3850
+ }
3851
+ )
3852
+ }
3853
+ );
3854
+ }
3705
3855
  };
3706
3856
  var MarkdownRenderer_default = MarkdownRenderer;
3707
3857
 
3708
3858
  // ../renderers/src/MediaRenderer.tsx
3859
+ var import_classnames18 = __toESM(require_classnames());
3709
3860
  import { jsx as jsx61 } from "react/jsx-runtime";
3710
3861
  var MediaRenderer = {
3711
3862
  canRenderType: "media",
@@ -3725,9 +3876,22 @@ var AvatarMediaRendererComponent = ({
3725
3876
  media,
3726
3877
  align,
3727
3878
  margin,
3728
- size
3879
+ size,
3880
+ control,
3881
+ tags
3729
3882
  }) => {
3730
- return /* @__PURE__ */ jsx61("div", { className: `df-media-layout-avatar ${align} ${getMargin(margin)}`, children: /* @__PURE__ */ jsx61(Media, { media, size: mapAvatarMediaSize(size) }) });
3883
+ return /* @__PURE__ */ jsx61(
3884
+ "div",
3885
+ {
3886
+ className: (0, import_classnames18.default)(
3887
+ "df-media-layout-avatar",
3888
+ align,
3889
+ getMargin(margin),
3890
+ controlAndTagsToCSSClass({ control, tags })
3891
+ ),
3892
+ children: /* @__PURE__ */ jsx61(Media, { media, size: mapAvatarMediaSize(size) })
3893
+ }
3894
+ );
3731
3895
  };
3732
3896
  var ImageMediaRendererComponent = (_a) => {
3733
3897
  var _b = _a, {
@@ -3753,6 +3917,7 @@ var mapAvatarMediaSize = (size) => {
3753
3917
  };
3754
3918
 
3755
3919
  // ../renderers/src/ModalLayoutRenderer.tsx
3920
+ var import_classnames19 = __toESM(require_classnames());
3756
3921
  import { Button as Button6, Modal as Modal2 } from "@transferwise/components";
3757
3922
  import { useState as useState11 } from "react";
3758
3923
  import { jsx as jsx62, jsxs as jsxs15 } from "react/jsx-runtime";
@@ -3761,10 +3926,10 @@ var ModalLayoutRenderer = {
3761
3926
  render: (props) => /* @__PURE__ */ jsx62(DFModal, __spreadValues({}, props))
3762
3927
  };
3763
3928
  var ModalLayoutRenderer_default = ModalLayoutRenderer;
3764
- function DFModal({ content, margin, trigger }) {
3929
+ function DFModal({ content, margin, trigger, control, tags }) {
3765
3930
  const [visible, setVisible] = useState11(false);
3766
3931
  const { children, title } = content;
3767
- return /* @__PURE__ */ jsxs15("div", { className: getMargin(margin), children: [
3932
+ return /* @__PURE__ */ jsxs15("div", { className: (0, import_classnames19.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
3768
3933
  /* @__PURE__ */ jsx62(Button6, { v2: true, priority: "tertiary", block: true, onClick: () => setVisible(true), children: trigger.title }),
3769
3934
  /* @__PURE__ */ jsx62(
3770
3935
  Modal2,
@@ -3785,8 +3950,17 @@ import { Modal as Modal3 } from "@transferwise/components";
3785
3950
  import { jsx as jsx63 } from "react/jsx-runtime";
3786
3951
  var ModalRenderer = {
3787
3952
  canRenderType: "modal",
3788
- render: ({ title, children, open, onClose }) => {
3789
- return /* @__PURE__ */ jsx63(Modal3, { open, title, body: children, onClose });
3953
+ render: ({ title, children, open, onClose, control, tags }) => {
3954
+ return /* @__PURE__ */ jsx63(
3955
+ Modal3,
3956
+ {
3957
+ open,
3958
+ title,
3959
+ body: children,
3960
+ className: controlAndTagsToCSSClass({ control, tags }),
3961
+ onClose
3962
+ }
3963
+ );
3790
3964
  }
3791
3965
  };
3792
3966
 
@@ -3812,6 +3986,9 @@ function MoneyInputRendererComponent(props) {
3812
3986
  selectedCurrencyIndex,
3813
3987
  placeholder,
3814
3988
  currencies,
3989
+ features,
3990
+ control,
3991
+ tags,
3815
3992
  onAmountChange,
3816
3993
  onCurrencyChange
3817
3994
  } = props;
@@ -3829,7 +4006,9 @@ function MoneyInputRendererComponent(props) {
3829
4006
  description,
3830
4007
  validation: validationState,
3831
4008
  help,
3832
- features: props.features,
4009
+ features,
4010
+ control,
4011
+ tags,
3833
4012
  children: /* @__PURE__ */ jsx64(
3834
4013
  MoneyInput,
3835
4014
  {
@@ -3908,12 +4087,13 @@ function InlineComponent(props) {
3908
4087
  id,
3909
4088
  description,
3910
4089
  disabled,
4090
+ control,
3911
4091
  features,
3912
4092
  help,
3913
4093
  options,
3914
4094
  selectedIndices,
3915
- tags,
3916
4095
  title,
4096
+ tags,
3917
4097
  validationState,
3918
4098
  onSelect
3919
4099
  } = props;
@@ -3945,6 +4125,8 @@ function InlineComponent(props) {
3945
4125
  description,
3946
4126
  validation: validationState,
3947
4127
  features,
4128
+ control,
4129
+ tags,
3948
4130
  children: filteredOptions.map((option) => {
3949
4131
  var _a;
3950
4132
  const {
@@ -4021,6 +4203,8 @@ function DefaultComponent(props) {
4021
4203
  selectedIndices,
4022
4204
  title,
4023
4205
  validationState,
4206
+ control,
4207
+ tags,
4024
4208
  onSelect
4025
4209
  } = props;
4026
4210
  const mergedIndices = stagedIndices != null ? stagedIndices : selectedIndices;
@@ -4061,6 +4245,8 @@ function DefaultComponent(props) {
4061
4245
  description,
4062
4246
  validation: validationState,
4063
4247
  features,
4248
+ control,
4249
+ tags,
4064
4250
  children: /* @__PURE__ */ jsx66(
4065
4251
  SelectInput,
4066
4252
  __spreadValues({
@@ -4113,6 +4299,8 @@ function InlineCheckboxComponent(props) {
4113
4299
  selectedIndices,
4114
4300
  title,
4115
4301
  validationState,
4302
+ control,
4303
+ tags,
4116
4304
  onSelect
4117
4305
  } = props;
4118
4306
  return /* @__PURE__ */ jsx67(
@@ -4124,6 +4312,8 @@ function InlineCheckboxComponent(props) {
4124
4312
  description,
4125
4313
  validation: validationState,
4126
4314
  features,
4315
+ control,
4316
+ tags,
4127
4317
  children: options.map((option, index) => {
4128
4318
  var _a;
4129
4319
  const {
@@ -4170,8 +4360,8 @@ var MultiSelectInputRenderer = {
4170
4360
  import { Status, UploadInput } from "@transferwise/components";
4171
4361
 
4172
4362
  // ../renderers/src/components/UploadFieldInput.tsx
4173
- var import_classnames5 = __toESM(require_classnames());
4174
4363
  import { InlineAlert as InlineAlert2 } from "@transferwise/components";
4364
+ var import_classnames20 = __toESM(require_classnames());
4175
4365
  import { jsx as jsx69, jsxs as jsxs17 } from "react/jsx-runtime";
4176
4366
  function UploadFieldInput({
4177
4367
  id,
@@ -4180,7 +4370,9 @@ function UploadFieldInput({
4180
4370
  description,
4181
4371
  help,
4182
4372
  validation,
4183
- features
4373
+ features,
4374
+ control,
4375
+ tags
4184
4376
  }) {
4185
4377
  const labelContent = label && help ? /* @__PURE__ */ jsx69(LabelContentWithHelp, { text: label, help }) : label;
4186
4378
  const descriptionId = description ? `${id}-description` : void 0;
@@ -4189,9 +4381,13 @@ function UploadFieldInput({
4189
4381
  "div",
4190
4382
  {
4191
4383
  ref,
4192
- className: (0, import_classnames5.default)("form-group d-block", {
4193
- "has-error": (validation == null ? void 0 : validation.status) === "invalid"
4194
- }),
4384
+ className: (0, import_classnames20.default)(
4385
+ "form-group d-block",
4386
+ {
4387
+ "has-error": (validation == null ? void 0 : validation.status) === "invalid"
4388
+ },
4389
+ controlAndTagsToCSSClass({ control, tags })
4390
+ ),
4195
4391
  children: [
4196
4392
  /* @__PURE__ */ jsx69("label", { htmlFor: id, className: "control-label", children: labelContent }),
4197
4393
  children,
@@ -4248,7 +4444,9 @@ var MultiUploadInputRenderer = {
4248
4444
  validationState,
4249
4445
  value,
4250
4446
  onInsertFile,
4251
- onRemoveFile
4447
+ onRemoveFile,
4448
+ control,
4449
+ tags
4252
4450
  } = props;
4253
4451
  const onUploadFile = async (formData) => {
4254
4452
  const file = formData.get("file");
@@ -4265,6 +4463,8 @@ var MultiUploadInputRenderer = {
4265
4463
  validation: validationState,
4266
4464
  help,
4267
4465
  features,
4466
+ control,
4467
+ tags,
4268
4468
  children: /* @__PURE__ */ jsx70(
4269
4469
  UploadInput,
4270
4470
  {
@@ -4319,6 +4519,8 @@ var NumberInputRenderer = {
4319
4519
  loadingState: props.fieldLoadingState,
4320
4520
  help,
4321
4521
  features: props.features,
4522
+ control: props.control,
4523
+ tags: props.tags,
4322
4524
  children: /* @__PURE__ */ jsx71(InputGroup3, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx71(
4323
4525
  Input3,
4324
4526
  __spreadValues({
@@ -4340,6 +4542,8 @@ var NumberInputRenderer = {
4340
4542
  var NumberInputRenderer_default = NumberInputRenderer;
4341
4543
 
4342
4544
  // ../renderers/src/ParagraphRenderer.tsx
4545
+ var import_classnames21 = __toESM(require_classnames());
4546
+ import { Button as Button7, Input as Input4 } from "@transferwise/components";
4343
4547
  import { useIntl as useIntl13 } from "react-intl";
4344
4548
 
4345
4549
  // ../renderers/src/hooks/useSnackBarIfAvailable.ts
@@ -4351,10 +4555,6 @@ function useSnackBarIfAvailable() {
4351
4555
  };
4352
4556
  }
4353
4557
 
4354
- // ../renderers/src/ParagraphRenderer.tsx
4355
- var import_classnames6 = __toESM(require_classnames());
4356
- import { Button as Button7, Input as Input4 } from "@transferwise/components";
4357
-
4358
4558
  // ../renderers/src/messages/paragraph.messages.ts
4359
4559
  import { defineMessages as defineMessages10 } from "react-intl";
4360
4560
  var paragraph_messages_default = defineMessages10({
@@ -4376,8 +4576,12 @@ var ParagraphRenderer = {
4376
4576
  canRenderType: "paragraph",
4377
4577
  render: (props) => /* @__PURE__ */ jsx72(Paragraph, __spreadValues({}, props))
4378
4578
  };
4379
- function Paragraph({ align, control, margin, size, text }) {
4380
- const className = getTextAlignmentAndMargin({ align, margin });
4579
+ function Paragraph(props) {
4580
+ const { align, control, margin, size, text } = props;
4581
+ const className = (0, import_classnames21.default)(
4582
+ getTextAlignmentAndMargin({ align, margin }),
4583
+ controlAndTagsToCSSClass(props)
4584
+ );
4381
4585
  return control === "copyable" ? /* @__PURE__ */ jsx72(CopyableParagraph, { className, align, text }) : /* @__PURE__ */ jsx72(
4382
4586
  "p",
4383
4587
  {
@@ -4405,7 +4609,7 @@ function CopyableParagraph({
4405
4609
  type: "text",
4406
4610
  value: text,
4407
4611
  readOnly: true,
4408
- className: (0, import_classnames6.default)("text-ellipsis", inputAlignmentClasses)
4612
+ className: (0, import_classnames21.default)("text-ellipsis", inputAlignmentClasses)
4409
4613
  }
4410
4614
  ),
4411
4615
  /* @__PURE__ */ jsx72(Button7, { v2: true, block: true, onClick: copy, children: formatMessage(paragraph_messages_default.copy) })
@@ -4414,16 +4618,17 @@ function CopyableParagraph({
4414
4618
  var ParagraphRenderer_default = ParagraphRenderer;
4415
4619
 
4416
4620
  // ../renderers/src/ProgressRenderer.tsx
4621
+ var import_classnames22 = __toESM(require_classnames());
4417
4622
  import { ProgressBar } from "@transferwise/components";
4418
4623
  import { jsx as jsx73 } from "react/jsx-runtime";
4419
4624
  var ProgressRenderer = {
4420
4625
  canRenderType: "progress",
4421
- render: ({ uid, title, help, progress, progressText, margin, description }) => {
4626
+ render: ({ uid, title, help, progress, progressText, margin, description, control, tags }) => {
4422
4627
  return /* @__PURE__ */ jsx73(
4423
4628
  ProgressBar,
4424
4629
  {
4425
4630
  id: uid,
4426
- className: getMargin(margin),
4631
+ className: (0, import_classnames22.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
4427
4632
  title: title && help ? /* @__PURE__ */ jsx73(LabelContentWithHelp, { text: title, help }) : title,
4428
4633
  description,
4429
4634
  progress: {
@@ -4437,7 +4642,7 @@ var ProgressRenderer = {
4437
4642
  };
4438
4643
 
4439
4644
  // ../renderers/src/RepeatableRenderer.tsx
4440
- var import_classnames7 = __toESM(require_classnames());
4645
+ var import_classnames23 = __toESM(require_classnames());
4441
4646
  import { Button as Button8, Header as Header6, InlineAlert as InlineAlert3, Modal as Modal4, NavigationOption } from "@transferwise/components";
4442
4647
  import { Plus } from "@transferwise/icons";
4443
4648
  import { useState as useState14 } from "react";
@@ -4514,13 +4719,13 @@ function Repeatable(props) {
4514
4719
  setOpenModalType(null);
4515
4720
  };
4516
4721
  return /* @__PURE__ */ jsxs19(Fragment9, { children: [
4517
- /* @__PURE__ */ jsxs19("div", { ref, children: [
4722
+ /* @__PURE__ */ jsxs19("div", { ref, className: controlAndTagsToCSSClass(props), children: [
4518
4723
  title && /* @__PURE__ */ jsx74(Header6, { title }),
4519
4724
  description && /* @__PURE__ */ jsx74("p", { children: description }),
4520
4725
  /* @__PURE__ */ jsxs19(
4521
4726
  "div",
4522
4727
  {
4523
- className: (0, import_classnames7.default)("form-group", {
4728
+ className: (0, import_classnames23.default)("form-group", {
4524
4729
  "has-error": (validationState == null ? void 0 : validationState.status) === "invalid"
4525
4730
  }),
4526
4731
  children: [
@@ -4585,13 +4790,14 @@ function ItemSummaryOption({
4585
4790
  var RepeatableRenderer_default = RepeatableRenderer;
4586
4791
 
4587
4792
  // ../renderers/src/ReviewLegacyRenderer.tsx
4793
+ var import_classnames24 = __toESM(require_classnames());
4588
4794
  import { DefinitionList } from "@transferwise/components";
4589
4795
  import { Fragment as Fragment10, jsx as jsx75, jsxs as jsxs20 } from "react/jsx-runtime";
4590
4796
  var ReviewRenderer = {
4591
4797
  canRenderType: "review",
4592
- render: ({ callToAction, control, fields, margin, title, trackEvent }) => {
4798
+ render: ({ callToAction, control, fields, margin, title, trackEvent, tags }) => {
4593
4799
  const orientation = mapControlToDefinitionListLayout(control);
4594
- return /* @__PURE__ */ jsxs20("div", { className: getMargin(margin), children: [
4800
+ return /* @__PURE__ */ jsxs20("div", { className: (0, import_classnames24.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
4595
4801
  /* @__PURE__ */ jsx75(Header, { title, callToAction }),
4596
4802
  /* @__PURE__ */ jsx75("div", { className: margin, children: /* @__PURE__ */ jsx75(
4597
4803
  DefinitionList,
@@ -4641,6 +4847,7 @@ var getFieldLabel = (label, help, onClick) => {
4641
4847
  };
4642
4848
 
4643
4849
  // ../renderers/src/ReviewRenderer.tsx
4850
+ var import_classnames25 = __toESM(require_classnames());
4644
4851
  import { ListItem as ListItem10, Markdown as Markdown5, Popover } from "@transferwise/components";
4645
4852
  import { QuestionMarkCircle } from "@transferwise/icons";
4646
4853
  import { useIntl as useIntl15 } from "react-intl";
@@ -4666,7 +4873,7 @@ var Review = ({
4666
4873
  trackEvent
4667
4874
  }) => {
4668
4875
  const intl = useIntl15();
4669
- return /* @__PURE__ */ jsxs21("div", { className: getMargin(margin), children: [
4876
+ return /* @__PURE__ */ jsxs21("div", { className: (0, import_classnames25.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
4670
4877
  /* @__PURE__ */ jsx76(Header, { title, callToAction }),
4671
4878
  fields.map((field) => {
4672
4879
  var _a, _b, _c;
@@ -4745,10 +4952,12 @@ function BlockSearchRendererComponent({
4745
4952
  id,
4746
4953
  hint,
4747
4954
  isLoading,
4955
+ control,
4748
4956
  features,
4749
4957
  margin,
4750
4958
  query,
4751
4959
  state,
4960
+ tags,
4752
4961
  title,
4753
4962
  trackEvent,
4754
4963
  onChange
@@ -4765,6 +4974,8 @@ function BlockSearchRendererComponent({
4765
4974
  help: "",
4766
4975
  label: title,
4767
4976
  features,
4977
+ control,
4978
+ tags,
4768
4979
  children: /* @__PURE__ */ jsx78(InputGroup4, { addonStart: { content: /* @__PURE__ */ jsx78(Search2, { size: 24 }) }, children: /* @__PURE__ */ jsx78(
4769
4980
  Input5,
4770
4981
  {
@@ -4853,9 +5064,11 @@ function InlineSearchRenderer({
4853
5064
  id,
4854
5065
  hint,
4855
5066
  isLoading,
5067
+ control,
4856
5068
  features,
4857
5069
  margin,
4858
5070
  state,
5071
+ tags,
4859
5072
  title,
4860
5073
  onChange,
4861
5074
  trackEvent
@@ -4871,6 +5084,8 @@ function InlineSearchRenderer({
4871
5084
  help: "",
4872
5085
  label: title,
4873
5086
  features,
5087
+ control,
5088
+ tags,
4874
5089
  children: /* @__PURE__ */ jsx79(
4875
5090
  Typeahead,
4876
5091
  {
@@ -4946,6 +5161,7 @@ var SearchRenderer = {
4946
5161
  var SearchRenderer_default = SearchRenderer;
4947
5162
 
4948
5163
  // ../renderers/src/SectionRenderer.tsx
5164
+ var import_classnames26 = __toESM(require_classnames());
4949
5165
  import { Header as Header7 } from "@transferwise/components";
4950
5166
 
4951
5167
  // ../renderers/src/utils/getHeaderAction.tsx
@@ -4973,11 +5189,17 @@ var getHeaderAction2 = (callToAction) => {
4973
5189
  import { jsx as jsx81, jsxs as jsxs24 } from "react/jsx-runtime";
4974
5190
  var SectionRenderer = {
4975
5191
  canRenderType: "section",
4976
- render: ({ children, callToAction, margin, title }) => {
4977
- return /* @__PURE__ */ jsxs24("section", { className: getMargin(margin), children: [
4978
- (title || callToAction) && /* @__PURE__ */ jsx81(Header7, { title: title != null ? title : "", action: getHeaderAction2(callToAction) }),
4979
- children
4980
- ] });
5192
+ render: ({ children, callToAction, margin, title, control, tags }) => {
5193
+ return /* @__PURE__ */ jsxs24(
5194
+ "section",
5195
+ {
5196
+ className: (0, import_classnames26.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
5197
+ children: [
5198
+ (title || callToAction) && /* @__PURE__ */ jsx81(Header7, { title: title != null ? title : "", action: getHeaderAction2(callToAction) }),
5199
+ children
5200
+ ]
5201
+ }
5202
+ );
4981
5203
  }
4982
5204
  };
4983
5205
  var SectionRenderer_default = SectionRenderer;
@@ -4997,6 +5219,8 @@ function RadioInputRendererComponent(props) {
4997
5219
  options,
4998
5220
  selectedIndex,
4999
5221
  validationState,
5222
+ control,
5223
+ tags,
5000
5224
  onSelect
5001
5225
  } = props;
5002
5226
  return /* @__PURE__ */ jsxs25(Fragment12, { children: [
@@ -5009,6 +5233,8 @@ function RadioInputRendererComponent(props) {
5009
5233
  description,
5010
5234
  validation: validationState,
5011
5235
  features,
5236
+ control,
5237
+ tags,
5012
5238
  children: /* @__PURE__ */ jsx82("span", { children: /* @__PURE__ */ jsx82(
5013
5239
  RadioGroup,
5014
5240
  {
@@ -5047,6 +5273,8 @@ function TabInputRendererComponent(props) {
5047
5273
  options,
5048
5274
  selectedIndex,
5049
5275
  validationState,
5276
+ control,
5277
+ tags,
5050
5278
  onSelect
5051
5279
  } = props;
5052
5280
  useEffect12(() => {
@@ -5064,6 +5292,8 @@ function TabInputRendererComponent(props) {
5064
5292
  description,
5065
5293
  validation: validationState,
5066
5294
  features,
5295
+ control,
5296
+ tags,
5067
5297
  children: /* @__PURE__ */ jsx83(
5068
5298
  Tabs,
5069
5299
  {
@@ -5104,6 +5334,8 @@ function SelectInputRendererComponent(props) {
5104
5334
  required,
5105
5335
  selectedIndex,
5106
5336
  validationState,
5337
+ control,
5338
+ tags,
5107
5339
  onSelect
5108
5340
  } = props;
5109
5341
  const items = options.map(
@@ -5144,6 +5376,8 @@ function SelectInputRendererComponent(props) {
5144
5376
  description,
5145
5377
  validation: validationState,
5146
5378
  features,
5379
+ control,
5380
+ tags,
5147
5381
  children: /* @__PURE__ */ jsx84(
5148
5382
  SelectInput2,
5149
5383
  __spreadValues({
@@ -5179,6 +5413,8 @@ function SegmentedInputRendererComponent(props) {
5179
5413
  options,
5180
5414
  selectedIndex,
5181
5415
  validationState,
5416
+ control,
5417
+ tags,
5182
5418
  onSelect
5183
5419
  } = props;
5184
5420
  useEffect13(() => {
@@ -5196,6 +5432,8 @@ function SegmentedInputRendererComponent(props) {
5196
5432
  description,
5197
5433
  validation: validationState,
5198
5434
  features,
5435
+ control,
5436
+ tags,
5199
5437
  children: /* @__PURE__ */ jsx85(
5200
5438
  SegmentedControl,
5201
5439
  {
@@ -5236,7 +5474,7 @@ function RadioItemRendererComponent(props) {
5236
5474
  onSelect
5237
5475
  } = props;
5238
5476
  const { ref } = useScrollToError(validationState, features);
5239
- return /* @__PURE__ */ jsxs29("div", { ref, children: [
5477
+ return /* @__PURE__ */ jsxs29("div", { ref, className: controlAndTagsToCSSClass(props), children: [
5240
5478
  rootTitle && /* @__PURE__ */ jsx86(
5241
5479
  Header8,
5242
5480
  {
@@ -5295,11 +5533,12 @@ var SelectInputRenderer = {
5295
5533
  var SelectInputRenderer_default = SelectInputRenderer;
5296
5534
 
5297
5535
  // ../renderers/src/StatusListRenderer.tsx
5536
+ var import_classnames27 = __toESM(require_classnames());
5298
5537
  import { AvatarView as AvatarView4, Header as Header9, ListItem as ListItem13 } from "@transferwise/components";
5299
5538
  import { jsx as jsx88, jsxs as jsxs30 } from "react/jsx-runtime";
5300
5539
  var StatusListRenderer = {
5301
5540
  canRenderType: "status-list",
5302
- render: ({ margin, items, title }) => /* @__PURE__ */ jsxs30("div", { className: getMargin(margin), children: [
5541
+ render: ({ margin, items, title, control, tags }) => /* @__PURE__ */ jsxs30("div", { className: (0, import_classnames27.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
5303
5542
  title ? /* @__PURE__ */ jsx88(Header9, { title }) : null,
5304
5543
  items.map((item) => {
5305
5544
  const { callToAction, description, title: itemTitle } = item;
@@ -5347,6 +5586,9 @@ var mapStatus = (status) => {
5347
5586
  };
5348
5587
  var StatusListRenderer_default = StatusListRenderer;
5349
5588
 
5589
+ // ../renderers/src/step/SplashCelebrationStepRenderer.tsx
5590
+ var import_classnames28 = __toESM(require_classnames());
5591
+
5350
5592
  // ../renderers/src/utils/useCustomTheme.ts
5351
5593
  import { useTheme } from "@wise/components-theming";
5352
5594
  import { useEffect as useEffect14, useMemo } from "react";
@@ -5490,17 +5732,24 @@ var SplashCelebrationStepRenderer = {
5490
5732
  render: SplashCelebrationStepRendererComponent
5491
5733
  };
5492
5734
  function SplashCelebrationStepRendererComponent(props) {
5493
- const { back, title, description, toolbar, children, footer, tags, trackEvent } = props;
5735
+ const { back, title, description, toolbar, children, footer, control, tags, trackEvent } = props;
5494
5736
  useCustomTheme("forest-green", trackEvent);
5495
- return /* @__PURE__ */ jsxs35("div", { className: "splash-screen m-t-5", children: [
5496
- /* @__PURE__ */ jsx93(TopBar, { back, toolbar, tags }),
5497
- title || description ? /* @__PURE__ */ jsx93("div", { className: "m-b-4", children: /* @__PURE__ */ jsx93(StepHeader, { title, description, tags }) }) : void 0,
5498
- children,
5499
- /* @__PURE__ */ jsx93(StepFooter, { footer, tags })
5500
- ] });
5737
+ return /* @__PURE__ */ jsxs35(
5738
+ "div",
5739
+ {
5740
+ className: (0, import_classnames28.default)("splash-screen", "m-t-5", controlAndTagsToCSSClass({ control, tags })),
5741
+ children: [
5742
+ /* @__PURE__ */ jsx93(TopBar, { back, toolbar, tags }),
5743
+ title || description ? /* @__PURE__ */ jsx93("div", { className: "m-b-4", children: /* @__PURE__ */ jsx93(StepHeader, { title, description, tags }) }) : void 0,
5744
+ children,
5745
+ /* @__PURE__ */ jsx93(StepFooter, { footer, tags })
5746
+ ]
5747
+ }
5748
+ );
5501
5749
  }
5502
5750
 
5503
5751
  // ../renderers/src/step/SplashStepRenderer.tsx
5752
+ var import_classnames29 = __toESM(require_classnames());
5504
5753
  import { jsx as jsx94, jsxs as jsxs36 } from "react/jsx-runtime";
5505
5754
  var SplashStepRenderer = {
5506
5755
  canRenderType: "step",
@@ -5508,13 +5757,19 @@ var SplashStepRenderer = {
5508
5757
  render: SplashStepRendererComponent
5509
5758
  };
5510
5759
  function SplashStepRendererComponent(props) {
5511
- const { back, title, description, toolbar, children, footer, tags } = props;
5512
- return /* @__PURE__ */ jsxs36("div", { className: "splash-screen m-t-5", children: [
5513
- /* @__PURE__ */ jsx94(TopBar, { back, toolbar, tags }),
5514
- title || description ? /* @__PURE__ */ jsx94("div", { className: "m-b-4", children: /* @__PURE__ */ jsx94(StepHeader, { title, description, tags }) }) : void 0,
5515
- children,
5516
- /* @__PURE__ */ jsx94(StepFooter, { footer, tags })
5517
- ] });
5760
+ const { back, title, description, toolbar, children, footer, control, tags } = props;
5761
+ return /* @__PURE__ */ jsxs36(
5762
+ "div",
5763
+ {
5764
+ className: (0, import_classnames29.default)("splash-screen", "m-t-5", controlAndTagsToCSSClass({ control, tags })),
5765
+ children: [
5766
+ /* @__PURE__ */ jsx94(TopBar, { back, toolbar, tags }),
5767
+ title || description ? /* @__PURE__ */ jsx94("div", { className: "m-b-4", children: /* @__PURE__ */ jsx94(StepHeader, { title, description, tags }) }) : void 0,
5768
+ children,
5769
+ /* @__PURE__ */ jsx94(StepFooter, { footer, tags })
5770
+ ]
5771
+ }
5772
+ );
5518
5773
  }
5519
5774
 
5520
5775
  // ../renderers/src/step/StepRenderer.tsx
@@ -5525,8 +5780,8 @@ var StepRenderer = {
5525
5780
  render: StepRendererComponent
5526
5781
  };
5527
5782
  function StepRendererComponent(props) {
5528
- const { back, description, error, title, children, toolbar, footer, tags } = props;
5529
- return /* @__PURE__ */ jsxs37("div", { children: [
5783
+ const { back, description, error, title, children, toolbar, footer, control, tags } = props;
5784
+ return /* @__PURE__ */ jsxs37("div", { className: controlAndTagsToCSSClass({ control, tags }), children: [
5530
5785
  /* @__PURE__ */ jsx95(TopBar, { back, toolbar, tags }),
5531
5786
  title || description ? /* @__PURE__ */ jsx95("div", { className: "m-b-4", children: /* @__PURE__ */ jsx95(StepHeader, { title, description, tags }) }) : void 0,
5532
5787
  error ? /* @__PURE__ */ jsx95(Alert, { type: "negative", className: "m-b-2", message: error }) : null,
@@ -5536,6 +5791,7 @@ function StepRendererComponent(props) {
5536
5791
  }
5537
5792
 
5538
5793
  // ../renderers/src/TabsRenderer.tsx
5794
+ var import_classnames30 = __toESM(require_classnames());
5539
5795
  import { Chips as Chips2, SegmentedControl as SegmentedControl2, Tabs as Tabs2 } from "@transferwise/components";
5540
5796
  import { useState as useState17 } from "react";
5541
5797
  import { jsx as jsx96, jsxs as jsxs38 } from "react/jsx-runtime";
@@ -5555,9 +5811,9 @@ var TabsRenderer = {
5555
5811
  }
5556
5812
  }
5557
5813
  };
5558
- function TabsRendererComponent({ uid, margin, tabs }) {
5814
+ function TabsRendererComponent({ uid, margin, tabs, control, tags }) {
5559
5815
  const [selectedIndex, setSelectedIndex] = useState17(0);
5560
- return /* @__PURE__ */ jsx96("div", { className: getMargin(margin), children: /* @__PURE__ */ jsx96(
5816
+ return /* @__PURE__ */ jsx96("div", { className: (0, import_classnames30.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: /* @__PURE__ */ jsx96(
5561
5817
  Tabs2,
5562
5818
  {
5563
5819
  name: uid,
@@ -5575,10 +5831,10 @@ function TabsRendererComponent({ uid, margin, tabs }) {
5575
5831
  }
5576
5832
  ) });
5577
5833
  }
5578
- function SegmentedTabsRendererComponent({ uid, margin, tabs }) {
5834
+ function SegmentedTabsRendererComponent({ uid, margin, tabs, control, tags }) {
5579
5835
  var _a;
5580
5836
  const [selectedIndex, setSelectedIndex] = useState17(0);
5581
- return /* @__PURE__ */ jsxs38("div", { className: getMargin(margin), children: [
5837
+ return /* @__PURE__ */ jsxs38("div", { className: (0, import_classnames30.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
5582
5838
  /* @__PURE__ */ jsx96(
5583
5839
  SegmentedControl2,
5584
5840
  {
@@ -5597,10 +5853,10 @@ function SegmentedTabsRendererComponent({ uid, margin, tabs }) {
5597
5853
  /* @__PURE__ */ jsx96("div", { id: `${uid}-children`, className: "m-t-2", children: (_a = tabs[selectedIndex]) == null ? void 0 : _a.children })
5598
5854
  ] });
5599
5855
  }
5600
- function ChipsTabsRendererComponent({ margin, tabs }) {
5856
+ function ChipsTabsRendererComponent({ margin, tabs, control, tags }) {
5601
5857
  var _a;
5602
5858
  const [selectedIndex, setSelectedIndex] = useState17(0);
5603
- return /* @__PURE__ */ jsxs38("div", { className: getMargin(margin), children: [
5859
+ return /* @__PURE__ */ jsxs38("div", { className: (0, import_classnames30.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })), children: [
5604
5860
  /* @__PURE__ */ jsx96("div", { className: "chips-container", children: /* @__PURE__ */ jsx96(
5605
5861
  Chips2,
5606
5862
  {
@@ -5717,6 +5973,8 @@ var TextInputRenderer = {
5717
5973
  loadingState: props.fieldLoadingState,
5718
5974
  help,
5719
5975
  features: props.features,
5976
+ control: props.control,
5977
+ tags: props.tags,
5720
5978
  children: /* @__PURE__ */ jsx98(InputGroup5, { addonStart: getInputGroupAddonStart(media), children: /* @__PURE__ */ jsx98(VariableTextInput, __spreadValues({}, inputProps)) })
5721
5979
  }
5722
5980
  );
@@ -5745,6 +6003,8 @@ var UploadInputRenderer = {
5745
6003
  maxSize,
5746
6004
  validationState,
5747
6005
  value,
6006
+ control,
6007
+ tags,
5748
6008
  onUpload
5749
6009
  } = props;
5750
6010
  const onUploadFile = async (formData) => {
@@ -5766,6 +6026,8 @@ var UploadInputRenderer = {
5766
6026
  description: void 0,
5767
6027
  validation: validationState,
5768
6028
  features,
6029
+ control,
6030
+ tags,
5769
6031
  children: /* @__PURE__ */ jsx99(
5770
6032
  UploadInput2,
5771
6033
  {
@@ -5807,6 +6069,7 @@ var LargeUploadRenderer = {
5807
6069
  validationState,
5808
6070
  maxSize = null,
5809
6071
  features,
6072
+ tags,
5810
6073
  onUpload
5811
6074
  } = _a, rest = __objRest(_a, [
5812
6075
  "id",
@@ -5820,6 +6083,7 @@ var LargeUploadRenderer = {
5820
6083
  "validationState",
5821
6084
  "maxSize",
5822
6085
  "features",
6086
+ "tags",
5823
6087
  "onUpload"
5824
6088
  ]);
5825
6089
  const uploadProps = __spreadProps(__spreadValues({}, rest), { id, name: id, maxSize });
@@ -5843,6 +6107,8 @@ var LargeUploadRenderer = {
5843
6107
  validation: validationState,
5844
6108
  help,
5845
6109
  features,
6110
+ control,
6111
+ tags,
5846
6112
  children: /* @__PURE__ */ jsx99(
5847
6113
  Upload,
5848
6114
  __spreadProps(__spreadValues({}, uploadProps), {
@@ -5859,6 +6125,7 @@ var LargeUploadRenderer = {
5859
6125
  };
5860
6126
 
5861
6127
  // ../renderers/src/UpsellRenderer.tsx
6128
+ var import_classnames31 = __toESM(require_classnames());
5862
6129
  import { Nudge } from "@transferwise/components";
5863
6130
  import { useState as useState18 } from "react";
5864
6131
  import { jsx as jsx100 } from "react/jsx-runtime";
@@ -5867,12 +6134,12 @@ var UpsellRenderer = {
5867
6134
  render: UpsellRendererComponent
5868
6135
  };
5869
6136
  function UpsellRendererComponent(props) {
5870
- const { text, callToAction, media, margin, onDismiss } = props;
6137
+ const { text, callToAction, media, margin, onDismiss, control, tags } = props;
5871
6138
  const [isVisible, setIsVisible] = useState18(true);
5872
6139
  return isVisible ? /* @__PURE__ */ jsx100(
5873
6140
  Nudge,
5874
6141
  {
5875
- className: getMargin(margin),
6142
+ className: (0, import_classnames31.default)(getMargin(margin), controlAndTagsToCSSClass({ control, tags })),
5876
6143
  mediaName: getMediaName(media),
5877
6144
  title: text,
5878
6145
  action: __spreadValues({
@@ -5916,8 +6183,8 @@ var supportedMediaNames = [
5916
6183
  ];
5917
6184
 
5918
6185
  // ../renderers/src/ButtonRenderer/CircularButtonRenderer.tsx
6186
+ var import_classnames32 = __toESM(require_classnames());
5919
6187
  import { CircularButton } from "@transferwise/components";
5920
- var import_classnames8 = __toESM(require_classnames());
5921
6188
  import { jsx as jsx101 } from "react/jsx-runtime";
5922
6189
  var CircularButtonRenderer = {
5923
6190
  canRenderType: "button",
@@ -5926,19 +6193,30 @@ var CircularButtonRenderer = {
5926
6193
  };
5927
6194
  function CircularButtonComponent(props) {
5928
6195
  var _a;
5929
- const { context, disabled, margin, media, tags, title, onClick } = props;
6196
+ const { context, control, disabled, margin, media, tags, title, onClick } = props;
5930
6197
  const priority = tags == null ? void 0 : tags.find((tag) => tag === "primary" || tag === "secondary");
5931
- return /* @__PURE__ */ jsx101("div", { className: (0, import_classnames8.default)(getMargin(margin), "df-button", "circular"), children: /* @__PURE__ */ jsx101(
5932
- CircularButton,
6198
+ return /* @__PURE__ */ jsx101(
6199
+ "div",
5933
6200
  {
5934
- disabled,
5935
- priority: priority != null ? priority : "secondary",
5936
- type: context === "negative" ? "negative" : "default",
5937
- icon: media ? (_a = getAddonStartMedia(media)) == null ? void 0 : _a.value : void 0,
5938
- onClick,
5939
- children: title
6201
+ className: (0, import_classnames32.default)(
6202
+ getMargin(margin),
6203
+ "df-button",
6204
+ "circular",
6205
+ controlAndTagsToCSSClass({ control, tags })
6206
+ ),
6207
+ children: /* @__PURE__ */ jsx101(
6208
+ CircularButton,
6209
+ {
6210
+ disabled,
6211
+ priority: priority != null ? priority : "secondary",
6212
+ type: context === "negative" ? "negative" : "default",
6213
+ icon: media ? (_a = getAddonStartMedia(media)) == null ? void 0 : _a.value : void 0,
6214
+ onClick,
6215
+ children: title
6216
+ }
6217
+ )
5940
6218
  }
5941
- ) });
6219
+ );
5942
6220
  }
5943
6221
 
5944
6222
  // ../renderers/src/getWiseRenderers.ts