@wise/dynamic-flow-client-internal 3.21.2 → 3.22.1

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.js CHANGED
@@ -321,7 +321,8 @@ var de_default = {
321
321
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "Diese Datei ist leider zu gro\xDF. Bitte lade eine kleinere Datei hoch.",
322
322
  "df.wise.MultipleFileUploadSchema.maxItemsError": "Bitte lade {maxItems} oder weniger Dateien hoch.",
323
323
  "df.wise.MultipleFileUploadSchema.minItemsError": "Bitte lade mindestens {minItems} Datei(en) hoch.",
324
- "df.wise.PersistAsyncSchema.genericError": "Da ist etwas schiefgegangen. Versuche es bitte nochmal."
324
+ "df.wise.PersistAsyncSchema.genericError": "Da ist etwas schiefgegangen. Versuche es bitte nochmal.",
325
+ "df.wise.SearchLayout.loading": "L\xE4dt..."
325
326
  };
326
327
 
327
328
  // src/i18n/en.json
@@ -355,7 +356,8 @@ var en_default = {
355
356
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "Sorry, that file is too big. Please upload a smaller file.",
356
357
  "df.wise.MultipleFileUploadSchema.maxItemsError": "Please upload {maxItems} or fewer files.",
357
358
  "df.wise.MultipleFileUploadSchema.minItemsError": "Please upload at least {minItems} file(s).",
358
- "df.wise.PersistAsyncSchema.genericError": "Something went wrong, please try again."
359
+ "df.wise.PersistAsyncSchema.genericError": "Something went wrong, please try again.",
360
+ "df.wise.SearchLayout.loading": "Loading..."
359
361
  };
360
362
 
361
363
  // src/i18n/es.json
@@ -389,7 +391,8 @@ var es_default = {
389
391
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "Lo sentimos, el archivo pesa demasiado. Sube uno m\xE1s peque\xF1o.",
390
392
  "df.wise.MultipleFileUploadSchema.maxItemsError": "Sube {maxItems} o menos archivos.",
391
393
  "df.wise.MultipleFileUploadSchema.minItemsError": "Sube al menos {minItems} archivo(s).",
392
- "df.wise.PersistAsyncSchema.genericError": "Ha habido un error. Int\xE9ntalo de nuevo."
394
+ "df.wise.PersistAsyncSchema.genericError": "Ha habido un error. Int\xE9ntalo de nuevo.",
395
+ "df.wise.SearchLayout.loading": "Cargando..."
393
396
  };
394
397
 
395
398
  // src/i18n/fr.json
@@ -423,7 +426,8 @@ var fr_default = {
423
426
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "Nous sommes d\xE9sol\xE9s, ce fichier est trop volumineux. Veuillez t\xE9l\xE9charger un fichier plus petit.",
424
427
  "df.wise.MultipleFileUploadSchema.maxItemsError": "Veuillez t\xE9l\xE9charger {maxItems} fichiers ou moins.",
425
428
  "df.wise.MultipleFileUploadSchema.minItemsError": "Veuillez t\xE9l\xE9charger au moins {minItems} fichier(s).",
426
- "df.wise.PersistAsyncSchema.genericError": "Une erreur s'est produite, veuillez r\xE9essayer."
429
+ "df.wise.PersistAsyncSchema.genericError": "Une erreur s'est produite, veuillez r\xE9essayer.",
430
+ "df.wise.SearchLayout.loading": "Chargement..."
427
431
  };
428
432
 
429
433
  // src/i18n/hu.json
@@ -457,7 +461,8 @@ var hu_default = {
457
461
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "Sajnos ez a f\xE1jl t\xFAl nagy. K\xE9r\xFCnk, t\xF6lts fel egy kisebb f\xE1jlt.",
458
462
  "df.wise.MultipleFileUploadSchema.maxItemsError": "K\xE9r\xFCnk, hogy legfeljebb {maxItems} f\xE1jlt t\xF6lts fel.",
459
463
  "df.wise.MultipleFileUploadSchema.minItemsError": "K\xE9r\xFCnk, hogy legal\xE1bb {minItems} f\xE1jlt t\xF6lts fel.",
460
- "df.wise.PersistAsyncSchema.genericError": "Valami hiba t\xF6rt\xE9nt. K\xE9r\xFCnk, pr\xF3b\xE1ld \xFAjra."
464
+ "df.wise.PersistAsyncSchema.genericError": "Valami hiba t\xF6rt\xE9nt. K\xE9r\xFCnk, pr\xF3b\xE1ld \xFAjra.",
465
+ "df.wise.SearchLayout.loading": "Bet\xF6lt\xE9s..."
461
466
  };
462
467
 
463
468
  // src/i18n/id.json
@@ -491,7 +496,8 @@ var id_default = {
491
496
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "Maaf, file Anda terlalu besar. Silakan unggah file yang lebih kecil.",
492
497
  "df.wise.MultipleFileUploadSchema.maxItemsError": "Harap unggah {maxItems} file atau kurang.",
493
498
  "df.wise.MultipleFileUploadSchema.minItemsError": "Harap unggah sedikitnya {minItems} file.",
494
- "df.wise.PersistAsyncSchema.genericError": "Terjadi kesalahan, mohon coba lagi."
499
+ "df.wise.PersistAsyncSchema.genericError": "Terjadi kesalahan, mohon coba lagi.",
500
+ "df.wise.SearchLayout.loading": "Memuat..."
495
501
  };
496
502
 
497
503
  // src/i18n/it.json
@@ -525,7 +531,8 @@ var it_default = {
525
531
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "Spiacenti, il file \xE8 troppo grande. Carica un file di dimensioni inferiori.",
526
532
  "df.wise.MultipleFileUploadSchema.maxItemsError": "Carica al massimo {maxItems} file.",
527
533
  "df.wise.MultipleFileUploadSchema.minItemsError": "Carica almeno {minItems} file.",
528
- "df.wise.PersistAsyncSchema.genericError": "Qualcosa \xE8 andato storto. Riprova."
534
+ "df.wise.PersistAsyncSchema.genericError": "Qualcosa \xE8 andato storto. Riprova.",
535
+ "df.wise.SearchLayout.loading": "Caricamento..."
529
536
  };
530
537
 
531
538
  // src/i18n/ja.json
@@ -559,7 +566,8 @@ var ja_default = {
559
566
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "\u5927\u5909\u7533\u3057\u8A33\u3054\u3056\u3044\u307E\u305B\u3093\u304C\u3001\u30D5\u30A1\u30A4\u30EB\u304C\u5927\u304D\u3059\u304E\u307E\u3059\u3002\u3053\u308C\u3088\u308A\u5C0F\u3055\u3044\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
560
567
  "df.wise.MultipleFileUploadSchema.maxItemsError": "{maxItems}\u500B\u4EE5\u4E0B\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
561
568
  "df.wise.MultipleFileUploadSchema.minItemsError": "{minItems}\u500B\u4EE5\u4E0A\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
562
- "df.wise.PersistAsyncSchema.genericError": "\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u518D\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002"
569
+ "df.wise.PersistAsyncSchema.genericError": "\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u518D\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",
570
+ "df.wise.SearchLayout.loading": "\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026"
563
571
  };
564
572
 
565
573
  // src/i18n/pl.json
@@ -593,7 +601,8 @@ var pl_default = {
593
601
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "Przepraszamy, ten plik jest zbyt du\u017Cy. Prze\u015Blij mniejszy plik.",
594
602
  "df.wise.MultipleFileUploadSchema.maxItemsError": "Prze\u015Blij do {maxItems} plik\xF3w.",
595
603
  "df.wise.MultipleFileUploadSchema.minItemsError": "Prze\u015Blij co najmniej nast\u0119puj\u0105c\u0105 liczb\u0119 plik\xF3w: {minItems}.",
596
- "df.wise.PersistAsyncSchema.genericError": "Wyst\u0105pi\u0142 b\u0142\u0105d, prosimy spr\xF3bowa\u0107 ponownie."
604
+ "df.wise.PersistAsyncSchema.genericError": "Wyst\u0105pi\u0142 b\u0142\u0105d, prosimy spr\xF3bowa\u0107 ponownie.",
605
+ "df.wise.SearchLayout.loading": "Trwa \u0142adowanie..."
597
606
  };
598
607
 
599
608
  // src/i18n/pt.json
@@ -627,7 +636,8 @@ var pt_default = {
627
636
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "Este arquivo \xE9 muito grande. Por favor, envie um arquivo menor.",
628
637
  "df.wise.MultipleFileUploadSchema.maxItemsError": "Por favor, envie {maxItems} ou menos arquivos.",
629
638
  "df.wise.MultipleFileUploadSchema.minItemsError": "Por favor, envie pelo menos {minItems} arquivo(s).",
630
- "df.wise.PersistAsyncSchema.genericError": "Ocorreu um erro. Por favor, tente novamente."
639
+ "df.wise.PersistAsyncSchema.genericError": "Ocorreu um erro. Por favor, tente novamente.",
640
+ "df.wise.SearchLayout.loading": "Carregando..."
631
641
  };
