@wise/dynamic-flow-client-internal 3.24.4 → 3.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
@@ -886,8 +886,8 @@ var useRendererHttpClient = () => {
886
886
  import { Alert } from "@transferwise/components";
887
887
 
888
888
  // ../renderers/src/utils/layout-utils.ts
889
- var getMargin = (size) => {
890
- switch (size) {
889
+ var getMargin = (size2) => {
890
+ switch (size2) {
891
891
  case "xs":
892
892
  return "m-b-0";
893
893
  case "sm":
@@ -1108,7 +1108,7 @@ function ButtonRendererComponent({
1108
1108
  disabled,
1109
1109
  margin,
1110
1110
  title,
1111
- size,
1111
+ size: size2,
1112
1112
  onClick
1113
1113
  }) {
1114
1114
  const className = getMargin(margin);
@@ -1122,7 +1122,7 @@ function ButtonRendererComponent({
1122
1122
  className,
1123
1123
  disabled: isLoading || disabled,
1124
1124
  priority: mapControl(control),
1125
- size: mapSize(size),
1125
+ size: mapSize(size2),
1126
1126
  type,
1127
1127
  onClick,
1128
1128
  children: title
@@ -1147,11 +1147,11 @@ var mapControl = (control) => {
1147
1147
  return "secondary";
1148
1148
  }
1149
1149
  };
1150
- var mapSize = (size) => {
1151
- if (!size) {
1150
+ var mapSize = (size2) => {
1151
+ if (!size2) {
1152
1152
  return void 0;
1153
1153
  }
1154
- switch (size) {
1154
+ switch (size2) {
1155
1155
  case "xs":
1156
1156
  case "sm":
1157
1157
  return "sm";
@@ -1448,15 +1448,15 @@ var HeadingRenderer = {
1448
1448
  render: (props) => /* @__PURE__ */ jsx21(Heading, __spreadValues({}, props))
1449
1449
  };
1450
1450
  function Heading(props) {
1451
- const { text, size, align, margin, control } = props;
1451
+ const { text, size: size2, align, margin, control } = props;
1452
1452
  const className = getTextAlignmentAndMargin({ align, margin });
1453
- return control === "display" ? /* @__PURE__ */ jsx21(DisplayHeading, { size, text, className }) : /* @__PURE__ */ jsx21(StandardHeading, { size, text, className });
1453
+ return control === "display" ? /* @__PURE__ */ jsx21(DisplayHeading, { size: size2, text, className }) : /* @__PURE__ */ jsx21(StandardHeading, { size: size2, text, className });
1454
1454
  }
1455
- function DisplayHeading({ size, text, className }) {
1456
- return /* @__PURE__ */ jsx21(Display, { type: getDisplayType(size), className, children: text });
1455
+ function DisplayHeading({ size: size2, text, className }) {
1456
+ return /* @__PURE__ */ jsx21(Display, { type: getDisplayType(size2), className, children: text });
1457
1457
  }
1458
- function StandardHeading({ size, text, className }) {
1459
- switch (size) {
1458
+ function StandardHeading({ size: size2, text, className }) {
1459
+ switch (size2) {
1460
1460
  case "xs":
1461
1461
  return /* @__PURE__ */ jsx21("h5", { className, children: text });
1462
1462
  case "sm":
@@ -1470,8 +1470,8 @@ function StandardHeading({ size, text, className }) {
1470
1470
  return /* @__PURE__ */ jsx21("h3", { className, children: text });
1471
1471
  }
1472
1472
  }
1473
- var getDisplayType = (size) => {
1474
- switch (size) {
1473
+ var getDisplayType = (size2) => {
1474
+ switch (size2) {
1475
1475
  case "xs":
1476
1476
  case "sm":
1477
1477
  return "display-small";
@@ -1506,7 +1506,7 @@ var ImageRenderer_default = ImageRenderer;
1506
1506
  function ImageRendererComponent({
1507
1507
  accessibilityDescription,
1508
1508
  margin,
1509
- size,
1509
+ size: size2,
1510
1510
  url
1511
1511
  }) {
1512
1512
  const [imageSource, setImageSource] = useState2("");
@@ -1514,7 +1514,7 @@ function ImageRendererComponent({
1514
1514
  useEffect2(() => {
1515
1515
  void getImageSource(httpClient, url).then(setImageSource);
1516
1516
  }, [url, httpClient]);
1517
- return /* @__PURE__ */ jsx22("div", { className: `df-image ${size || "md"}`, children: /* @__PURE__ */ jsx22(
1517
+ return /* @__PURE__ */ jsx22("div", { className: `df-image ${size2 || "md"}`, children: /* @__PURE__ */ jsx22(
1518
1518
  Image,
1519
1519
  {
1520
1520
  className: `img-responsive ${getMargin(margin)}`,
@@ -1576,7 +1576,7 @@ var InstructionsRenderer = {
1576
1576
  var InstructionsRenderer_default = InstructionsRenderer;
1577
1577
 
1578
1578
  // ../renderers/src/IntegerInputRenderer.tsx
1579
- import { Input } from "@transferwise/components";
1579
+ import { Input, InputGroup } from "@transferwise/components";
1580
1580
 
1581
1581
  // ../renderers/src/utils/input-utils.ts
1582
1582
  var onWheel = (event) => {
@@ -1585,13 +1585,71 @@ var onWheel = (event) => {
1585
1585
  }
1586
1586
  };
1587
1587
 
1588
- // ../renderers/src/IntegerInputRenderer.tsx
1588
+ // ../renderers/src/utils/getIconAvatar.tsx
1589
+ import { Avatar as Avatar2, AvatarType as AvatarType2 } from "@transferwise/components";
1589
1590
  import { jsx as jsx24 } from "react/jsx-runtime";
1591
+ var size = 24;
1592
+ function getIconAvatar({ icon, image }) {
1593
+ if (image == null ? void 0 : image.url) {
1594
+ return /* @__PURE__ */ jsx24(
1595
+ "img",
1596
+ {
1597
+ src: image.url,
1598
+ alt: image.accessibilityDescription,
1599
+ width: `${size}px`,
1600
+ height: `${size}px`
1601
+ }
1602
+ );
1603
+ }
1604
+ if (isFlagIcon2(icon)) {
1605
+ return /* @__PURE__ */ jsx24(Avatar2, { type: AvatarType2.ICON, size, children: /* @__PURE__ */ jsx24(DynamicIcon_default, { name: icon.name }) });
1606
+ }
1607
+ if (isNamedIcon2(icon)) {
1608
+ return /* @__PURE__ */ jsx24(DynamicIcon_default, { name: icon.name });
1609
+ }
1610
+ if (icon && "text" in icon) {
1611
+ return /* @__PURE__ */ jsx24(Avatar2, { type: AvatarType2.ICON, size, children: icon.text });
1612
+ }
1613
+ return null;
1614
+ }
1615
+ var isNamedIcon2 = (icon) => icon ? "name" in icon : false;
1616
+ var isFlagIcon2 = (icon) => isNamedIcon2(icon) && icon.name.startsWith("flag-");
1617
+
1618
+ // ../renderers/src/utils/getInputGroupAddonStart.tsx
1619
+ var getInputGroupAddonStart = ({ icon, image }) => {
1620
+ const content = getIconAvatar({ icon, image });
1621
+ return content ? { content } : void 0;
1622
+ };
1623
+
1624
+ // ../renderers/src/IntegerInputRenderer.tsx
1625
+ import { jsx as jsx25 } from "react/jsx-runtime";
1590
1626
  var IntegerInputRenderer = {
1591
1627
  canRenderType: "input-integer",
1592
1628
  render: (props) => {
1593
- const _a = props, { id, label, description, help, type, validationState, value, onChange } = _a, rest = __objRest(_a, ["id", "label", "description", "help", "type", "validationState", "value", "onChange"]);
1594
- return /* @__PURE__ */ jsx24(
1629
+ const _a = props, {
1630
+ id,
1631
+ label,
1632
+ description,
1633
+ help,
1634
+ icon,
1635
+ image,
1636
+ type,
1637
+ validationState,
1638
+ value,
1639
+ onChange
1640
+ } = _a, rest = __objRest(_a, [
1641
+ "id",
1642
+ "label",
1643
+ "description",
1644
+ "help",
1645
+ "icon",
1646
+ "image",
1647
+ "type",
1648
+ "validationState",
1649
+ "value",
1650
+ "onChange"
1651
+ ]);
1652
+ return /* @__PURE__ */ jsx25(
1595
1653
  FieldInput_default,
1596
1654
  {
1597
1655
  id,
@@ -1599,7 +1657,7 @@ var IntegerInputRenderer = {
1599
1657
  description,
1600
1658
  validation: validationState,
1601
1659
  help,
1602
- children: /* @__PURE__ */ jsx24(
1660
+ children: /* @__PURE__ */ jsx25(InputGroup, { addonStart: getInputGroupAddonStart({ icon, image }), children: /* @__PURE__ */ jsx25(
1603
1661
  Input,
1604
1662
  __spreadValues({
1605
1663
  id,
@@ -1614,7 +1672,7 @@ var IntegerInputRenderer = {
1614
1672
  },
1615
1673
  onWheel
1616
1674
  }, rest)
1617
- )
1675
+ ) })
1618
1676
  }
1619
1677
  );
1620
1678
  }
@@ -1623,13 +1681,13 @@ var IntegerInputRenderer_default = IntegerInputRenderer;
1623
1681
 
1624
1682
  // ../renderers/src/LoadingIndicatorRenderer.tsx
1625
1683
  import { Loader } from "@transferwise/components";
1626
- import { jsx as jsx25 } from "react/jsx-runtime";
1684
+ import { jsx as jsx26 } from "react/jsx-runtime";
1627
1685
  var LoadingIndicatorRenderer = {
1628
1686
  canRenderType: "loading-indicator",
1629
- render: ({ margin, size }) => /* @__PURE__ */ jsx25(
1687
+ render: ({ margin, size: size2 }) => /* @__PURE__ */ jsx26(
1630
1688
  Loader,
1631
1689
  {
1632
- size,
1690
+ size: size2,
1633
1691
  classNames: { "tw-loader": `tw-loader m-x-auto ${getMargin(margin)}` },
1634
1692
  "data-testid": "loading-indicator"
1635
1693
  }
@@ -1639,28 +1697,28 @@ var LoadingIndicatorRenderer_default = LoadingIndicatorRenderer;
1639
1697
 
1640
1698
  // ../renderers/src/MarkdownRenderer.tsx
1641
1699
  import { Markdown as Markdown2 } from "@transferwise/components";
1642
- import { jsx as jsx26 } from "react/jsx-runtime";
1700
+ import { jsx as jsx27 } from "react/jsx-runtime";
1643
1701
  var MarkdownRenderer = {
1644
1702
  canRenderType: "markdown",
1645
- render: ({ content, align, margin }) => /* @__PURE__ */ jsx26("div", { className: getTextAlignmentAndMargin({ align, margin }), children: /* @__PURE__ */ jsx26(Markdown2, { config: { link: { target: "_blank" } }, children: content }) })
1703
+ render: ({ content, align, margin }) => /* @__PURE__ */ jsx27("div", { className: getTextAlignmentAndMargin({ align, margin }), children: /* @__PURE__ */ jsx27(Markdown2, { config: { link: { target: "_blank" } }, children: content }) })
1646
1704
  };
1647
1705
  var MarkdownRenderer_default = MarkdownRenderer;
1648
1706
 
1649
1707
  // ../renderers/src/ModalRenderer.tsx
1650
1708
  import { Button as Button2, Modal } from "@transferwise/components";
1651
1709
  import { useState as useState3 } from "react";
1652
- import { jsx as jsx27, jsxs as jsxs7 } from "react/jsx-runtime";
1710
+ import { jsx as jsx28, jsxs as jsxs7 } from "react/jsx-runtime";
1653
1711
  var ModalRenderer = {
1654
1712
  canRenderType: "modal",
1655
- render: (props) => /* @__PURE__ */ jsx27(DFModal, __spreadValues({}, props))
1713
+ render: (props) => /* @__PURE__ */ jsx28(DFModal, __spreadValues({}, props))
1656
1714
  };
1657
1715
  var ModalRenderer_default = ModalRenderer;
1658
1716
  function DFModal({ content, margin, trigger }) {
1659
1717
  const [visible, setVisible] = useState3(false);
1660
1718
  const { components, title } = content;
1661
1719
  return /* @__PURE__ */ jsxs7("div", { className: getMargin(margin), children: [
1662
- /* @__PURE__ */ jsx27(Button2, { priority: "tertiary", block: true, onClick: () => setVisible(true), children: trigger.title }),
1663
- /* @__PURE__ */ jsx27(
1720
+ /* @__PURE__ */ jsx28(Button2, { priority: "tertiary", block: true, onClick: () => setVisible(true), children: trigger.title }),
1721
+ /* @__PURE__ */ jsx28(
1664
1722
  Modal,
1665
1723
  {
1666
1724
  scroll: "content",
@@ -1678,17 +1736,17 @@ function DFModal({ content, margin, trigger }) {
1678
1736
  import { SelectInput, SelectInputOptionContent } from "@transferwise/components";
1679
1737
 
1680
1738
  // ../renderers/src/SelectInputRenderer/OptionMedia.tsx
1681
- import { Avatar as Avatar2, AvatarType as AvatarType2 } from "@transferwise/components";
1682
- import { jsx as jsx28 } from "react/jsx-runtime";
1739
+ import { Avatar as Avatar3, AvatarType as AvatarType3 } from "@transferwise/components";
1740
+ import { jsx as jsx29 } from "react/jsx-runtime";
1683
1741
  function OptionMedia({ icon, image }) {
1684
1742
  if (image == null ? void 0 : image.url) {
1685
- return /* @__PURE__ */ jsx28("img", { src: image.url, alt: image.accessibilityDescription || "", width: "64px" });
1743
+ return /* @__PURE__ */ jsx29("img", { src: image.url, alt: image.accessibilityDescription || "", width: "64px" });
1686
1744
  }
1687
1745
  if (icon && "name" in icon) {
1688
- return /* @__PURE__ */ jsx28(Avatar2, { type: AvatarType2.ICON, children: /* @__PURE__ */ jsx28(DynamicIcon_default, { name: icon.name }) });
1746
+ return /* @__PURE__ */ jsx29(Avatar3, { type: AvatarType3.ICON, children: /* @__PURE__ */ jsx29(DynamicIcon_default, { name: icon.name }) });
1689
1747
  }
1690
1748
  if (icon && "text" in icon) {
1691
- return /* @__PURE__ */ jsx28(Avatar2, { type: AvatarType2.INITIALS, children: icon.text });
1749
+ return /* @__PURE__ */ jsx29(Avatar3, { type: AvatarType3.INITIALS, children: icon.text });
1692
1750
  }
1693
1751
  return null;
1694
1752
  }
@@ -1708,16 +1766,17 @@ var multi_select_messages_default = defineMessages2({
1708
1766
 
1709
1767
  // ../renderers/src/MultiSelectInputRenderer.tsx
1710
1768
  import { useState as useState4 } from "react";
1711
- import { jsx as jsx29 } from "react/jsx-runtime";
1769
+ import { jsx as jsx30 } from "react/jsx-runtime";
1712
1770
  var MultiSelectInputRenderer = {
1713
1771
  canRenderType: "input-multi-select",
1714
- render: (props) => /* @__PURE__ */ jsx29(MultiSelectInputRendererComponent, __spreadValues({}, props))
1772
+ render: (props) => /* @__PURE__ */ jsx30(MultiSelectInputRendererComponent, __spreadValues({}, props))
1715
1773
  };
1716
1774
  function MultiSelectInputRendererComponent(props) {
1717
1775
  const { formatMessage } = useIntl2();
1718
1776
  const [stagedIndices, setStagedIndices] = useState4();
1719
1777
  const {
1720
1778
  id,
1779
+ autoComplete,
1721
1780
  description,
1722
1781
  disabled,
1723
1782
  label,
@@ -1752,11 +1811,12 @@ function MultiSelectInputRendererComponent(props) {
1752
1811
  const contentProps = {
1753
1812
  title: option.title,
1754
1813
  description: option.description,
1755
- icon: /* @__PURE__ */ jsx29(OptionMedia, { icon: option.icon, image: option.image })
1814
+ icon: /* @__PURE__ */ jsx30(OptionMedia, { icon: option.icon, image: option.image })
1756
1815
  };
1757
- return /* @__PURE__ */ jsx29(SelectInputOptionContent, __spreadValues({}, contentProps));
1816
+ return /* @__PURE__ */ jsx30(SelectInputOptionContent, __spreadValues({}, contentProps));
1758
1817
  };
1759
- return /* @__PURE__ */ jsx29(
1818
+ const extraProps = { autoComplete };
1819
+ return /* @__PURE__ */ jsx30(
1760
1820
  FieldInput_default,
1761
1821
  {
1762
1822
  id,
@@ -1764,9 +1824,9 @@ function MultiSelectInputRendererComponent(props) {
1764
1824
  help,
1765
1825
  description,
1766
1826
  validation: validationState,
1767
- children: /* @__PURE__ */ jsx29(
1827
+ children: /* @__PURE__ */ jsx30(
1768
1828
  SelectInput,
1769
- {
1829
+ __spreadValues({
1770
1830
  id,
1771
1831
  items: options.map((option, index) => {
1772
1832
  var _a, _b, _c;
@@ -1795,7 +1855,7 @@ function MultiSelectInputRendererComponent(props) {
1795
1855
  setStagedIndices(void 0);
1796
1856
  }
1797
1857
  }
1798
- }
1858
+ }, extraProps)
1799
1859
  )
1800
1860
  }
1801
1861
  );
@@ -1808,7 +1868,7 @@ import { UploadInput } from "@transferwise/components";
1808
1868
  // ../renderers/src/components/UploadFieldInput.tsx
1809
1869
  var import_classnames3 = __toESM(require_classnames());
1810
1870
  import { InlineAlert } from "@transferwise/components";
1811
- import { jsx as jsx30, jsxs as jsxs8 } from "react/jsx-runtime";
1871
+ import { jsx as jsx31, jsxs as jsxs8 } from "react/jsx-runtime";
1812
1872
  function UploadFieldInput({
1813
1873
  id,
1814
1874
  children,
@@ -1817,7 +1877,7 @@ function UploadFieldInput({
1817
1877
  help,
1818
1878
  validation
1819
1879
  }) {
1820
- const labelContent = label && help ? /* @__PURE__ */ jsx30(LabelContentWithHelp, { text: label, help }) : label;
1880
+ const labelContent = label && help ? /* @__PURE__ */ jsx31(LabelContentWithHelp, { text: label, help }) : label;
1821
1881
  const descriptionId = description ? `${id}-description` : void 0;
1822
1882
  return /* @__PURE__ */ jsxs8(
1823
1883
  "div",
@@ -1826,9 +1886,9 @@ function UploadFieldInput({
1826
1886
  "has-error": (validation == null ? void 0 : validation.status) === "invalid"
1827
1887
  }),
1828
1888
  children: [
1829
- /* @__PURE__ */ jsx30("label", { htmlFor: id, className: "control-label", children: labelContent }),
1889
+ /* @__PURE__ */ jsx31("label", { htmlFor: id, className: "control-label", children: labelContent }),
1830
1890
  children,
1831
- (validation == null ? void 0 : validation.status) === "invalid" && /* @__PURE__ */ jsx30(InlineAlert, { type: "negative", id: descriptionId, children: validation.message })
1891
+ (validation == null ? void 0 : validation.status) === "invalid" && /* @__PURE__ */ jsx31(InlineAlert, { type: "negative", id: descriptionId, children: validation.message })
1832
1892
  ]
1833
1893
  }
1834
1894
  );
@@ -1860,7 +1920,7 @@ var getFileType = (base64Url) => {
1860
1920
  var getRandomId = () => Math.random().toString(36).substring(2);
1861
1921
 
1862
1922
  // ../renderers/src/MultiUploadInputRenderer.tsx
1863
- import { jsx as jsx31 } from "react/jsx-runtime";
1923
+ import { jsx as jsx32 } from "react/jsx-runtime";
1864
1924
  var MultiUploadInputRenderer = {
1865
1925
  canRenderType: "input-upload-multi",
1866
1926
  render: (props) => {
@@ -1887,7 +1947,7 @@ var MultiUploadInputRenderer = {
1887
1947
  };
1888
1948
  const onDeleteFile = async (fileId) => onDelete(String(fileId));
1889
1949
  const descriptionId = description ? `${id}-description` : void 0;
1890
- return /* @__PURE__ */ jsx31(
1950
+ return /* @__PURE__ */ jsx32(
1891
1951
  UploadFieldInput_default,
1892
1952
  {
1893
1953
  id,
@@ -1895,7 +1955,7 @@ var MultiUploadInputRenderer = {
1895
1955
  description,
1896
1956
  validation: validationState,
1897
1957
  help,
1898
- children: /* @__PURE__ */ jsx31(
1958
+ children: /* @__PURE__ */ jsx32(
1899
1959
  UploadInput,
1900
1960
  {
1901
1961
  id,
@@ -1918,13 +1978,35 @@ var MultiUploadInputRenderer = {
1918
1978
  var MultiUploadInputRenderer_default = MultiUploadInputRenderer;
1919
1979
 
1920
1980
  // ../renderers/src/NumberInputRenderer.tsx
1921
- import { Input as Input2 } from "@transferwise/components";
1922
- import { jsx as jsx32 } from "react/jsx-runtime";
1981
+ import { Input as Input2, InputGroup as InputGroup2 } from "@transferwise/components";
1982
+ import { jsx as jsx33 } from "react/jsx-runtime";
1923
1983
  var NumberInputRenderer = {
1924
1984
  canRenderType: "input-number",
1925
1985
  render: (props) => {
1926
- const _a = props, { id, label, description, help, type, validationState, value, onChange } = _a, rest = __objRest(_a, ["id", "label", "description", "help", "type", "validationState", "value", "onChange"]);
1927
- return /* @__PURE__ */ jsx32(
1986
+ const _a = props, {
1987
+ id,
1988
+ label,
1989
+ description,
1990
+ help,
1991
+ icon,
1992
+ image,
1993
+ type,
1994
+ validationState,
1995
+ value,
1996
+ onChange
1997
+ } = _a, rest = __objRest(_a, [
1998
+ "id",
1999
+ "label",
2000
+ "description",
2001
+ "help",
2002
+ "icon",
2003
+ "image",
2004
+ "type",
2005
+ "validationState",
2006
+ "value",
2007
+ "onChange"
2008
+ ]);
2009
+ return /* @__PURE__ */ jsx33(
1928
2010
  FieldInput_default,
1929
2011
  {
1930
2012
  id,
@@ -1932,7 +2014,7 @@ var NumberInputRenderer = {
1932
2014
  description,
1933
2015
  validation: validationState,
1934
2016
  help,
1935
- children: /* @__PURE__ */ jsx32(
2017
+ children: /* @__PURE__ */ jsx33(InputGroup2, { addonStart: getInputGroupAddonStart({ icon, image }), children: /* @__PURE__ */ jsx33(
1936
2018
  Input2,
1937
2019
  __spreadValues({
1938
2020
  id,
@@ -1945,7 +2027,7 @@ var NumberInputRenderer = {
1945
2027
  },
1946
2028
  onWheel
1947
2029
  }, rest)
1948
- )
2030
+ ) })
1949
2031
  }
1950
2032
  );
1951
2033
  }
@@ -1984,17 +2066,17 @@ var paragraph_messages_default = defineMessages3({
1984
2066
  });
1985
2067
 
1986
2068
  // ../renderers/src/ParagraphRenderer.tsx
1987
- import { jsx as jsx33, jsxs as jsxs9 } from "react/jsx-runtime";
2069
+ import { jsx as jsx34, jsxs as jsxs9 } from "react/jsx-runtime";
1988
2070
  var ParagraphRenderer = {
1989
2071
  canRenderType: "paragraph",
1990
- render: (props) => /* @__PURE__ */ jsx33(Paragraph, __spreadValues({}, props))
2072
+ render: (props) => /* @__PURE__ */ jsx34(Paragraph, __spreadValues({}, props))
1991
2073
  };
1992
2074
  function Paragraph({ align, control, margin, text }) {
1993
2075
  const className = getTextAlignmentAndMargin({ align, margin });
1994
- return control === "copyable" ? /* @__PURE__ */ jsx33(CopyableParagraph, { className, align, text }) : /* @__PURE__ */ jsx33(StandardParagraph, { className, text });
2076
+ return control === "copyable" ? /* @__PURE__ */ jsx34(CopyableParagraph, { className, align, text }) : /* @__PURE__ */ jsx34(StandardParagraph, { className, text });
1995
2077
  }
1996
2078
  function StandardParagraph({ text, className }) {
1997
- return /* @__PURE__ */ jsx33("p", { className: `np-text-body-large ${className}`, children: text });
2079
+ return /* @__PURE__ */ jsx34("p", { className: `np-text-body-large ${className}`, children: text });
1998
2080
  }
1999
2081
  function CopyableParagraph({
2000
2082
  text,
@@ -2009,7 +2091,7 @@ function CopyableParagraph({
2009
2091
  };
2010
2092
  const inputAlignmentClasses = getTextAlignmentAndMargin({ align, margin: "sm" });
2011
2093
  return /* @__PURE__ */ jsxs9("div", { className, children: [
2012
- /* @__PURE__ */ jsx33(
2094
+ /* @__PURE__ */ jsx34(
2013
2095
  Input3,
2014
2096
  {
2015
2097
  type: "text",
@@ -2018,7 +2100,7 @@ function CopyableParagraph({
2018
2100
  className: (0, import_classnames4.default)("text-ellipsis", inputAlignmentClasses)
2019
2101
  }
2020
2102
  ),
2021
- /* @__PURE__ */ jsx33(Button3, { block: true, onClick: copy, children: formatMessage(paragraph_messages_default.copy) })
2103
+ /* @__PURE__ */ jsx34(Button3, { block: true, onClick: copy, children: formatMessage(paragraph_messages_default.copy) })
2022
2104
  ] });
2023
2105
  }
2024
2106
  var ParagraphRenderer_default = ParagraphRenderer;
@@ -2056,10 +2138,10 @@ var repeatable_messages_default = defineMessages4({
2056
2138
 
2057
2139
  // ../renderers/src/RepeatableRenderer.tsx
2058
2140
  var import_classnames5 = __toESM(require_classnames());
2059
- import { Fragment as Fragment2, jsx as jsx34, jsxs as jsxs10 } from "react/jsx-runtime";
2141
+ import { Fragment as Fragment2, jsx as jsx35, jsxs as jsxs10 } from "react/jsx-runtime";
2060
2142
  var RepeatableRenderer = {
2061
2143
  canRenderType: "repeatable",
2062
- render: (props) => /* @__PURE__ */ jsx34(Repeatable, __spreadValues({}, props))
2144
+ render: (props) => /* @__PURE__ */ jsx35(Repeatable, __spreadValues({}, props))
2063
2145
  };
2064
2146
  function Repeatable(props) {
2065
2147
  const {
@@ -2099,8 +2181,8 @@ function Repeatable(props) {
2099
2181
  setOpenModalType(null);
2100
2182
  };
2101
2183
  return /* @__PURE__ */ jsxs10(Fragment2, { children: [
2102
- title && /* @__PURE__ */ jsx34(Header4, { title }),
2103
- description && /* @__PURE__ */ jsx34("p", { children: description }),
2184
+ title && /* @__PURE__ */ jsx35(Header4, { title }),
2185
+ description && /* @__PURE__ */ jsx35("p", { children: description }),
2104
2186
  /* @__PURE__ */ jsxs10(
2105
2187
  "div",
2106
2188
  {
@@ -2108,30 +2190,30 @@ function Repeatable(props) {
2108
2190
  "has-error": (validationState == null ? void 0 : validationState.status) === "invalid"
2109
2191
  }),
2110
2192
  children: [
2111
- items == null ? void 0 : items.map((item, index) => /* @__PURE__ */ jsx34(ItemSummaryOption, { item, onClick: () => onEditItem(index) }, item.id)),
2112
- /* @__PURE__ */ jsx34(
2193
+ items == null ? void 0 : items.map((item, index) => /* @__PURE__ */ jsx35(ItemSummaryOption, { item, onClick: () => onEditItem(index) }, item.id)),
2194
+ /* @__PURE__ */ jsx35(
2113
2195
  NavigationOption2,
2114
2196
  {
2115
- media: /* @__PURE__ */ jsx34(Plus, {}),
2197
+ media: /* @__PURE__ */ jsx35(Plus, {}),
2116
2198
  title: addItemTitle || formatMessage(repeatable_messages_default.addItemTitle),
2117
2199
  showMediaAtAllSizes: true,
2118
2200
  onClick: () => onAddItem()
2119
2201
  }
2120
2202
  ),
2121
- (validationState == null ? void 0 : validationState.status) === "invalid" && /* @__PURE__ */ jsx34(InlineAlert2, { type: "negative", children: validationState.message })
2203
+ (validationState == null ? void 0 : validationState.status) === "invalid" && /* @__PURE__ */ jsx35(InlineAlert2, { type: "negative", children: validationState.message })
2122
2204
  ]
2123
2205
  }
2124
2206
  ),
2125
- /* @__PURE__ */ jsx34(
2207
+ /* @__PURE__ */ jsx35(
2126
2208
  Modal2,
2127
2209
  {
2128
2210
  open: openModalType !== null,
2129
2211
  title: (openModalType === "add" ? addItemTitle : editItemTitle) || formatMessage(repeatable_messages_default.addItemTitle),
2130
2212
  body: /* @__PURE__ */ jsxs10(Fragment2, { children: [
2131
- /* @__PURE__ */ jsx34("div", { className: "m-b-2", children: editableItem }),
2213
+ /* @__PURE__ */ jsx35("div", { className: "m-b-2", children: editableItem }),
2132
2214
  /* @__PURE__ */ jsxs10("div", { children: [
2133
- /* @__PURE__ */ jsx34(Button4, { priority: "primary", block: true, className: "m-b-2", onClick: () => onSaveItem(), children: formatMessage(repeatable_messages_default.addItem) }),
2134
- /* @__PURE__ */ jsx34(Button4, { priority: "secondary", type: "negative", block: true, onClick: () => onRemoveItem(), children: formatMessage(repeatable_messages_default.removeItem) })
2215
+ /* @__PURE__ */ jsx35(Button4, { priority: "primary", block: true, className: "m-b-2", onClick: () => onSaveItem(), children: formatMessage(repeatable_messages_default.addItem) }),
2216
+ /* @__PURE__ */ jsx35(Button4, { priority: "secondary", type: "negative", block: true, onClick: () => onRemoveItem(), children: formatMessage(repeatable_messages_default.removeItem) })
2135
2217
  ] })
2136
2218
  ] }),
2137
2219
  onClose: () => onCancelEdit()
@@ -2143,10 +2225,10 @@ function ItemSummaryOption({
2143
2225
  item,
2144
2226
  onClick
2145
2227
  }) {
2146
- return /* @__PURE__ */ jsx34(
2228
+ return /* @__PURE__ */ jsx35(
2147
2229
  NavigationOption2,
2148
2230
  {
2149
- media: /* @__PURE__ */ jsx34(NavigationOptionMedia, __spreadValues({}, item)),
2231
+ media: /* @__PURE__ */ jsx35(NavigationOptionMedia, __spreadValues({}, item)),
2150
2232
  title: item.title,
2151
2233
  content: item.description,
2152
2234
  showMediaAtAllSizes: true,
@@ -2184,7 +2266,7 @@ var generic_error_messages_default = defineMessages5({
2184
2266
 
2185
2267
  // ../renderers/src/SearchRenderer/ErrorResult.tsx
2186
2268
  import { Button as Button5 } from "@transferwise/components";
2187
- import { jsx as jsx35, jsxs as jsxs11 } from "react/jsx-runtime";
2269
+ import { jsx as jsx36, jsxs as jsxs11 } from "react/jsx-runtime";
2188
2270
  function ErrorResult({ state }) {
2189
2271
  const intl = useIntl5();
2190
2272
  const buttonVisualProps = {
@@ -2195,7 +2277,7 @@ function ErrorResult({ state }) {
2195
2277
  return /* @__PURE__ */ jsxs11("p", { className: "m-t-2", children: [
2196
2278
  intl.formatMessage(generic_error_messages_default.genericError),
2197
2279
  "\xA0",
2198
- /* @__PURE__ */ jsx35(
2280
+ /* @__PURE__ */ jsx36(
2199
2281
  Button5,
2200
2282
  __spreadProps(__spreadValues({}, buttonVisualProps), {
2201
2283
  onClick: () => {
@@ -2222,7 +2304,7 @@ var search_messages_default = defineMessages6({
2222
2304
 
2223
2305
  // ../renderers/src/SearchRenderer/BlockSearchRendererComponent.tsx
2224
2306
  import { useIntl as useIntl6 } from "react-intl";
2225
- import { Fragment as Fragment3, jsx as jsx36, jsxs as jsxs12 } from "react/jsx-runtime";
2307
+ import { Fragment as Fragment3, jsx as jsx37, jsxs as jsxs12 } from "react/jsx-runtime";
2226
2308
  function BlockSearchRendererComponent({
2227
2309
  id,
2228
2310
  isLoading,
@@ -2236,7 +2318,7 @@ function BlockSearchRendererComponent({
2236
2318
  const trackEvent = useTrackEvent();
2237
2319
  const { formatMessage } = useIntl6();
2238
2320
  return /* @__PURE__ */ jsxs12("div", { className: getMargin(margin), children: [
2239
- /* @__PURE__ */ jsx36(FieldInput_default, { id, description: "", validation: void 0, help: "", label: title, children: /* @__PURE__ */ jsx36(
2321
+ /* @__PURE__ */ jsx37(FieldInput_default, { id, description: "", validation: void 0, help: "", label: title, children: /* @__PURE__ */ jsx37(
2240
2322
  Input4,
2241
2323
  {
2242
2324
  id,
@@ -2253,7 +2335,7 @@ function BlockSearchRendererComponent({
2253
2335
  }
2254
2336
  }
2255
2337
  ) }),
2256
- isLoading ? /* @__PURE__ */ jsx36(Fragment3, { children: formatMessage(search_messages_default.loading) }) : /* @__PURE__ */ jsx36(SearchResultContent, { state, onChange })
2338
+ isLoading ? /* @__PURE__ */ jsx37(Fragment3, { children: formatMessage(search_messages_default.loading) }) : /* @__PURE__ */ jsx37(SearchResultContent, { state, onChange })
2257
2339
  ] });
2258
2340
  }
2259
2341
  function SearchResultContent({
@@ -2262,26 +2344,26 @@ function SearchResultContent({
2262
2344
  }) {
2263
2345
  switch (state.type) {
2264
2346
  case "error":
2265
- return /* @__PURE__ */ jsx36(ErrorResult, { state });
2347
+ return /* @__PURE__ */ jsx37(ErrorResult, { state });
2266
2348
  case "results":
2267
- return /* @__PURE__ */ jsx36(SearchResults, { state, onChange });
2349
+ return /* @__PURE__ */ jsx37(SearchResults, { state, onChange });
2268
2350
  case "noResults":
2269
- return /* @__PURE__ */ jsx36(EmptySearchResult, { state });
2351
+ return /* @__PURE__ */ jsx37(EmptySearchResult, { state });
2270
2352
  case "pending":
2271
2353
  default:
2272
2354
  return null;
2273
2355
  }
2274
2356
  }
2275
2357
  function EmptySearchResult({ state }) {
2276
- return /* @__PURE__ */ jsx36(Markdown3, { className: "m-t-2", config: { link: { target: "_blank" } }, children: state.message });
2358
+ return /* @__PURE__ */ jsx37(Markdown3, { className: "m-t-2", config: { link: { target: "_blank" } }, children: state.message });
2277
2359
  }
2278
2360
  function SearchResults({
2279
2361
  state
2280
2362
  }) {
2281
2363
  const trackEvent = useTrackEvent();
2282
- return /* @__PURE__ */ jsx36(NavigationOptionsList2, { children: state.results.map((result) => {
2364
+ return /* @__PURE__ */ jsx37(NavigationOptionsList2, { children: state.results.map((result) => {
2283
2365
  const { icon, image } = result;
2284
- return /* @__PURE__ */ jsx36(
2366
+ return /* @__PURE__ */ jsx37(
2285
2367
  NavigationOption3,
2286
2368
  {
2287
2369
  title: result.title,
@@ -2307,7 +2389,7 @@ import { Markdown as Markdown4, Typeahead } from "@transferwise/components";
2307
2389
  import { Search } from "@transferwise/icons";
2308
2390
  import { useState as useState7 } from "react";
2309
2391
  import { useIntl as useIntl7 } from "react-intl";
2310
- import { jsx as jsx37 } from "react/jsx-runtime";
2392
+ import { jsx as jsx38 } from "react/jsx-runtime";
2311
2393
  function InlineSearchRenderer({
2312
2394
  id,
2313
2395
  isLoading,
@@ -2319,7 +2401,7 @@ function InlineSearchRenderer({
2319
2401
  const [hasSearched, setHasSearched] = useState7(false);
2320
2402
  const trackEvent = useTrackEvent();
2321
2403
  const intl = useIntl7();
2322
- return /* @__PURE__ */ jsx37("div", { className: getMargin(margin), children: /* @__PURE__ */ jsx37(FieldInput_default, { id, description: "", validation: void 0, help: "", label: title, children: /* @__PURE__ */ jsx37(
2404
+ return /* @__PURE__ */ jsx38("div", { className: getMargin(margin), children: /* @__PURE__ */ jsx38(FieldInput_default, { id, description: "", validation: void 0, help: "", label: title, children: /* @__PURE__ */ jsx38(
2323
2405
  Typeahead,
2324
2406
  {
2325
2407
  id: "typeahead-input-id",
@@ -2327,10 +2409,10 @@ function InlineSearchRenderer({
2327
2409
  name: "typeahead-input-name",
2328
2410
  size: "md",
2329
2411
  maxHeight: 100,
2330
- footer: /* @__PURE__ */ jsx37(TypeaheadFooter, { state, isLoading }),
2412
+ footer: /* @__PURE__ */ jsx38(TypeaheadFooter, { state, isLoading }),
2331
2413
  multiple: false,
2332
2414
  clearable: false,
2333
- addon: /* @__PURE__ */ jsx37(Search, { size: 24 }),
2415
+ addon: /* @__PURE__ */ jsx38(Search, { size: 24 }),
2334
2416
  options: state.type === "results" ? state.results.map(mapResultToTypeaheadOption) : [],
2335
2417
  minQueryLength: 1,
2336
2418
  onChange: (values) => {
@@ -2367,29 +2449,29 @@ function mapResultToTypeaheadOption(result) {
2367
2449
  function TypeaheadFooter({ state, isLoading }) {
2368
2450
  const { formatMessage } = useIntl7();
2369
2451
  if (state.type === "noResults") {
2370
- return /* @__PURE__ */ jsx37(Markdown4, { className: "m-t-2 m-x-2", config: { link: { target: "_blank" } }, children: state.message });
2452
+ return /* @__PURE__ */ jsx38(Markdown4, { className: "m-t-2 m-x-2", config: { link: { target: "_blank" } }, children: state.message });
2371
2453
  }
2372
2454
  if (state.type === "error") {
2373
- return /* @__PURE__ */ jsx37("div", { className: "m-t-2 m-x-2", children: /* @__PURE__ */ jsx37(ErrorResult, { state }) });
2455
+ return /* @__PURE__ */ jsx38("div", { className: "m-t-2 m-x-2", children: /* @__PURE__ */ jsx38(ErrorResult, { state }) });
2374
2456
  }
2375
2457
  if (state.type === "pending" || isLoading) {
2376
- return /* @__PURE__ */ jsx37("p", { className: "m-t-2 m-x-2", children: formatMessage(search_messages_default.loading) });
2458
+ return /* @__PURE__ */ jsx38("p", { className: "m-t-2 m-x-2", children: formatMessage(search_messages_default.loading) });
2377
2459
  }
2378
2460
  return null;
2379
2461
  }
2380
2462
  var InlineSearchRendererComponent_default = InlineSearchRenderer;
2381
2463
 
2382
2464
  // ../renderers/src/SearchRenderer/SearchRenderer.tsx
2383
- import { jsx as jsx38 } from "react/jsx-runtime";
2465
+ import { jsx as jsx39 } from "react/jsx-runtime";
2384
2466
  var SearchRenderer = {
2385
2467
  canRenderType: "search",
2386
- render: (props) => props.control === "inline" ? /* @__PURE__ */ jsx38(InlineSearchRendererComponent_default, __spreadValues({}, props)) : /* @__PURE__ */ jsx38(BlockSearchRendererComponent_default, __spreadValues({}, props))
2468
+ render: (props) => props.control === "inline" ? /* @__PURE__ */ jsx39(InlineSearchRendererComponent_default, __spreadValues({}, props)) : /* @__PURE__ */ jsx39(BlockSearchRendererComponent_default, __spreadValues({}, props))
2387
2469
  };
2388
2470
  var SearchRenderer_default = SearchRenderer;
2389
2471
 
2390
2472
  // ../renderers/src/SelectInputRenderer/RadioInputRendererComponent.tsx
2391
2473
  import { RadioGroup } from "@transferwise/components";
2392
- import { Fragment as Fragment4, jsx as jsx39, jsxs as jsxs13 } from "react/jsx-runtime";
2474
+ import { Fragment as Fragment4, jsx as jsx40, jsxs as jsxs13 } from "react/jsx-runtime";
2393
2475
  function RadioInputRendererComponent(props) {
2394
2476
  const {
2395
2477
  id,
@@ -2404,7 +2486,7 @@ function RadioInputRendererComponent(props) {
2404
2486
  onSelect
2405
2487
  } = props;
2406
2488
  return /* @__PURE__ */ jsxs13(Fragment4, { children: [
2407
- /* @__PURE__ */ jsx39(
2489
+ /* @__PURE__ */ jsx40(
2408
2490
  FieldInput_default,
2409
2491
  {
2410
2492
  id,
@@ -2412,7 +2494,7 @@ function RadioInputRendererComponent(props) {
2412
2494
  help,
2413
2495
  description,
2414
2496
  validation: validationState,
2415
- children: /* @__PURE__ */ jsx39("span", { children: /* @__PURE__ */ jsx39(
2497
+ children: /* @__PURE__ */ jsx40("span", { children: /* @__PURE__ */ jsx40(
2416
2498
  RadioGroup,
2417
2499
  {
2418
2500
  name: id,
@@ -2421,7 +2503,7 @@ function RadioInputRendererComponent(props) {
2421
2503
  value: index,
2422
2504
  secondary: option.description,
2423
2505
  disabled: option.disabled || disabled,
2424
- avatar: /* @__PURE__ */ jsx39(OptionMedia, { icon: option.icon, image: option.image })
2506
+ avatar: /* @__PURE__ */ jsx40(OptionMedia, { icon: option.icon, image: option.image })
2425
2507
  })),
2426
2508
  selectedValue: selectedIndex != null ? selectedIndex : void 0,
2427
2509
  onChange: onSelect
@@ -2437,7 +2519,7 @@ function RadioInputRendererComponent(props) {
2437
2519
  // ../renderers/src/SelectInputRenderer/TabInputRendererComponent.tsx
2438
2520
  import { Tabs } from "@transferwise/components";
2439
2521
  import { useEffect as useEffect3 } from "react";
2440
- import { Fragment as Fragment5, jsx as jsx40, jsxs as jsxs14 } from "react/jsx-runtime";
2522
+ import { Fragment as Fragment5, jsx as jsx41, jsxs as jsxs14 } from "react/jsx-runtime";
2441
2523
  function TabInputRendererComponent(props) {
2442
2524
  const {
2443
2525
  id,
@@ -2457,7 +2539,7 @@ function TabInputRendererComponent(props) {
2457
2539
  }
2458
2540
  }, [selectedIndex, onSelect, options.length]);
2459
2541
  return /* @__PURE__ */ jsxs14(Fragment5, { children: [
2460
- /* @__PURE__ */ jsx40(
2542
+ /* @__PURE__ */ jsx41(
2461
2543
  FieldInput_default,
2462
2544
  {
2463
2545
  id,
@@ -2465,7 +2547,7 @@ function TabInputRendererComponent(props) {
2465
2547
  help,
2466
2548
  description,
2467
2549
  validation: validationState,
2468
- children: /* @__PURE__ */ jsx40(
2550
+ children: /* @__PURE__ */ jsx41(
2469
2551
  Tabs,
2470
2552
  {
2471
2553
  name: id,
@@ -2474,7 +2556,7 @@ function TabInputRendererComponent(props) {
2474
2556
  title: option.title,
2475
2557
  // if we pass null, we get some props-types console errors
2476
2558
  // eslint-disable-next-line react/jsx-no-useless-fragment
2477
- content: /* @__PURE__ */ jsx40(Fragment5, {}),
2559
+ content: /* @__PURE__ */ jsx41(Fragment5, {}),
2478
2560
  disabled: option.disabled || disabled
2479
2561
  })),
2480
2562
  onTabSelect: onSelect
@@ -2489,28 +2571,11 @@ var isValidIndex = (index, options) => index !== null && index >= 0 && index < o
2489
2571
 
2490
2572
  // ../renderers/src/SelectInputRenderer/SelectInputRendererComponent.tsx
2491
2573
  import { SelectInput as SelectInput2, SelectInputOptionContent as SelectInputOptionContent2 } from "@transferwise/components";
2492
-
2493
- // ../renderers/src/SelectInputRenderer/SelectTriggerMedia.tsx
2494
- import { Avatar as Avatar3, AvatarType as AvatarType3 } from "@transferwise/components";
2495
- import { jsx as jsx41 } from "react/jsx-runtime";
2496
- function SelectTriggerMedia({ icon, image }) {
2497
- if (image == null ? void 0 : image.url) {
2498
- return null;
2499
- }
2500
- if (icon && "name" in icon) {
2501
- return /* @__PURE__ */ jsx41(Avatar3, { type: AvatarType3.ICON, size: 24, children: /* @__PURE__ */ jsx41(DynamicIcon_default, { name: icon.name }) });
2502
- }
2503
- if (icon && "text" in icon) {
2504
- return /* @__PURE__ */ jsx41(Avatar3, { type: AvatarType3.ICON, size: 24, children: icon.text });
2505
- }
2506
- return null;
2507
- }
2508
-
2509
- // ../renderers/src/SelectInputRenderer/SelectInputRendererComponent.tsx
2510
2574
  import { Fragment as Fragment6, jsx as jsx42, jsxs as jsxs15 } from "react/jsx-runtime";
2511
2575
  function SelectInputRendererComponent(props) {
2512
2576
  const {
2513
2577
  id,
2578
+ autoComplete,
2514
2579
  children,
2515
2580
  description,
2516
2581
  disabled,
@@ -2542,7 +2607,7 @@ function SelectInputRendererComponent(props) {
2542
2607
  const contentProps = withinTrigger ? {
2543
2608
  title: option.title,
2544
2609
  note: option.description,
2545
- icon: /* @__PURE__ */ jsx42(SelectTriggerMedia, { icon: option.icon, image: option.image })
2610
+ icon: getIconAvatar(option)
2546
2611
  } : {
2547
2612
  title: option.title,
2548
2613
  description: option.description,
@@ -2550,6 +2615,7 @@ function SelectInputRendererComponent(props) {
2550
2615
  };
2551
2616
  return /* @__PURE__ */ jsx42(SelectInputOptionContent2, __spreadValues({}, contentProps));
2552
2617
  };
2618
+ const extraProps = { autoComplete };
2553
2619
  return /* @__PURE__ */ jsxs15(Fragment6, { children: [
2554
2620
  /* @__PURE__ */ jsx42(
2555
2621
  FieldInput_default,
@@ -2561,7 +2627,7 @@ function SelectInputRendererComponent(props) {
2561
2627
  validation: validationState,
2562
2628
  children: /* @__PURE__ */ jsx42(
2563
2629
  SelectInput2,
2564
- {
2630
+ __spreadValues({
2565
2631
  name: id,
2566
2632
  placeholder,
2567
2633
  items,
@@ -2571,7 +2637,7 @@ function SelectInputRendererComponent(props) {
2571
2637
  filterable: items.length >= 8,
2572
2638
  onChange: onSelect,
2573
2639
  onClear: required ? void 0 : () => onSelect(null)
2574
- }
2640
+ }, extraProps)
2575
2641
  )
2576
2642
  }
2577
2643
  ),
@@ -2698,6 +2764,9 @@ var mapStatus = (status) => {
2698
2764
  return status;
2699
2765
  };
2700
2766
 
2767
+ // ../renderers/src/TextInputRenderer.tsx
2768
+ import { InputGroup as InputGroup3 } from "@transferwise/components";
2769
+
2701
2770
  // ../renderers/src/components/VariableTextInput.tsx
2702
2771
  import {
2703
2772
  Input as Input5,
@@ -2785,6 +2854,8 @@ var TextInputRenderer = {
2785
2854
  description,
2786
2855
  help,
2787
2856
  error,
2857
+ icon,
2858
+ image,
2788
2859
  maxLength,
2789
2860
  minLength,
2790
2861
  type,
@@ -2797,6 +2868,8 @@ var TextInputRenderer = {
2797
2868
  "description",
2798
2869
  "help",
2799
2870
  "error",
2871
+ "icon",
2872
+ "image",
2800
2873
  "maxLength",
2801
2874
  "minLength",
2802
2875
  "type",
@@ -2813,7 +2886,7 @@ var TextInputRenderer = {
2813
2886
  description,
2814
2887
  validation: validationState,
2815
2888
  help,
2816
- children: /* @__PURE__ */ jsx47(VariableTextInput_default, { control, inputProps })
2889
+ children: /* @__PURE__ */ jsx47(InputGroup3, { addonStart: getInputGroupAddonStart({ icon, image }), children: /* @__PURE__ */ jsx47(VariableTextInput_default, { control, inputProps }) })
2817
2890
  }
2818
2891
  );
2819
2892
  }