632
642
 
633
643
  // src/i18n/ro.json
@@ -661,7 +671,8 @@ var ro_default = {
661
671
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "Ne pare r\u0103u, acel fi\u0219ier este prea mare. Te rug\u0103m s\u0103 \xEEncarci un fi\u0219ier mai mic.",
662
672
  "df.wise.MultipleFileUploadSchema.maxItemsError": "Te rug\u0103m s\u0103 \xEEncarci {maxItems} fi\u0219iere sau mai pu\u021Bine.",
663
673
  "df.wise.MultipleFileUploadSchema.minItemsError": "Te rug\u0103m s\u0103 \xEEncarci cel pu\u021Bin {minItems} fi\u0219ier(e).",
664
- "df.wise.PersistAsyncSchema.genericError": "Ceva nu a mers bine, te rug\u0103m s\u0103 \xEEncerci din nou."
674
+ "df.wise.PersistAsyncSchema.genericError": "Ceva nu a mers bine, te rug\u0103m s\u0103 \xEEncerci din nou.",
675
+ "df.wise.SearchLayout.loading": "Se \xEEncarc\u0103..."
665
676
  };
666
677
 
667
678
  // src/i18n/ru.json
@@ -695,7 +706,8 @@ var ru_default = {
695
706
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "\u0418\u0437\u0432\u0438\u043D\u0438\u0442\u0435, \u0444\u0430\u0439\u043B \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0439. \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0444\u0430\u0439\u043B \u043C\u0435\u043D\u044C\u0448\u0435\u0433\u043E \u0440\u0430\u0437\u043C\u0435\u0440\u0430.",
696
707
  "df.wise.MultipleFileUploadSchema.maxItemsError": "\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043D\u0435 \u0431\u043E\u043B\u0435\u0435 {maxItems} \u0444\u0430\u0439\u043B\u043E\u0432.",
697
708
  "df.wise.MultipleFileUploadSchema.minItemsError": "\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u043F\u043E \u043A\u0440\u0430\u0439\u043D\u0435\u0439 \u043C\u0435\u0440\u0435 {minItems} \u0444\u0430\u0439\u043B(-\u0430/\u043E\u0432).",
698
- "df.wise.PersistAsyncSchema.genericError": "\u0427\u0442\u043E-\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437."
709
+ "df.wise.PersistAsyncSchema.genericError": "\u0427\u0442\u043E-\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A, \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437.",
710
+ "df.wise.SearchLayout.loading": "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430..."
699
711
  };
700
712
 
701
713
  // src/i18n/th.json
@@ -729,7 +741,8 @@ var th_default = {
729
741
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "\u0E02\u0E2D\u0E2D\u0E20\u0E31\u0E22 \u0E44\u0E1F\u0E25\u0E4C\u0E19\u0E31\u0E49\u0E19\u0E43\u0E2B\u0E0D\u0E48\u0E40\u0E01\u0E34\u0E19\u0E44\u0E1B \u0E42\u0E1B\u0E23\u0E14\u0E2D\u0E31\u0E1B\u0E42\u0E2B\u0E25\u0E14\u0E44\u0E1F\u0E25\u0E4C\u0E17\u0E35\u0E48\u0E21\u0E35\u0E02\u0E19\u0E32\u0E14\u0E40\u0E25\u0E47\u0E01\u0E25\u0E07",
730
742
  "df.wise.MultipleFileUploadSchema.maxItemsError": "\u0E42\u0E1B\u0E23\u0E14\u0E2D\u0E31\u0E1B\u0E42\u0E2B\u0E25\u0E14 {maxItems} \u0E44\u0E1F\u0E25\u0E4C\u0E2B\u0E23\u0E37\u0E2D\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32",
731
743
  "df.wise.MultipleFileUploadSchema.minItemsError": "\u0E42\u0E1B\u0E23\u0E14\u0E2D\u0E31\u0E1B\u0E42\u0E2B\u0E25\u0E14\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22 {minItems} \u0E44\u0E1F\u0E25\u0E4C",
732
- "df.wise.PersistAsyncSchema.genericError": "\u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14\u0E1A\u0E32\u0E07\u0E2D\u0E22\u0E48\u0E32\u0E07 \u0E42\u0E1B\u0E23\u0E14\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07"
744
+ "df.wise.PersistAsyncSchema.genericError": "\u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14\u0E1A\u0E32\u0E07\u0E2D\u0E22\u0E48\u0E32\u0E07 \u0E42\u0E1B\u0E23\u0E14\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07",
745
+ "df.wise.SearchLayout.loading": "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14..."
733
746
  };
734
747
 
735
748
  // src/i18n/tr.json
@@ -763,7 +776,8 @@ var tr_default = {
763
776
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "\xDCzg\xFCn\xFCz, bu dosya \xE7ok b\xFCy\xFCk. L\xFCtfen daha k\xFC\xE7\xFCk bir dosya y\xFCkleyin.",
764
777
  "df.wise.MultipleFileUploadSchema.maxItemsError": "L\xFCtfen {maxItems} veya daha az dosya y\xFCkleyin.",
765
778
  "df.wise.MultipleFileUploadSchema.minItemsError": "L\xFCtfen en az {minItems} dosya y\xFCkleyin.",
766
- "df.wise.PersistAsyncSchema.genericError": "Bir \u015Feyler ters gitti, l\xFCtfen tekrar deneyin."
779
+ "df.wise.PersistAsyncSchema.genericError": "Bir \u015Feyler ters gitti, l\xFCtfen tekrar deneyin.",
780
+ "df.wise.SearchLayout.loading": "Y\xFCkleniyor..."
767
781
  };
768
782
 
769
783
  // src/i18n/zh_CN.json
@@ -797,7 +811,8 @@ var zh_CN_default = {
797
811
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "\u62B1\u6B49\uFF0C\u8BE5\u6587\u4EF6\u592A\u5927\u3002\u8BF7\u4E0A\u4F20\u4E00\u4E2A\u66F4\u5C0F\u7684\u6587\u4EF6\u3002",
798
812
  "df.wise.MultipleFileUploadSchema.maxItemsError": "\u8BF7\u4E0A\u4F20\u4E0D\u8D85\u8FC7 {maxItems} \u4E2A\u6587\u4EF6\u3002",
799
813
  "df.wise.MultipleFileUploadSchema.minItemsError": "\u8BF7\u4E0A\u4F20\u81F3\u5C11 {minItems} \u4E2A\u6587\u4EF6\u3002",
800
- "df.wise.PersistAsyncSchema.genericError": "\u51FA\u9519\u4E86\uFF0C\u8BF7\u91CD\u8BD5\u3002"
814
+ "df.wise.PersistAsyncSchema.genericError": "\u51FA\u9519\u4E86\uFF0C\u8BF7\u91CD\u8BD5\u3002",
815
+ "df.wise.SearchLayout.loading": "\u6B63\u5728\u52A0\u8F7D\u2026"
801
816
  };
802
817
 
803
818
  // src/i18n/zh_HK.json
@@ -831,7 +846,8 @@ var zh_HK_default = {
831
846
  "df.wise.MultipleFileUploadSchema.maxFileSizeError": "\u62B1\u6B49\uFF0C\u8A72\u6A94\u6848\u592A\u5927\u3002\u8ACB\u4E0A\u8F09\u4E00\u500B\u8F03\u5C0F\u7684\u6A94\u6848\u3002",
832
847
  "df.wise.MultipleFileUploadSchema.maxItemsError": "\u8ACB\u4E0D\u8981\u4E0A\u8F09\u8D85\u904E{maxItems}\u500B\u6A94\u6848\u3002",
833
848
  "df.wise.MultipleFileUploadSchema.minItemsError": "\u8ACB\u4E0A\u8F09\u81F3\u5C11{minItems}\u500B\u6A94\u6848\u3002",
834
- "df.wise.PersistAsyncSchema.genericError": "\u51FA\u73FE\u4E86\u554F\u984C\uFF0C\u8ACB\u518D\u8A66\u4E00\u6B21\u3002"
849
+ "df.wise.PersistAsyncSchema.genericError": "\u51FA\u73FE\u4E86\u554F\u984C\uFF0C\u8ACB\u518D\u8A66\u4E00\u6B21\u3002",
850
+ "df.wise.SearchLayout.loading": "\u8F09\u5165\u4E2D\u2026"
835
851
  };
836
852
 
837
853
  // src/i18n/index.ts
@@ -865,7 +881,7 @@ var i18n_default = translations;
865
881
 
866
882
  // src/dynamicFlow/DynamicFlow.tsx
867
883
  var import_react16 = require("react");
868
- var import_react_intl14 = require("react-intl");
884
+ var import_react_intl16 = require("react-intl");
869
885
  var import_dynamic_flow_client2 = require("@wise/dynamic-flow-client");
870
886
 
871
887
  // ../renderers/src/contexts/RendererHttpClientContext.tsx
@@ -979,10 +995,29 @@ function LabelContentWithHelp({ text, help }) {
979
995
 
980
996
  // ../renderers/src/components/FieldInput.tsx
981
997
  var import_jsx_runtime5 = require("react/jsx-runtime");
982
- function FieldInput({ id, children, label, error, description, help }) {
998
+ function FieldInput({ id, children, label, validation, description, help }) {
983
999
  const labelContent = label && help ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(LabelContentWithHelp, { text: label, help }) : label;
984
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_components3.Field, { id, label: labelContent, hint: description, error, children });
1000
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1001
+ import_components3.Field,
1002
+ {
1003
+ id,
1004
+ label: labelContent,
1005
+ description,
1006
+ message: validation == null ? void 0 : validation.message,
1007
+ sentiment: mapStatusToSentiment(validation),
1008
+ children
1009
+ }
1010
+ );
985
1011
  }
1012
+ var mapStatusToSentiment = (validation) => {
1013
+ if (validation) {
1014
+ if (validation.status === "valid") {
1015
+ return "positive";
1016
+ }
1017
+ return "negative";
1018
+ }
1019
+ return void 0;
1020
+ };
986
1021
  var FieldInput_default = FieldInput;
987
1022
 
988
1023
  // ../renderers/src/BooleanInputRenderer.tsx
@@ -991,9 +1026,27 @@ var import_jsx_runtime6 = require("react/jsx-runtime");
991
1026
  var BooleanInputRenderer = {
992
1027
  canRenderType: "input-boolean",
993
1028
  render: (props) => {
994
- const _a = props, { id, control, label = "", description, help, error, type, value } = _a, rest = __objRest(_a, ["id", "control", "label", "description", "help", "error", "type", "value"]);
1029
+ const _a = props, {
1030
+ id,
1031
+ control,
1032
+ label = "",
1033
+ description,
1034
+ help,
1035
+ type,
1036
+ validationState,
1037
+ value
1038
+ } = _a, rest = __objRest(_a, [
1039
+ "id",
1040
+ "control",
1041
+ "label",
1042
+ "description",
1043
+ "help",
1044
+ "type",
1045
+ "validationState",
1046
+ "value"
1047
+ ]);
995
1048
  const checkboxProps = __spreadProps(__spreadValues({}, rest), { label, secondary: description, checked: value });
996
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FieldInput_default, { id, label: "", description: "", error, help, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_components4.Checkbox, __spreadValues({ id }, checkboxProps)) });
1049
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FieldInput_default, { id, label: "", description: "", validation: validationState, help, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_components4.Checkbox, __spreadValues({ id }, checkboxProps)) });
997
1050
  }
998
1051
  };
999
1052
  var BooleanInputRenderer_default = BooleanInputRenderer;
@@ -1218,23 +1271,33 @@ var DateInputRenderer = {
1218
1271
  control,
1219
1272
  label,
1220
1273
  description,
1221
- error,
1222
1274
  type,
1223
1275
  help,
1276
+ validationState,
1224
1277
  value: initialValue
1225
1278
  } = _a, rest = __objRest(_a, [
1226
1279
  "id",
1227
1280
  "control",
1228
1281
  "label",
1229
1282
  "description",
1230
- "error",
1231
1283
  "type",
1232
1284
  "help",
1285
+ "validationState",
1233
1286
  "value"
1234
1287
  ]);
1235
1288
  const value = initialValue != null ? initialValue : "";
1236
1289
  const inputProps = __spreadProps(__spreadValues({}, rest), { value, id });
1237
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(FieldInput_default, { id, label, description, error, help, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(VariableDateInput_default, { control, inputProps }) });
1290
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1291
+ FieldInput_default,
1292
+ {
1293
+ id,
1294
+ label,
1295
+ description,
1296
+ validation: validationState,
1297
+ help,
1298
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(VariableDateInput_default, { control, inputProps })
1299
+ }
1300
+ );
1238
1301
  }
1239
1302
  };
1240
1303
  var DateInputRenderer_default = DateInputRenderer;
@@ -1522,23 +1585,33 @@ var import_jsx_runtime25 = require("react/jsx-runtime");
1522
1585
  var IntegerInputRenderer = {
1523
1586
  canRenderType: "input-integer",
1524
1587
  render: (props) => {
1525
- const _a = props, { id, label, error, description, help, type, value, onChange } = _a, rest = __objRest(_a, ["id", "label", "error", "description", "help", "type", "value", "onChange"]);
1526
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(FieldInput_default, { id, label, description, error, help, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1527
- import_components13.Input,
1528
- __spreadValues({
1588
+ const _a = props, { id, label, description, help, type, validationState, value, onChange } = _a, rest = __objRest(_a, ["id", "label", "description", "help", "type", "validationState", "value", "onChange"]);
1589
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1590
+ FieldInput_default,
1591
+ {
1529
1592
  id,
1530
- name: id,
1531
- type: "number",
1532
- step: "1",
1533
- pattern: "\\d+",
1534
- value: value != null ? value : "",
1535
- onChange: ({ target: { value: newValue } }) => {
1536
- const parsedValue = Number.parseInt(newValue, 10);
1537
- onChange(Number.isNaN(parsedValue) ? null : parsedValue);
1538
- },
1539
- onWheel
1540
- }, rest)
1541
- ) });
1593
+ label,
1594
+ description,
1595
+ validation: validationState,
1596
+ help,
1597
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1598
+ import_components13.Input,
1599
+ __spreadValues({
1600
+ id,
1601
+ name: id,
1602
+ type: "number",
1603
+ step: "1",
1604
+ pattern: "\\d+",
1605
+ value: value != null ? value : "",
1606
+ onChange: ({ target: { value: newValue } }) => {
1607
+ const parsedValue = Number.parseInt(newValue, 10);
1608
+ onChange(Number.isNaN(parsedValue) ? null : parsedValue);
1609
+ },
1610
+ onWheel
1611
+ }, rest)
1612
+ )
1613
+ }
1614
+ );
1542
1615
  }
1543
1616
  };
1544
1617
  var IntegerInputRenderer_default = IntegerInputRenderer;
@@ -1644,10 +1717,10 @@ function MultiSelectInputRendererComponent(props) {
1644
1717
  disabled,
1645
1718
  label,
1646
1719
  help,
1647
- error,
1648
1720
  options,
1649
1721
  placeholder,
1650
1722
  selectedIndices,
1723
+ validationState,
1651
1724
  onSelect
1652
1725
  } = props;
1653
1726
  const mergedIndices = stagedIndices != null ? stagedIndices : selectedIndices;
@@ -1678,39 +1751,49 @@ function MultiSelectInputRendererComponent(props) {
1678
1751
  };
1679
1752
  return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_components18.SelectInputOptionContent, __spreadValues({}, contentProps));
1680
1753
  };
1681
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(FieldInput_default, { id, label, help, description, error, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1682
- import_components18.SelectInput,
1754
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1755
+ FieldInput_default,
1683
1756
  {
1684
1757
  id,
1685
- items: options.map((option, index) => {
1686
- var _a, _b, _c;
1687
- return {
1688
- type: "option",
1689
- value: index,
1690
- filterMatchers: [
1691
- ...(_a = option.keywords) != null ? _a : [],
1692
- (_b = option.title) != null ? _b : "",
1693
- (_c = option.description) != null ? _c : ""
1694
- ],
1695
- disabled: option.disabled
1696
- };
1697
- }),
1698
- disabled,
1699
- placeholder,
1700
- value: mergedIndices,
1701
- renderValue,
1702
- multiple: true,
1703
- onChange: (values) => {
1704
- setStagedIndices(values);
1705
- },
1706
- onClose: () => {
1707
- if (stagedIndices) {
1708
- onSelect(stagedIndices);
1709
- setStagedIndices(void 0);
1758
+ label,
1759
+ help,
1760
+ description,
1761
+ validation: validationState,
1762
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
1763
+ import_components18.SelectInput,
1764
+ {
1765
+ id,
1766
+ items: options.map((option, index) => {
1767
+ var _a, _b, _c;
1768
+ return {
1769
+ type: "option",
1770
+ value: index,
1771
+ filterMatchers: [
1772
+ ...(_a = option.keywords) != null ? _a : [],
1773
+ (_b = option.title) != null ? _b : "",
1774
+ (_c = option.description) != null ? _c : ""
1775
+ ],
1776
+ disabled: option.disabled
1777
+ };
1778
+ }),
1779
+ disabled,
1780
+ placeholder,
1781
+ value: mergedIndices,
1782
+ renderValue,
1783
+ multiple: true,
1784
+ onChange: (values) => {
1785
+ setStagedIndices(values);
1786
+ },
1787
+ onClose: () => {
1788
+ if (stagedIndices) {
1789
+ onSelect(stagedIndices);
1790
+ setStagedIndices(void 0);
1791
+ }
1792
+ }
1710
1793
  }
1711
- }
1794
+ )
1712
1795
  }
1713
- ) });
1796
+ );
1714
1797
  }
1715
1798
  var MultiSelectInputRenderer_default = MultiSelectInputRenderer;
1716
1799
 
@@ -1726,8 +1809,8 @@ function UploadFieldInput({
1726
1809
  children,
1727
1810
  label,
1728
1811
  description,
1729
- error,
1730
- help
1812
+ help,
1813
+ validation
1731
1814
  }) {
1732
1815
  const labelContent = label && help ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(LabelContentWithHelp, { text: label, help }) : label;
1733
1816
  const descriptionId = description ? `${id}-description` : void 0;
@@ -1735,12 +1818,12 @@ function UploadFieldInput({
1735
1818
  "div",
1736
1819
  {
1737
1820
  className: (0, import_classnames3.default)("form-group d-block", {
1738
- "has-error": !!error
1821
+ "has-error": (validation == null ? void 0 : validation.status) === "invalid"
1739
1822
  }),
1740
1823
  children: [
1741
1824
  /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("label", { htmlFor: id, className: "control-label", children: labelContent }),
1742
1825
  children,
1743
- error && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components19.InlineAlert, { type: "negative", id: descriptionId, children: error })
1826
+ (validation == null ? void 0 : validation.status) === "invalid" && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components19.InlineAlert, { type: "negative", id: descriptionId, children: validation.message })
1744
1827
  ]
1745
1828
  }
1746
1829
  );
@@ -1783,10 +1866,10 @@ var MultiUploadInputRenderer = {
1783
1866
  label,
1784
1867
  description,
1785
1868
  disabled,
1786
- error,
1787
1869
  maxSize,
1788
1870
  maxItems,
1789
1871
  uploadLabel,
1872
+ validationState,
1790
1873
  onUpload,
1791
1874
  onDelete
1792
1875
  } = props;
@@ -1799,22 +1882,32 @@ var MultiUploadInputRenderer = {
1799
1882
  };
1800
1883
  const onDeleteFile = async (fileId) => onDelete(String(fileId));
1801
1884
  const descriptionId = description ? `${id}-description` : void 0;
1802
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(UploadFieldInput_default, { id, label, description, error, help, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1803
- import_components20.UploadInput,
1885
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1886
+ UploadFieldInput_default,
1804
1887
  {
1805
1888
  id,
1806
- "aria-describedby": descriptionId,
1889
+ label,
1807
1890
  description,
1808
- disabled,
1809
- fileTypes: getAcceptsString(accepts),
1810
- maxFiles: maxItems,
1811
- multiple: true,
1812
- sizeLimit: maxSize ? toKilobytes(maxSize) : void 0,
1813
- uploadButtonTitle: uploadLabel,
1814
- onDeleteFile,
1815
- onUploadFile
1891
+ validation: validationState,
1892
+ help,
1893
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
1894
+ import_components20.UploadInput,
1895
+ {
1896
+ id,
1897
+ "aria-describedby": descriptionId,
1898
+ description,
1899
+ disabled,
1900
+ fileTypes: getAcceptsString(accepts),
1901
+ maxFiles: maxItems,
1902
+ multiple: true,
1903
+ sizeLimit: maxSize ? toKilobytes(maxSize) : void 0,
1904
+ uploadButtonTitle: uploadLabel,
1905
+ onDeleteFile,
1906
+ onUploadFile
1907
+ }
1908
+ )
1816
1909
  }
1817
- ) });
1910
+ );
1818
1911
  }
1819
1912
  };
1820
1913
  var MultiUploadInputRenderer_default = MultiUploadInputRenderer;
@@ -1825,21 +1918,31 @@ var import_jsx_runtime33 = require("react/jsx-runtime");
1825
1918
  var NumberInputRenderer = {
1826
1919
  canRenderType: "input-number",
1827
1920
  render: (props) => {
1828
- const _a = props, { id, label, error, description, help, type, value, onChange } = _a, rest = __objRest(_a, ["id", "label", "error", "description", "help", "type", "value", "onChange"]);
1829
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(FieldInput_default, { id, label, description, error, help, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1830
- import_components21.Input,
1831
- __spreadValues({
1921
+ const _a = props, { id, label, description, help, type, validationState, value, onChange } = _a, rest = __objRest(_a, ["id", "label", "description", "help", "type", "validationState", "value", "onChange"]);
1922
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1923
+ FieldInput_default,
1924
+ {
1832
1925
  id,
1833
- name: id,
1834
- type: "number",
1835
- value: value != null ? value : "",
1836
- onChange: ({ target: { value: newValue } }) => {
1837
- const parsedValue = Number.parseFloat(newValue);
1838
- onChange(Number.isNaN(parsedValue) ? null : parsedValue);
1839
- },
1840
- onWheel
1841
- }, rest)
1842
- ) });
1926
+ label,
1927
+ description,
1928
+ validation: validationState,
1929
+ help,
1930
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
1931
+ import_components21.Input,
1932
+ __spreadValues({
1933
+ id,
1934
+ name: id,
1935
+ type: "number",
1936
+ value: value != null ? value : "",
1937
+ onChange: ({ target: { value: newValue } }) => {
1938
+ const parsedValue = Number.parseFloat(newValue);
1939
+ onChange(Number.isNaN(parsedValue) ? null : parsedValue);
1940
+ },
1941
+ onWheel
1942
+ }, rest)
1943
+ )
1944
+ }
1945
+ );
1843
1946
  }
1844
1947
  };
1845
1948
  var NumberInputRenderer_default = NumberInputRenderer;
@@ -1959,9 +2062,9 @@ function Repeatable(props) {
1959
2062
  description,
1960
2063
  editableItem,
1961
2064
  editItemTitle,
1962
- error,
1963
2065
  items,
1964
2066
  title,
2067
+ validationState,
1965
2068
  onEdit,
1966
2069
  onAdd,
1967
2070
  onSave,
@@ -1997,7 +2100,7 @@ function Repeatable(props) {
1997
2100
  "div",
1998
2101
  {
1999
2102
  className: (0, import_classnames5.default)("form-group", {
2000
- "has-error": error
2103
+ "has-error": (validationState == null ? void 0 : validationState.status) === "invalid"
2001
2104
  }),
2002
2105
  children: [
2003
2106
  items == null ? void 0 : items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ItemSummaryOption, { item, onClick: () => onEditItem(index) }, item.id)),
@@ -2010,7 +2113,7 @@ function Repeatable(props) {
2010
2113
  onClick: () => onAddItem()
2011
2114
  }
2012
2115
  ),
2013
- error && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_components24.InlineAlert, { type: "negative", children: error })
2116
+ (validationState == null ? void 0 : validationState.status) === "invalid" && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_components24.InlineAlert, { type: "negative", children: validationState.message })
2014
2117
  ]
2015
2118
  }
2016
2119
  ),
@@ -2049,7 +2152,7 @@ function ItemSummaryOption({
2049
2152
  var RepeatableRenderer_default = RepeatableRenderer;
2050
2153
 
2051
2154
  // ../renderers/src/SearchRenderer/BlockSearchRendererComponent.tsx
2052
- var import_components25 = require("@transferwise/components");
2155
+ var import_components26 = require("@transferwise/components");
2053
2156
 
2054
2157
  // ../renderers/src/SearchRenderer/ErrorResult.tsx
2055
2158
  var import_react_intl10 = require("react-intl");
@@ -2075,28 +2178,45 @@ var generic_error_messages_default = (0, import_react_intl9.defineMessages)({
2075
2178
  });
2076
2179
 
2077
2180
  // ../renderers/src/SearchRenderer/ErrorResult.tsx
2181
+ var import_components25 = require("@transferwise/components");
2078
2182
  var import_jsx_runtime36 = require("react/jsx-runtime");
2079
2183
  function ErrorResult({ state }) {
2080
2184
  const intl = (0, import_react_intl10.useIntl)();
2185
+ const buttonVisualProps = {
2186
+ priority: "tertiary",
2187
+ size: "sm",
2188
+ style: { marginTop: "-2px", padding: "0", width: "auto", display: "inline" }
2189
+ };
2081
2190
  return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("p", { className: "m-t-2", children: [
2082
2191
  intl.formatMessage(generic_error_messages_default.genericError),
2083
2192
  "\xA0",
2084
2193
  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2085
- "a",
2086
- {
2087
- href: "/",
2088
- onClick: (e) => {
2089
- e.preventDefault();
2194
+ import_components25.Button,
2195
+ __spreadProps(__spreadValues({}, buttonVisualProps), {
2196
+ onClick: () => {
2090
2197
  state.onRetry();
2091
2198
  },
2092
2199
  children: intl.formatMessage(generic_error_messages_default.retry)
2093
- }
2200
+ })
2094
2201
  )
2095
2202
  ] });
2096
2203
  }
2097
2204
 
2098
2205
  // ../renderers/src/SearchRenderer/BlockSearchRendererComponent.tsx
2099
2206
  var import_react10 = require("react");
2207
+
2208
+ // ../renderers/src/messages/search.messages.ts
2209
+ var import_react_intl11 = require("react-intl");
2210
+ var search_messages_default = (0, import_react_intl11.defineMessages)({
2211
+ loading: {
2212
+ id: "df.wise.SearchLayout.loading",
2213
+ defaultMessage: "Loading...",
2214
+ description: "A message shown to the user while their search is being processed, before results appear."
2215
+ }
2216
+ });
2217
+
2218
+ // ../renderers/src/SearchRenderer/BlockSearchRendererComponent.tsx
2219
+ var import_react_intl12 = require("react-intl");
2100
2220
  var import_jsx_runtime37 = require("react/jsx-runtime");
2101
2221
  function BlockSearchRendererComponent({
2102
2222
  id,
@@ -2109,9 +2229,10 @@ function BlockSearchRendererComponent({
2109
2229
  }) {
2110
2230
  const [hasSearched, setHasSearched] = (0, import_react10.useState)(false);
2111
2231
  const trackEvent = useTrackEvent();
2232
+ const { formatMessage } = (0, import_react_intl12.useIntl)();
2112
2233
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: getMargin(margin), children: [
2113
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(FieldInput_default, { id, description: "", error: "", help: "", label: title, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2114
- import_components25.Input,
2234
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(FieldInput_default, { id, description: "", validation: void 0, help: "", label: title, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2235
+ import_components26.Input,
2115
2236
  {
2116
2237
  id,
2117
2238
  name: id,
@@ -2127,7 +2248,7 @@ function BlockSearchRendererComponent({
2127
2248
  }
2128
2249
  }
2129
2250
  ) }),
2130
- isLoading ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment, { children: "Loading..." }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SearchResultContent, { state, onChange })
2251
+ isLoading ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment, { children: formatMessage(search_messages_default.loading) }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(SearchResultContent, { state, onChange })
2131
2252
  ] });
2132
2253
  }
2133
2254
  function SearchResultContent({
@@ -2147,16 +2268,16 @@ function SearchResultContent({
2147
2268
  }
2148
2269
  }
2149
2270
  function EmptySearchResult({ state }) {
2150
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components25.Markdown, { className: "m-t-2", config: { link: { target: "_blank" } }, children: state.message });
2271
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components26.Markdown, { className: "m-t-2", config: { link: { target: "_blank" } }, children: state.message });
2151
2272
  }
2152
2273
  function SearchResults({
2153
2274
  state
2154
2275
  }) {
2155
2276
  const trackEvent = useTrackEvent();
2156
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components25.NavigationOptionsList, { children: state.results.map((result) => {
2277
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components26.NavigationOptionsList, { children: state.results.map((result) => {
2157
2278
  const { icon, image } = result;
2158
2279
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2159
- import_components25.NavigationOption,
2280
+ import_components26.NavigationOption,
2160
2281
  {
2161
2282
  title: result.title,
2162
2283
  content: result.description,
@@ -2177,10 +2298,10 @@ function SearchResults({
2177
2298
  var BlockSearchRendererComponent_default = BlockSearchRendererComponent;
2178
2299
 
2179
2300
  // ../renderers/src/SearchRenderer/InlineSearchRendererComponent.tsx
2180
- var import_components26 = require("@transferwise/components");
2301
+ var import_components27 = require("@transferwise/components");
2181
2302
  var import_icons2 = require("@transferwise/icons");
2182
2303
  var import_react11 = require("react");
2183
- var import_react_intl11 = require("react-intl");
2304
+ var import_react_intl13 = require("react-intl");
2184
2305
  var import_jsx_runtime38 = require("react/jsx-runtime");
2185
2306
  function InlineSearchRenderer({
2186
2307
  id,
@@ -2192,9 +2313,9 @@ function InlineSearchRenderer({
2192
2313
  }) {
2193
2314
  const [hasSearched, setHasSearched] = (0, import_react11.useState)(false);
2194
2315
  const trackEvent = useTrackEvent();
2195
- const intl = (0, import_react_intl11.useIntl)();
2196
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: getMargin(margin), children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(FieldInput_default, { id, description: "", error: "", help: "", label: title, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2197
- import_components26.Typeahead,
2316
+ const intl = (0, import_react_intl13.useIntl)();
2317
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: getMargin(margin), children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(FieldInput_default, { id, description: "", validation: void 0, help: "", label: title, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2318
+ import_components27.Typeahead,
2198
2319
  {
2199
2320
  id: "typeahead-input-id",
2200
2321
  intl,
@@ -2239,14 +2360,15 @@ function mapResultToTypeaheadOption(result) {
2239
2360
  };
2240
2361
  }
2241
2362
  function TypeaheadFooter({ state, isLoading }) {
2363
+ const { formatMessage } = (0, import_react_intl13.useIntl)();
2242
2364
  if (state.type === "noResults") {
2243
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_components26.Markdown, { className: "m-t-2 m-x-2", config: { link: { target: "_blank" } }, children: state.message });
2365
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_components27.Markdown, { className: "m-t-2 m-x-2", config: { link: { target: "_blank" } }, children: state.message });
2244
2366
  }
2245
2367
  if (state.type === "error") {
2246
2368
  return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "m-t-2 m-x-2", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ErrorResult, { state }) });
2247
2369
  }
2248
2370
  if (state.type === "pending" || isLoading) {
2249
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "m-t-2 m-x-2", children: "Loading..." });
2371
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "m-t-2 m-x-2", children: formatMessage(search_messages_default.loading) });
2250
2372
  }
2251
2373
  return null;
2252
2374
  }
@@ -2261,7 +2383,7 @@ var SearchRenderer = {
2261
2383
  var SearchRenderer_default = SearchRenderer;
2262
2384
 
2263
2385
  // ../renderers/src/SelectInputRenderer/RadioInputRendererComponent.tsx
2264
- var import_components27 = require("@transferwise/components");
2386
+ var import_components28 = require("@transferwise/components");
2265
2387
  var import_jsx_runtime40 = require("react/jsx-runtime");
2266
2388
  function RadioInputRendererComponent(props) {
2267
2389
  const {
@@ -2269,36 +2391,46 @@ function RadioInputRendererComponent(props) {
2269
2391
  children,
2270
2392
  description,
2271
2393
  disabled,
2272
- error,
2273
2394
  help,
2274
2395
  label,
2275
2396
  options,
2276
2397
  selectedIndex,
2398
+ validationState,
2277
2399
  onSelect
2278
2400
  } = props;
2279
2401
  return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
2280
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(FieldInput_default, { id, label, help, description, error, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2281
- import_components27.RadioGroup,
2402
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2403
+ FieldInput_default,
2282
2404
  {
2283
- name: id,
2284
- radios: options.map((option, index) => ({
2285
- label: option.title,
2286
- value: index,
2287
- secondary: option.description,
2288
- disabled: option.disabled || disabled,
2289
- avatar: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(OptionMedia, { icon: option.icon, image: option.image })
2290
- })),
2291
- selectedValue: selectedIndex != null ? selectedIndex : void 0,
2292
- onChange: onSelect
2293
- },
2294
- `${id}-${selectedIndex}`
2295
- ) }) }),
2405
+ id,
2406
+ label,
2407
+ help,
2408
+ description,
2409
+ validation: validationState,
2410
+ children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
2411
+ import_components28.RadioGroup,
2412
+ {
2413
+ name: id,
2414
+ radios: options.map((option, index) => ({
2415
+ label: option.title,
2416
+ value: index,
2417
+ secondary: option.description,
2418
+ disabled: option.disabled || disabled,
2419
+ avatar: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(OptionMedia, { icon: option.icon, image: option.image })
2420
+ })),
2421
+ selectedValue: selectedIndex != null ? selectedIndex : void 0,
2422
+ onChange: onSelect
2423
+ },
2424
+ `${id}-${selectedIndex}`
2425
+ ) })
2426
+ }
2427
+ ),
2296
2428
  children
2297
2429
  ] });
2298
2430
  }
2299
2431
 
2300
2432
  // ../renderers/src/SelectInputRenderer/TabInputRendererComponent.tsx
2301
- var import_components28 = require("@transferwise/components");
2433
+ var import_components29 = require("@transferwise/components");
2302
2434
  var import_react12 = require("react");
2303
2435
  var import_jsx_runtime41 = require("react/jsx-runtime");
2304
2436
  function TabInputRendererComponent(props) {
@@ -2307,11 +2439,11 @@ function TabInputRendererComponent(props) {
2307
2439
  children,
2308
2440
  description,
2309
2441
  disabled,
2310
- error,
2311
2442
  help,
2312
2443
  label,
2313
2444
  options,
2314
2445
  selectedIndex,
2446
+ validationState,
2315
2447
  onSelect
2316
2448
  } = props;
2317
2449
  (0, import_react12.useEffect)(() => {
@@ -2320,41 +2452,51 @@ function TabInputRendererComponent(props) {
2320
2452
  }
2321
2453
  }, [selectedIndex, onSelect, options.length]);
2322
2454
  return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [
2323
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(FieldInput_default, { id, label, help, description, error, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
2324
- import_components28.Tabs,
2455
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
2456
+ FieldInput_default,
2325
2457
  {
2326
- name: id,
2327
- selected: selectedIndex != null ? selectedIndex : 0,
2328
- tabs: options.map((option) => ({
2329
- title: option.title,
2330
- // if we pass null, we get some props-types console errors
2331
- // eslint-disable-next-line react/jsx-no-useless-fragment
2332
- content: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, {}),
2333
- disabled: option.disabled || disabled
2334
- })),
2335
- onTabSelect: onSelect
2458
+ id,
2459
+ label,
2460
+ help,
2461
+ description,
2462
+ validation: validationState,
2463
+ children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
2464
+ import_components29.Tabs,
2465
+ {
2466
+ name: id,
2467
+ selected: selectedIndex != null ? selectedIndex : 0,
2468
+ tabs: options.map((option) => ({
2469
+ title: option.title,
2470
+ // if we pass null, we get some props-types console errors
2471
+ // eslint-disable-next-line react/jsx-no-useless-fragment
2472
+ content: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, {}),
2473
+ disabled: option.disabled || disabled
2474
+ })),
2475
+ onTabSelect: onSelect
2476
+ }
2477
+ )
2336
2478
  }
2337
- ) }),
2479
+ ),
2338
2480
  children
2339
2481
  ] });
2340
2482
  }
2341
2483
  var isValidIndex = (index, options) => index !== null && index >= 0 && index < options;
2342
2484
 
2343
2485
  // ../renderers/src/SelectInputRenderer/SelectInputRendererComponent.tsx
2344
- var import_components30 = require("@transferwise/components");
2486
+ var import_components31 = require("@transferwise/components");
2345
2487
 
2346
2488
  // ../renderers/src/SelectInputRenderer/SelectTriggerMedia.tsx
2347
- var import_components29 = require("@transferwise/components");
2489
+ var import_components30 = require("@transferwise/components");
2348
2490
  var import_jsx_runtime42 = require("react/jsx-runtime");
2349
2491
  function SelectTriggerMedia({ icon, image }) {
2350
2492
  if (image == null ? void 0 : image.url) {
2351
2493
  return null;
2352
2494
  }
2353
2495
  if (icon && "name" in icon) {
2354
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_components29.Avatar, { type: import_components29.AvatarType.ICON, size: 24, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(DynamicIcon_default, { name: icon.name }) });
2496
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_components30.Avatar, { type: import_components30.AvatarType.ICON, size: 24, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(DynamicIcon_default, { name: icon.name }) });
2355
2497
  }
2356
2498
  if (icon && "text" in icon) {
2357
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_components29.Avatar, { type: import_components29.AvatarType.ICON, size: 24, children: icon.text });
2499
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_components30.Avatar, { type: import_components30.AvatarType.ICON, size: 24, children: icon.text });
2358
2500
  }
2359
2501
  return null;
2360
2502
  }
@@ -2367,13 +2509,13 @@ function SelectInputRendererComponent(props) {
2367
2509
  children,
2368
2510
  description,
2369
2511
  disabled,
2370
- error,
2371
2512
  help,
2372
2513
  label,
2373
2514
  options,
2374
2515
  placeholder,
2375
2516
  required,
2376
2517
  selectedIndex,
2518
+ validationState,
2377
2519
  onSelect
2378
2520
  } = props;
2379
2521
  const items = options.map(
@@ -2401,54 +2543,84 @@ function SelectInputRendererComponent(props) {
2401
2543
  description: option.description,
2402
2544
  icon: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(OptionMedia, { icon: option.icon, image: option.image })
2403
2545
  };
2404
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_components30.SelectInputOptionContent, __spreadValues({}, contentProps));
2546
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_components31.SelectInputOptionContent, __spreadValues({}, contentProps));
2405
2547
  };
2406
2548
  return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(import_jsx_runtime43.Fragment, { children: [
2407
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(FieldInput_default, { id, label, help, description, error, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2408
- import_components30.SelectInput,
2549
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2550
+ FieldInput_default,
2409
2551
  {
2410
- name: id,
2411
- placeholder,
2412
- items,
2413
- disabled,
2414
- value: selectedIndex,
2415
- renderValue,
2416
- filterable: items.length >= 8,
2417
- onChange: onSelect,
2418
- onClear: required ? void 0 : () => onSelect(null)
2552
+ id,
2553
+ label,
2554
+ help,
2555
+ description,
2556
+ validation: validationState,
2557
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
2558
+ import_components31.SelectInput,
2559
+ {
2560
+ name: id,
2561
+ placeholder,
2562
+ items,
2563
+ disabled,
2564
+ value: selectedIndex,
2565
+ renderValue,
2566
+ filterable: items.length >= 8,
2567
+ onChange: onSelect,
2568
+ onClear: required ? void 0 : () => onSelect(null)
2569
+ }
2570
+ )
2419
2571
  }
2420
- ) }),
2572
+ ),
2421
2573
  children
2422
2574
  ] });
2423
2575
  }
2424
2576
 
2425
2577
  // ../renderers/src/SelectInputRenderer/SegmentedInputRendererComponent.tsx
2426
2578
  var import_react13 = require("react");
2427
- var import_components31 = require("@transferwise/components");
2579
+ var import_components32 = require("@transferwise/components");
2428
2580
  var import_jsx_runtime44 = require("react/jsx-runtime");
2429
2581
  function SegmentedInputRendererComponent(props) {
2430
- const { id, children, description, error, help, label, options, selectedIndex, onSelect } = props;
2582
+ const {
2583
+ id,
2584
+ children,
2585
+ description,
2586
+ help,
2587
+ label,
2588
+ options,
2589
+ selectedIndex,
2590
+ validationState,
2591
+ onSelect
2592
+ } = props;
2431
2593
  (0, import_react13.useEffect)(() => {
2432
2594
  if (!isValidIndex2(selectedIndex, options.length)) {
2433
2595
  onSelect(0);
2434
2596
  }
2435
2597
  }, [selectedIndex, onSelect, options.length]);
2436
2598
  return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [
2437
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(FieldInput_default, { id, label, help, description, error, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2438
- import_components31.SegmentedControl,
2599
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2600
+ FieldInput_default,
2439
2601
  {
2440
- name: `${id}-segmented-control`,
2441
- value: String(selectedIndex),
2442
- mode: "view",
2443
- segments: options.map((option, index) => ({
2444
- id: String(index),
2445
- value: String(index),
2446
- label: option.title,
2447
- controls: `${id}-children`
2448
- })),
2449
- onChange: (value) => onSelect(Number(value))
2602
+ id,
2603
+ label,
2604
+ help,
2605
+ description,
2606
+ validation: validationState,
2607
+ children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
2608
+ import_components32.SegmentedControl,
2609
+ {
2610
+ name: `${id}-segmented-control`,
2611
+ value: String(selectedIndex),
2612
+ mode: "view",
2613
+ segments: options.map((option, index) => ({
2614
+ id: String(index),
2615
+ value: String(index),
2616
+ label: option.title,
2617
+ controls: `${id}-children`
2618
+ })),
2619
+ onChange: (value) => onSelect(Number(value))
2620
+ }
2621
+ )
2450
2622
  }
2451
- ) }),
2623
+ ),
2452
2624
  /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { id: `${id}-children`, children })
2453
2625
  ] });
2454
2626
  }
@@ -2475,21 +2647,28 @@ var SelectInputRenderer = {
2475
2647
  var SelectInputRenderer_default = SelectInputRenderer;
2476
2648
 
2477
2649
  // ../renderers/src/StatusListRenderer.tsx
2478
- var import_components32 = require("@transferwise/components");
2650
+ var import_components33 = require("@transferwise/components");
2479
2651
  var import_jsx_runtime46 = require("react/jsx-runtime");
2480
2652
  var StatusListRenderer = {
2481
2653
  canRenderType: "status-list",
2482
2654
  render: ({ margin, items, title }) => /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: getMargin(margin), children: [
2483
- title ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_components32.Header, { title }) : null,
2484
- items.map(({ description, icon, status, title: itemTitle }) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2485
- import_components32.Summary,
2655
+ title ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_components33.Header, { title }) : null,
2656
+ items.map(({ callToAction, description, icon, status, title: itemTitle }) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2657
+ import_components33.Summary,
2486
2658
  {
2487
2659
  title: itemTitle,
2488
2660
  description,
2489
2661
  icon: icon && "name" in icon ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(DynamicIcon_default, { name: icon.name }) : null,
2490
- status: mapStatus(status)
2662
+ status: mapStatus(status),
2663
+ action: callToAction ? {
2664
+ "aria-label": callToAction.accessibilityDescription,
2665
+ href: callToAction.href,
2666
+ text: callToAction.title,
2667
+ target: callToAction.href ? "_blank" : void 0,
2668
+ onClick: callToAction.href ? void 0 : callToAction.onClick
2669
+ } : void 0
2491
2670
  },
2492
- `${title}/${description || ""}`
2671
+ `${itemTitle}/${description || ""}`
2493
2672
  ))
2494
2673
  ] })
2495
2674
  };
@@ -2502,7 +2681,7 @@ var mapStatus = (status) => {
2502
2681
  };
2503
2682
 
2504
2683
  // ../renderers/src/components/VariableTextInput.tsx
2505
- var import_components33 = require("@transferwise/components");
2684
+ var import_components34 = require("@transferwise/components");
2506
2685
  var import_jsx_runtime47 = require("react/jsx-runtime");
2507
2686
  function VariableTextInput({
2508
2687
  control,
@@ -2528,37 +2707,37 @@ function TextInput(_a) {
2528
2707
  if (typeof displayFormat === "string") {
2529
2708
  const inputProps = __spreadValues({ id, name: id, className: "form-control" }, rest);
2530
2709
  return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2531
- import_components33.InputWithDisplayFormat,
2710
+ import_components34.InputWithDisplayFormat,
2532
2711
  __spreadValues({
2533
2712
  displayPattern: displayFormat,
2534
2713
  onChange: (newValue) => onChange(newValue)
2535
2714
  }, inputProps)
2536
2715
  );
2537
2716
  }
2538
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components33.Input, __spreadValues({ id, name: id, onChange: (e) => onChange(e.target.value) }, rest));
2717
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components34.Input, __spreadValues({ id, name: id, onChange: (e) => onChange(e.target.value) }, rest));
2539
2718
  }
2540
2719
  function TextAreaInput(_a) {
2541
2720
  var _b = _a, { id, displayFormat, onChange } = _b, rest = __objRest(_b, ["id", "displayFormat", "onChange"]);
2542
2721
  const textAreaProps = __spreadValues({ id, name: id }, rest);
2543
2722
  return typeof displayFormat === "string" ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2544
- import_components33.TextareaWithDisplayFormat,
2723
+ import_components34.TextareaWithDisplayFormat,
2545
2724
  __spreadValues({
2546
2725
  displayPattern: displayFormat,
2547
2726
  onChange: (newValue) => onChange(newValue)
2548
2727
  }, textAreaProps)
2549
- ) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components33.TextArea, __spreadValues({ onChange: (e) => onChange(e.target.value) }, textAreaProps));
2728
+ ) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components34.TextArea, __spreadValues({ onChange: (e) => onChange(e.target.value) }, textAreaProps));
2550
2729
  }
2551
2730
  function NumericInput(_a) {
2552
2731
  var _b = _a, { id, displayFormat, onChange } = _b, rest = __objRest(_b, ["id", "displayFormat", "onChange"]);
2553
2732
  const numericProps = __spreadValues({ id, name: id, onWheel }, rest);
2554
2733
  return typeof displayFormat === "string" ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2555
- import_components33.InputWithDisplayFormat,
2734
+ import_components34.InputWithDisplayFormat,
2556
2735
  __spreadValues({
2557
2736
  displayPattern: displayFormat,
2558
2737
  onChange: (newValue) => onChange(numericValueOrNull(newValue))
2559
2738
  }, numericProps)
2560
2739
  ) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
2561
- import_components33.Input,
2740
+ import_components34.Input,
2562
2741
  __spreadValues({
2563
2742
  onChange: ({ target: { value: newValue } }) => onChange(numericValueOrNull(newValue))
2564
2743
  }, numericProps)
@@ -2566,7 +2745,7 @@ function NumericInput(_a) {
2566
2745
  }
2567
2746
  function PhoneNumberInput(_a) {
2568
2747
  var _b = _a, { value } = _b, rest = __objRest(_b, ["value"]);
2569
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components33.PhoneNumberInput, __spreadValues({ initialValue: value }, rest));
2748
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_components34.PhoneNumberInput, __spreadValues({ initialValue: value }, rest));
2570
2749
  }
2571
2750
  var VariableTextInput_default = VariableTextInput;
2572
2751
 
@@ -2585,6 +2764,7 @@ var TextInputRenderer = {
2585
2764
  maxLength,
2586
2765
  minLength,
2587
2766
  type,
2767
+ validationState,
2588
2768
  value: initialValue
2589
2769
  } = _a, rest = __objRest(_a, [
2590
2770
  "id",
@@ -2596,22 +2776,33 @@ var TextInputRenderer = {
2596
2776
  "maxLength",
2597
2777
  "minLength",
2598
2778
  "type",
2779
+ "validationState",
2599
2780
  "value"
2600
2781
  ]);
2601
2782
  const value = initialValue != null ? initialValue : "";
2602
2783
  const inputProps = __spreadProps(__spreadValues({}, rest), { value, id });
2603
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(FieldInput_default, { id, label, description, error, help, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(VariableTextInput_default, { control, inputProps }) });
2784
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
2785
+ FieldInput_default,
2786
+ {
2787
+ id,
2788
+ label,
2789
+ description,
2790
+ validation: validationState,
2791
+ help,
2792
+ children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(VariableTextInput_default, { control, inputProps })
2793
+ }
2794
+ );
2604
2795
  }
2605
2796
  };
2606
2797
  var TextInputRenderer_default = TextInputRenderer;
2607
2798
 
2608
2799
  // ../renderers/src/UploadInputRenderer.tsx
2609
- var import_components34 = require("@transferwise/components");
2800
+ var import_components35 = require("@transferwise/components");
2610
2801
  var import_jsx_runtime49 = require("react/jsx-runtime");
2611
2802
  var UploadInputRenderer = {
2612
2803
  canRenderType: "input-upload",
2613
2804
  render: (props) => {
2614
- const { id, accepts, error, label, description, disabled, maxSize, onUpload } = props;
2805
+ const { id, accepts, label, description, disabled, maxSize, validationState, onUpload } = props;
2615
2806
  const onUploadFile = async (formData) => {
2616
2807
  const file = formData.get("file");
2617
2808
  return onUpload(file).then(() => ({
@@ -2623,19 +2814,28 @@ var UploadInputRenderer = {
2623
2814
  };
2624
2815
  return (
2625
2816
  // We don't pass help here as there is no sensible place to display it
2626
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(UploadFieldInput_default, { id, label: void 0, description: void 0, error, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2627
- import_components34.UploadInput,
2817
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2818
+ UploadFieldInput_default,
2628
2819
  {
2629
2820
  id,
2630
- description,
2631
- disabled,
2632
- fileTypes: getAcceptsString(accepts),
2633
- sizeLimit: maxSize ? toKilobytes(maxSize) : void 0,
2634
- uploadButtonTitle: label,
2635
- onDeleteFile,
2636
- onUploadFile
2821
+ label: void 0,
2822
+ description: void 0,
2823
+ validation: validationState,
2824
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2825
+ import_components35.UploadInput,
2826
+ {
2827
+ id,
2828
+ description,
2829
+ disabled,
2830
+ fileTypes: getAcceptsString(accepts),
2831
+ sizeLimit: maxSize ? toKilobytes(maxSize) : void 0,
2832
+ uploadButtonTitle: label,
2833
+ onDeleteFile,
2834
+ onUploadFile
2835
+ }
2836
+ )
2637
2837
  }
2638
- ) })
2838
+ )
2639
2839
  );
2640
2840
  }
2641
2841
  };
@@ -2650,10 +2850,10 @@ var LargeUploadRenderer = {
2650
2850
  label,
2651
2851
  description,
2652
2852
  disabled,
2653
- error,
2654
2853
  help,
2655
2854
  maxSize,
2656
2855
  type,
2856
+ validationState,
2657
2857
  onUpload
2658
2858
  } = _a, rest = __objRest(_a, [
2659
2859
  "id",
@@ -2662,10 +2862,10 @@ var LargeUploadRenderer = {
2662
2862
  "label",
2663
2863
  "description",
2664
2864
  "disabled",
2665
- "error",
2666
2865
  "help",
2667
2866
  "maxSize",
2668
2867
  "type",
2868
+ "validationState",
2669
2869
  "onUpload"
2670
2870
  ]);
2671
2871
  const uploadProps = __spreadProps(__spreadValues({}, rest), { id, name: id });
@@ -2678,21 +2878,31 @@ var LargeUploadRenderer = {
2678
2878
  throw e;
2679
2879
  }
2680
2880
  };
2681
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(FieldInput_default, { id, label, description, error, help, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2682
- import_components34.Upload,
2683
- __spreadProps(__spreadValues({}, uploadProps), {
2684
- usAccept: getAcceptsString(accepts),
2685
- usDisabled: disabled,
2686
- onSuccess: onUploadFile,
2687
- onFailure: async () => onUpload(null),
2688
- onCancel: async () => onUpload(null)
2689
- })
2690
- ) });
2881
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2882
+ FieldInput_default,
2883
+ {
2884
+ id,
2885
+ label,
2886
+ description,
2887
+ validation: validationState,
2888
+ help,
2889
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
2890
+ import_components35.Upload,
2891
+ __spreadProps(__spreadValues({}, uploadProps), {
2892
+ usAccept: getAcceptsString(accepts),
2893
+ usDisabled: disabled,
2894
+ onSuccess: onUploadFile,
2895
+ onFailure: async () => onUpload(null),
2896
+ onCancel: async () => onUpload(null)
2897
+ })
2898
+ )
2899
+ }
2900
+ );
2691
2901
  }
2692
2902
  };
2693
2903
 
2694
2904
  // ../renderers/src/ReviewRenderer.tsx
2695
- var import_components35 = require("@transferwise/components");
2905
+ var import_components36 = require("@transferwise/components");
2696
2906
  var import_jsx_runtime50 = require("react/jsx-runtime");
2697
2907
  var ReviewRenderer = {
2698
2908
  canRenderType: "review",
@@ -2706,9 +2916,9 @@ var ReviewRenderer = {
2706
2916
  }
2707
2917
  } : void 0;
2708
2918
  return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: getMargin(margin), children: [
2709
- (title || callToAction) && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_components35.Header, { title: title != null ? title : "", action }),
2919
+ (title || callToAction) && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_components36.Header, { title: title != null ? title : "", action }),
2710
2920
  /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: margin, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
2711
- import_components35.DefinitionList,
2921
+ import_components36.DefinitionList,
2712
2922
  {
2713
2923
  layout: orientation,
2714
2924
  definitions: fields.map(({ label, value, help }, index) => ({
@@ -2756,11 +2966,11 @@ var getFieldValue = (value, help, orientation) => {
2756
2966
  var import_react15 = require("react");
2757
2967
 
2758
2968
  // ../renderers/src/step/ExternalConfirmationDialog.tsx
2759
- var import_react_intl13 = require("react-intl");
2969
+ var import_react_intl15 = require("react-intl");
2760
2970
 
2761
2971
  // ../renderers/src/messages/external-confirmation.messages.ts
2762
- var import_react_intl12 = require("react-intl");
2763
- var external_confirmation_messages_default = (0, import_react_intl12.defineMessages)({
2972
+ var import_react_intl14 = require("react-intl");
2973
+ var external_confirmation_messages_default = (0, import_react_intl14.defineMessages)({
2764
2974
  title: {
2765
2975
  id: "df.wise.ExternalConfirmation.title",
2766
2976
  defaultMessage: "Please confirm",
@@ -2784,19 +2994,19 @@ var external_confirmation_messages_default = (0, import_react_intl12.defineMessa
2784
2994
  });
2785
2995
 
2786
2996
  // ../renderers/src/step/ExternalConfirmationDialog.tsx
2787
- var import_components36 = require("@transferwise/components");
2997
+ var import_components37 = require("@transferwise/components");
2788
2998
  var import_jsx_runtime51 = require("react/jsx-runtime");
2789
2999
  function ExternalConfirmationDialog({
2790
3000
  external,
2791
3001
  onClose
2792
3002
  }) {
2793
- const { formatMessage } = (0, import_react_intl13.useIntl)();
3003
+ const { formatMessage } = (0, import_react_intl15.useIntl)();
2794
3004
  return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "df-box-renderer-fixed-width", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "df-box-renderer-width-lg", children: [
2795
3005
  /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("h2", { className: "text-xs-center m-b-5", children: formatMessage(external_confirmation_messages_default.title) }),
2796
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_components36.Markdown, { config: { link: { target: "_blank" } }, className: "text-xs-center m-b-5", children: formatMessage(external_confirmation_messages_default.description, { origin: getOrigin(external.url) }) }),
3006
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_components37.Markdown, { config: { link: { target: "_blank" } }, className: "text-xs-center m-b-5", children: formatMessage(external_confirmation_messages_default.description, { origin: getOrigin(external.url) }) }),
2797
3007
  /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "df-box-renderer-fixed-width", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "df-box-renderer-width-lg", children: [
2798
3008
  /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
2799
- import_components36.Button,
3009
+ import_components37.Button,
2800
3010
  {
2801
3011
  block: true,
2802
3012
  className: "m-b-2",
@@ -2809,7 +3019,7 @@ function ExternalConfirmationDialog({
2809
3019
  children: formatMessage(external_confirmation_messages_default.open)
2810
3020
  }
2811
3021
  ),
2812
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_components36.Button, { block: true, className: "m-b-2", priority: "tertiary", size: "md", onClick: onClose, children: formatMessage(external_confirmation_messages_default.cancel) })
3022
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_components37.Button, { block: true, className: "m-b-2", priority: "tertiary", size: "md", onClick: onClose, children: formatMessage(external_confirmation_messages_default.cancel) })
2813
3023
  ] }) })
2814
3024
  ] }) });
2815
3025
  }
@@ -2838,23 +3048,21 @@ function useExternal(url) {
2838
3048
  }
2839
3049
 
2840
3050
  // ../renderers/src/step/BackButton.tsx
2841
- var import_components37 = require("@transferwise/components");
3051
+ var import_components38 = require("@transferwise/components");
2842
3052
  var import_icons3 = require("@transferwise/icons");
2843
3053
  var import_jsx_runtime52 = require("react/jsx-runtime");
2844
3054
  function BackButton({ title, onClick }) {
2845
3055
  return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "m-b-2", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
2846
- "a",
3056
+ "button",
2847
3057
  {
2848
- href: "/",
3058
+ type: "button",
2849
3059
  className: "df-back-btn",
3060
+ title,
2850
3061
  "aria-label": title,
2851
- onClick: (event) => {
2852
- event.preventDefault();
2853
- onClick();
2854
- },
3062
+ onClick,
2855
3063
  children: [
2856
3064
  /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "sr-only", children: title }),
2857
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components37.Avatar, { type: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_icons3.ArrowLeft, { size: "24" }) })
3065
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_components38.Avatar, { type: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_icons3.ArrowLeft, { size: "24" }) })
2858
3066
  ]
2859
3067
  }
2860
3068
  ) });
@@ -2862,7 +3070,7 @@ function BackButton({ title, onClick }) {
2862
3070
  var BackButton_default = BackButton;
2863
3071
 
2864
3072
  // ../renderers/src/step/StepRenderer.tsx
2865
- var import_components38 = require("@transferwise/components");
3073
+ var import_components39 = require("@transferwise/components");
2866
3074
  var import_jsx_runtime53 = require("react/jsx-runtime");
2867
3075
  var StepRenderer = {
2868
3076
  canRenderType: "step",
@@ -2878,10 +3086,10 @@ function StepRendererComponent(props) {
2878
3086
  return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(StepRendererContextProvider, { value, children: [
2879
3087
  back ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(BackButton_default, __spreadValues({}, back)) : null,
2880
3088
  title || description ? /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "m-b-4", children: [
2881
- title ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_components38.Title, { as: "h1", type: "title-section", className: "text-xs-center m-b-2", children: title }) : void 0,
3089
+ title ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_components39.Title, { as: "h1", type: "title-section", className: "text-xs-center m-b-2", children: title }) : void 0,
2882
3090
  description ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-xs-center np-text-body-large", children: description }) : void 0
2883
3091
  ] }) : void 0,
2884
- error ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_components38.Alert, { type: "negative", className: "m-b-2", message: error }) : void 0,
3092
+ error ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_components39.Alert, { type: "negative", className: "m-b-2", message: error }) : void 0,
2885
3093
  children
2886
3094
  ] });
2887
3095
  }
@@ -2943,7 +3151,7 @@ var DynamicFragment = (0, import_react16.forwardRef)(function DynamicFragment2(p
2943
3151
  return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(RendererHttpClientProvider, { httpClient, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_dynamic_flow_client2.DynamicFragmentCore, __spreadProps(__spreadValues({}, coreProps), { ref })) });
2944
3152
  });
2945
3153
  var useWiseHttpClient = (httpClient) => {
2946
- const { locale } = (0, import_react_intl14.useIntl)();
3154
+ const { locale } = (0, import_react_intl16.useIntl)();
2947
3155
  return (0, import_react16.useCallback)(
2948
3156
  async (input, init = {}) => {
2949
3157
  const headers = new Headers(init.headers);