@wise/dynamic-flow-client-internal 4.32.2 → 4.33.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.
Files changed (3) hide show
  1. package/build/main.js +94 -66
  2. package/build/main.mjs +88 -60
  3. package/package.json +12 -12
package/build/main.js CHANGED
@@ -369,7 +369,7 @@ var import_art = require("@wise/art");
369
369
  var import_jsx_runtime8 = require("react/jsx-runtime");
370
370
  var countryUrnPrefix = "urn:wise:countries:";
371
371
  var currencyUrnPrefix = "urn:wise:currencies:";
372
- var isUrnFlag = (uri) => uri.startsWith(countryUrnPrefix) || uri.startsWith(currencyUrnPrefix);
372
+ var isUrnFlag = (uri) => (uri.startsWith(countryUrnPrefix) || uri.startsWith(currencyUrnPrefix)) && uri.endsWith(":image");
373
373
  function UrnFlag({ size, urn }) {
374
374
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_art.Flag, { code: getCode(urn), intrinsicSize: size });
375
375
  }
@@ -931,7 +931,7 @@ var import_react3 = require("react");
931
931
 
932
932
  // ../renderers/src/DecisionRenderer/filter-and-sort-decision-options.ts
933
933
  function filterAndSortDecisionOptions(selectOptions, query) {
934
- const upperQuery = query.toUpperCase().trim();
934
+ const upperQuery = normalizeAndRemoveAccents(query);
935
935
  const filteredItems = selectOptions.filter((option) => {
936
936
  var _a, _b, _c, _d;
937
937
  const searchableWords = [
@@ -942,7 +942,9 @@ function filterAndSortDecisionOptions(selectOptions, query) {
942
942
  (_b = option.supportingValues) == null ? void 0 : _b.subvalue,
943
943
  ...(_c = option.keywords) != null ? _c : []
944
944
  ];
945
- return (_d = searchableWords.some((word) => word == null ? void 0 : word.toUpperCase().includes(upperQuery))) != null ? _d : false;
945
+ return (_d = searchableWords.some(
946
+ (word) => word && normalizeAndRemoveAccents(word).includes(upperQuery)
947
+ )) != null ? _d : false;
946
948
  });
947
949
  return [...filteredItems].sort((a, b) => {
948
950
  const aTitleUpper = a.title.toUpperCase();
@@ -966,6 +968,7 @@ function filterAndSortDecisionOptions(selectOptions, query) {
966
968
  return a.title.localeCompare(b.title);
967
969
  });
968
970
  }
971
+ var normalizeAndRemoveAccents = (text) => text.trim().toLowerCase().normalize("NFKD").replace(new RegExp("\\p{Diacritic}", "gu"), "");
969
972
 
970
973
  // ../renderers/src/DecisionRenderer/DecisionList.tsx
971
974
  var import_jsx_runtime25 = require("react/jsx-runtime");
@@ -3280,6 +3283,12 @@ var getAdditionalInfo = (additionalInfo) => {
3280
3283
  return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_components53.ListItem.AdditionalInfo, { children: additionalInfo == null ? void 0 : additionalInfo.text });
3281
3284
  };
3282
3285
 
3286
+ // ../renderers/src/NewListItem/shouldUseAvatar.ts
3287
+ var shouldUseAvatar = (control, tags) => {
3288
+ var _a;
3289
+ return control === "with-avatar" || ((_a = tags == null ? void 0 : tags.includes("with-avatar")) != null ? _a : false);
3290
+ };
3291
+
3283
3292
  // ../renderers/src/NewListItem/NewDecisionRenderer.tsx
3284
3293
  var import_jsx_runtime77 = require("react/jsx-runtime");
3285
3294
  var DecisionRenderer2 = {
@@ -3293,11 +3302,11 @@ var renderDecisionList2 = ({ options, control }) => {
3293
3302
  disabled,
3294
3303
  media,
3295
3304
  title: itemTitle,
3296
- tag,
3297
3305
  href,
3298
3306
  additionalText,
3299
3307
  inlineAlert,
3300
3308
  supportingValues,
3309
+ tags,
3301
3310
  onClick
3302
3311
  } = option;
3303
3312
  return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
@@ -3305,11 +3314,11 @@ var renderDecisionList2 = ({ options, control }) => {
3305
3314
  {
3306
3315
  title: itemTitle,
3307
3316
  subtitle: description,
3308
- spotlight: control === "spotlight" ? tag === "spotlight-active" ? "active" : "inactive" : void 0,
3317
+ spotlight: control === "spotlight" ? (tags == null ? void 0 : tags.includes("spotlight-active")) ? "active" : "inactive" : void 0,
3309
3318
  disabled,
3310
3319
  valueTitle: supportingValues == null ? void 0 : supportingValues.value,
3311
3320
  valueSubtitle: supportingValues == null ? void 0 : supportingValues.subvalue,
3312
- media: getMedia(media, control === "with-avatar" || tag === "with-avatar"),
3321
+ media: getMedia(media, shouldUseAvatar(control, tags)),
3313
3322
  prompt: getInlineAlert(inlineAlert),
3314
3323
  additionalInfo: additionalText ? getAdditionalInfo({ text: additionalText }) : void 0,
3315
3324
  control: href ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_components54.ListItem.Navigation, { href, target: "_blank" }) : /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_components54.ListItem.Navigation, { onClick })
@@ -3321,32 +3330,69 @@ var renderDecisionList2 = ({ options, control }) => {
3321
3330
  var NewDecisionRenderer_default = DecisionRenderer2;
3322
3331
 
3323
3332
  // ../renderers/src/NewListItem/NewListRenderer.tsx
3333
+ var import_components56 = require("@transferwise/components");
3334
+
3335
+ // ../renderers/src/NewListItem/getCTAControl.tsx
3324
3336
  var import_components55 = require("@transferwise/components");
3325
3337
  var import_jsx_runtime78 = require("react/jsx-runtime");
3338
+ var getCTAControl = (callToAction, tags) => {
3339
+ if (!callToAction) {
3340
+ return void 0;
3341
+ }
3342
+ const { accessibilityDescription, href, title, onClick } = callToAction;
3343
+ const priority = (tags == null ? void 0 : tags.includes("cta-secondary")) ? "secondary" : "secondary-neutral";
3344
+ if (href) {
3345
+ return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
3346
+ import_components55.ListItem.Button,
3347
+ {
3348
+ href,
3349
+ partiallyInteractive: true,
3350
+ priority,
3351
+ "aria-description": accessibilityDescription,
3352
+ children: title
3353
+ }
3354
+ );
3355
+ }
3356
+ return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
3357
+ import_components55.ListItem.Button,
3358
+ {
3359
+ "aria-description": accessibilityDescription,
3360
+ partiallyInteractive: true,
3361
+ priority,
3362
+ onClick,
3363
+ children: title
3364
+ }
3365
+ );
3366
+ };
3367
+
3368
+ // ../renderers/src/NewListItem/NewListRenderer.tsx
3369
+ var import_jsx_runtime79 = require("react/jsx-runtime");
3326
3370
  var ListRenderer2 = {
3327
3371
  canRenderType: "list",
3328
- render: ({ callToAction, control, margin, items, title }) => /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { className: getMargin(margin), children: [
3329
- /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Header7, { title, callToAction }),
3372
+ render: ({ callToAction, control, margin, items, title }) => /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: getMargin(margin), children: [
3373
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(Header7, { title, callToAction }),
3330
3374
  items.map((item) => {
3331
3375
  const {
3332
3376
  title: itemTitle,
3333
3377
  description,
3334
3378
  supportingValues,
3335
3379
  media,
3336
- tag,
3337
3380
  additionalInfo,
3338
- inlineAlert
3381
+ inlineAlert,
3382
+ callToAction: itemCallToAction,
3383
+ tags
3339
3384
  } = item;
3340
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
3341
- import_components55.ListItem,
3385
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
3386
+ import_components56.ListItem,
3342
3387
  {
3343
3388
  title: itemTitle,
3344
3389
  subtitle: description,
3345
3390
  valueTitle: supportingValues == null ? void 0 : supportingValues.value,
3346
3391
  valueSubtitle: supportingValues == null ? void 0 : supportingValues.subvalue,
3347
- media: getMedia(media, control === "with-avatar" || tag === "with-avatar"),
3392
+ media: getMedia(media, shouldUseAvatar(control, tags)),
3348
3393
  prompt: getInlineAlert(inlineAlert),
3349
- additionalInfo: getAdditionalInfo(additionalInfo)
3394
+ additionalInfo: getAdditionalInfo(additionalInfo),
3395
+ control: getCTAControl(itemCallToAction, tags)
3350
3396
  },
3351
3397
  itemTitle
3352
3398
  );
@@ -3356,9 +3402,9 @@ var ListRenderer2 = {
3356
3402
  var NewListRenderer_default = ListRenderer2;
3357
3403
 
3358
3404
  // ../renderers/src/NewListItem/NewReviewRenderer.tsx
3359
- var import_components56 = require("@transferwise/components");
3405
+ var import_components57 = require("@transferwise/components");
3360
3406
  var import_icons4 = require("@transferwise/icons");
3361
- var import_jsx_runtime79 = require("react/jsx-runtime");
3407
+ var import_jsx_runtime80 = require("react/jsx-runtime");
3362
3408
  var IGNORED_CONTROLS = [
3363
3409
  "horizontal",
3364
3410
  "horizontal-end-aligned",
@@ -3368,28 +3414,28 @@ var IGNORED_CONTROLS = [
3368
3414
  var ReviewRenderer2 = {
3369
3415
  canRenderType: "review",
3370
3416
  canRender: ({ control }) => control ? !IGNORED_CONTROLS.includes(control) : true,
3371
- render: ({ callToAction, control, margin, fields, title }) => /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: getMargin(margin), children: [
3372
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(Header7, { title, callToAction }),
3417
+ render: ({ callToAction, control, margin, fields, title }) => /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: getMargin(margin), children: [
3418
+ /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(Header7, { title, callToAction }),
3373
3419
  fields.map((field) => {
3374
3420
  var _a;
3375
3421
  const {
3376
3422
  label,
3377
3423
  value,
3378
3424
  media,
3379
- tag,
3380
3425
  additionalInfo,
3381
3426
  inlineAlert,
3382
3427
  help,
3383
- callToAction: itemCallToAction
3428
+ callToAction: itemCallToAction,
3429
+ tags
3384
3430
  } = field;
3385
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
3386
- import_components56.ListItem,
3431
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
3432
+ import_components57.ListItem,
3387
3433
  {
3388
3434
  title: value,
3389
3435
  subtitle: label,
3390
3436
  inverted: true,
3391
- media: getMedia(media, control === "with-avatar" || tag === "with-avatar"),
3392
- control: (_a = getCTAControl(itemCallToAction)) != null ? _a : getHelpControl(help),
3437
+ media: getMedia(media, shouldUseAvatar(control, tags)),
3438
+ control: (_a = getCTAControl(itemCallToAction, tags)) != null ? _a : getHelpControl(help),
3393
3439
  prompt: getInlineAlert(inlineAlert),
3394
3440
  additionalInfo: getAdditionalInfo(additionalInfo)
3395
3441
  },
@@ -3398,49 +3444,31 @@ var ReviewRenderer2 = {
3398
3444
  })
3399
3445
  ] })
3400
3446
  };
3401
- var getCTAControl = (callToAction) => {
3402
- if (!callToAction) {
3403
- return void 0;
3404
- }
3405
- const { accessibilityDescription, href, title, onClick } = callToAction;
3406
- if (href) {
3407
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_components56.ListItem.Button, { href, partiallyInteractive: true, "aria-description": accessibilityDescription, children: title });
3408
- }
3409
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
3410
- import_components56.ListItem.Button,
3411
- {
3412
- "aria-description": accessibilityDescription,
3413
- partiallyInteractive: true,
3414
- onClick,
3415
- children: title
3416
- }
3417
- );
3418
- };
3419
3447
  var getHelpControl = (help) => {
3420
3448
  if (!help) {
3421
3449
  return void 0;
3422
3450
  }
3423
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_components56.Popover, { content: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_components56.Markdown, { config: { link: { target: "_blank" } }, children: help }), children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_components56.ListItem.IconButton, { partiallyInteractive: true, children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_icons4.QuestionMarkCircle, {}) }) });
3451
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components57.Popover, { content: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components57.Markdown, { config: { link: { target: "_blank" } }, children: help }), children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components57.ListItem.IconButton, { partiallyInteractive: true, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_icons4.QuestionMarkCircle, {}) }) });
3424
3452
  };
3425
3453
  var NewReviewRenderer_default = ReviewRenderer2;
3426
3454
 
3427
3455
  // ../renderers/src/NewListItem/NewStatusListRenderer.tsx
3428
- var import_components57 = require("@transferwise/components");
3429
- var import_jsx_runtime80 = require("react/jsx-runtime");
3456
+ var import_components58 = require("@transferwise/components");
3457
+ var import_jsx_runtime81 = require("react/jsx-runtime");
3430
3458
  var NewStatusListRenderer = {
3431
3459
  canRenderType: "status-list",
3432
- render: ({ margin, items, title }) => /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)("div", { className: getMargin(margin), children: [
3433
- title ? /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components57.Header, { title }) : null,
3460
+ render: ({ margin, items, title }) => /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: getMargin(margin), children: [
3461
+ title ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components58.Header, { title }) : null,
3434
3462
  items.map((item) => {
3435
3463
  const { callToAction, description, icon, status, title: itemTitle } = item;
3436
- return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
3437
- import_components57.ListItem,
3464
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
3465
+ import_components58.ListItem,
3438
3466
  {
3439
3467
  title: itemTitle,
3440
3468
  subtitle: description,
3441
- media: icon && "name" in icon ? /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components57.AvatarView, { badge: { status: mapStatus2(status) }, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(DynamicIcon_default, { name: icon.name }) }) : void 0,
3442
- additionalInfo: callToAction ? /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
3443
- import_components57.ListItem.AdditionalInfo,
3469
+ media: icon && "name" in icon ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components58.AvatarView, { badge: { status: mapStatus2(status) }, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(DynamicIcon_default, { name: icon.name }) }) : void 0,
3470
+ additionalInfo: callToAction ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
3471
+ import_components58.ListItem.AdditionalInfo,
3444
3472
  {
3445
3473
  action: {
3446
3474
  href: callToAction.href,
@@ -3469,7 +3497,7 @@ var mapStatus2 = (status) => {
3469
3497
  var NewStatusListRenderer_default = NewStatusListRenderer;
3470
3498
 
3471
3499
  // ../renderers/src/ButtonRenderer/ButtonRendererV2.tsx
3472
- var import_components58 = require("@transferwise/components");
3500
+ var import_components59 = require("@transferwise/components");
3473
3501
 
3474
3502
  // ../renderers/src/utils/isButtonPriority.ts
3475
3503
  var validPriorities = ["primary", "secondary", "secondary-neutral", "tertiary"];
@@ -3477,7 +3505,7 @@ var isButtonPriority = (control) => validPriorities.includes(control);
3477
3505
 
3478
3506
  // ../renderers/src/ButtonRenderer/ButtonRendererV2.tsx
3479
3507
  var import_react19 = require("react");
3480
- var import_jsx_runtime81 = require("react/jsx-runtime");
3508
+ var import_jsx_runtime82 = require("react/jsx-runtime");
3481
3509
  var ButtonRendererV2 = {
3482
3510
  canRenderType: "button",
3483
3511
  render: ButtonComponent2
@@ -3491,8 +3519,8 @@ function ButtonComponent2(props) {
3491
3519
  }
3492
3520
  }, [stepLoadingState]);
3493
3521
  const loading = spinny && stepLoadingState !== "idle";
3494
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
3495
- import_components58.Button,
3522
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
3523
+ import_components59.Button,
3496
3524
  {
3497
3525
  v2: true,
3498
3526
  block: true,
@@ -3514,17 +3542,17 @@ var getSentiment2 = (context) => context === "negative" ? "negative" : "default"
3514
3542
  var getPriority3 = (control) => control && isButtonPriority(control) ? control : "secondary";
3515
3543
 
3516
3544
  // ../renderers/src/ProgressRenderer.tsx
3517
- var import_components59 = require("@transferwise/components");
3518
- var import_jsx_runtime82 = require("react/jsx-runtime");
3545
+ var import_components60 = require("@transferwise/components");
3546
+ var import_jsx_runtime83 = require("react/jsx-runtime");
3519
3547
  var ProgressRenderer = {
3520
3548
  canRenderType: "progress",
3521
3549
  render: ({ uid, title, help, progress, progressText, margin, description }) => {
3522
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
3523
- import_components59.ProgressBar,
3550
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
3551
+ import_components60.ProgressBar,
3524
3552
  {
3525
3553
  id: uid,
3526
3554
  className: getMargin(margin),
3527
- title: title && help ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(LabelContentWithHelp, { text: title, help }) : title,
3555
+ title: title && help ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(LabelContentWithHelp, { text: title, help }) : title,
3528
3556
  description,
3529
3557
  progress: {
3530
3558
  max: 1,
@@ -4445,7 +4473,7 @@ var import_dynamic_flow_client2 = require("@wise/dynamic-flow-client");
4445
4473
  // src/dynamicFlow/telemetry/app-version.ts
4446
4474
  var appVersion = (
4447
4475
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
4448
- typeof process !== "undefined" ? "4.32.2" : "0.0.0"
4476
+ typeof process !== "undefined" ? "4.33.0" : "0.0.0"
4449
4477
  );
4450
4478
 
4451
4479
  // src/dynamicFlow/telemetry/getLogEvent.ts
@@ -4500,12 +4528,12 @@ var messages_default = (0, import_react_intl21.defineMessages)({
4500
4528
  });
4501
4529
 
4502
4530
  // src/dynamicFlow/DynamicFlow.tsx
4503
- var import_jsx_runtime83 = require("react/jsx-runtime");
4531
+ var import_jsx_runtime84 = require("react/jsx-runtime");
4504
4532
  var wiseRenderers = getWiseRenderers();
4505
4533
  function DynamicFlowLegacy(props) {
4506
4534
  const { customFetch = globalThis.fetch } = props;
4507
4535
  const coreProps = __spreadProps(__spreadValues({}, props), { httpClient: customFetch });
4508
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_dynamic_flow_client2.DynamicFlow, __spreadValues({}, coreProps));
4536
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_dynamic_flow_client2.DynamicFlow, __spreadValues({}, coreProps));
4509
4537
  }
4510
4538
  function DynamicFlowRevamp(props) {
4511
4539
  const {
@@ -4542,7 +4570,7 @@ function DynamicFlowRevamp(props) {
4542
4570
  onLink,
4543
4571
  onCopy
4544
4572
  });
4545
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_dynamic_flow_client2.DynamicFlowCoreRevamp, __spreadValues({}, coreProps)) });
4573
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_dynamic_flow_client2.DynamicFlowCoreRevamp, __spreadValues({}, coreProps)) });
4546
4574
  }
4547
4575
  var DynamicForm = (0, import_react20.forwardRef)(function DynamicForm2(props, ref) {
4548
4576
  const {
@@ -4579,7 +4607,7 @@ var DynamicForm = (0, import_react20.forwardRef)(function DynamicForm2(props, re
4579
4607
  onLink,
4580
4608
  onCopy
4581
4609
  });
4582
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_dynamic_flow_client2.DynamicFormCore, __spreadProps(__spreadValues({}, coreProps), { ref })) });
4610
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_dynamic_flow_client2.DynamicFormCore, __spreadProps(__spreadValues({}, coreProps), { ref })) });
4583
4611
  });
4584
4612
  var useWiseHttpClient = (httpClient) => {
4585
4613
  const { locale } = (0, import_react_intl22.useIntl)();
package/build/main.mjs CHANGED
@@ -326,7 +326,7 @@ import { Flag } from "@wise/art";
326
326
  import { jsx as jsx8 } from "react/jsx-runtime";
327
327
  var countryUrnPrefix = "urn:wise:countries:";
328
328
  var currencyUrnPrefix = "urn:wise:currencies:";
329
- var isUrnFlag = (uri) => uri.startsWith(countryUrnPrefix) || uri.startsWith(currencyUrnPrefix);
329
+ var isUrnFlag = (uri) => (uri.startsWith(countryUrnPrefix) || uri.startsWith(currencyUrnPrefix)) && uri.endsWith(":image");
330
330
  function UrnFlag({ size, urn }) {
331
331
  return /* @__PURE__ */ jsx8(Flag, { code: getCode(urn), intrinsicSize: size });
332
332
  }
@@ -888,7 +888,7 @@ import { useState as useState3 } from "react";
888
888
 
889
889
  // ../renderers/src/DecisionRenderer/filter-and-sort-decision-options.ts
890
890
  function filterAndSortDecisionOptions(selectOptions, query) {
891
- const upperQuery = query.toUpperCase().trim();
891
+ const upperQuery = normalizeAndRemoveAccents(query);
892
892
  const filteredItems = selectOptions.filter((option) => {
893
893
  var _a, _b, _c, _d;
894
894
  const searchableWords = [
@@ -899,7 +899,9 @@ function filterAndSortDecisionOptions(selectOptions, query) {
899
899
  (_b = option.supportingValues) == null ? void 0 : _b.subvalue,
900
900
  ...(_c = option.keywords) != null ? _c : []
901
901
  ];
902
- return (_d = searchableWords.some((word) => word == null ? void 0 : word.toUpperCase().includes(upperQuery))) != null ? _d : false;
902
+ return (_d = searchableWords.some(
903
+ (word) => word && normalizeAndRemoveAccents(word).includes(upperQuery)
904
+ )) != null ? _d : false;
903
905
  });
904
906
  return [...filteredItems].sort((a, b) => {
905
907
  const aTitleUpper = a.title.toUpperCase();
@@ -923,6 +925,7 @@ function filterAndSortDecisionOptions(selectOptions, query) {
923
925
  return a.title.localeCompare(b.title);
924
926
  });
925
927
  }
928
+ var normalizeAndRemoveAccents = (text) => text.trim().toLowerCase().normalize("NFKD").replace(new RegExp("\\p{Diacritic}", "gu"), "");
926
929
 
927
930
  // ../renderers/src/DecisionRenderer/DecisionList.tsx
928
931
  import { Fragment as Fragment2, jsx as jsx25, jsxs as jsxs5 } from "react/jsx-runtime";
@@ -3246,6 +3249,12 @@ var getAdditionalInfo = (additionalInfo) => {
3246
3249
  return /* @__PURE__ */ jsx76(ListItem3.AdditionalInfo, { children: additionalInfo == null ? void 0 : additionalInfo.text });
3247
3250
  };
3248
3251
 
3252
+ // ../renderers/src/NewListItem/shouldUseAvatar.ts
3253
+ var shouldUseAvatar = (control, tags) => {
3254
+ var _a;
3255
+ return control === "with-avatar" || ((_a = tags == null ? void 0 : tags.includes("with-avatar")) != null ? _a : false);
3256
+ };
3257
+
3249
3258
  // ../renderers/src/NewListItem/NewDecisionRenderer.tsx
3250
3259
  import { Fragment as Fragment10, jsx as jsx77 } from "react/jsx-runtime";
3251
3260
  var DecisionRenderer2 = {
@@ -3259,11 +3268,11 @@ var renderDecisionList2 = ({ options, control }) => {
3259
3268
  disabled,
3260
3269
  media,
3261
3270
  title: itemTitle,
3262
- tag,
3263
3271
  href,
3264
3272
  additionalText,
3265
3273
  inlineAlert,
3266
3274
  supportingValues,
3275
+ tags,
3267
3276
  onClick
3268
3277
  } = option;
3269
3278
  return /* @__PURE__ */ jsx77(
@@ -3271,11 +3280,11 @@ var renderDecisionList2 = ({ options, control }) => {
3271
3280
  {
3272
3281
  title: itemTitle,
3273
3282
  subtitle: description,
3274
- spotlight: control === "spotlight" ? tag === "spotlight-active" ? "active" : "inactive" : void 0,
3283
+ spotlight: control === "spotlight" ? (tags == null ? void 0 : tags.includes("spotlight-active")) ? "active" : "inactive" : void 0,
3275
3284
  disabled,
3276
3285
  valueTitle: supportingValues == null ? void 0 : supportingValues.value,
3277
3286
  valueSubtitle: supportingValues == null ? void 0 : supportingValues.subvalue,
3278
- media: getMedia(media, control === "with-avatar" || tag === "with-avatar"),
3287
+ media: getMedia(media, shouldUseAvatar(control, tags)),
3279
3288
  prompt: getInlineAlert(inlineAlert),
3280
3289
  additionalInfo: additionalText ? getAdditionalInfo({ text: additionalText }) : void 0,
3281
3290
  control: href ? /* @__PURE__ */ jsx77(ListItem4.Navigation, { href, target: "_blank" }) : /* @__PURE__ */ jsx77(ListItem4.Navigation, { onClick })
@@ -3287,32 +3296,69 @@ var renderDecisionList2 = ({ options, control }) => {
3287
3296
  var NewDecisionRenderer_default = DecisionRenderer2;
3288
3297
 
3289
3298
  // ../renderers/src/NewListItem/NewListRenderer.tsx
3299
+ import { ListItem as ListItem6 } from "@transferwise/components";
3300
+
3301
+ // ../renderers/src/NewListItem/getCTAControl.tsx
3290
3302
  import { ListItem as ListItem5 } from "@transferwise/components";
3291
- import { jsx as jsx78, jsxs as jsxs30 } from "react/jsx-runtime";
3303
+ import { jsx as jsx78 } from "react/jsx-runtime";
3304
+ var getCTAControl = (callToAction, tags) => {
3305
+ if (!callToAction) {
3306
+ return void 0;
3307
+ }
3308
+ const { accessibilityDescription, href, title, onClick } = callToAction;
3309
+ const priority = (tags == null ? void 0 : tags.includes("cta-secondary")) ? "secondary" : "secondary-neutral";
3310
+ if (href) {
3311
+ return /* @__PURE__ */ jsx78(
3312
+ ListItem5.Button,
3313
+ {
3314
+ href,
3315
+ partiallyInteractive: true,
3316
+ priority,
3317
+ "aria-description": accessibilityDescription,
3318
+ children: title
3319
+ }
3320
+ );
3321
+ }
3322
+ return /* @__PURE__ */ jsx78(
3323
+ ListItem5.Button,
3324
+ {
3325
+ "aria-description": accessibilityDescription,
3326
+ partiallyInteractive: true,
3327
+ priority,
3328
+ onClick,
3329
+ children: title
3330
+ }
3331
+ );
3332
+ };
3333
+
3334
+ // ../renderers/src/NewListItem/NewListRenderer.tsx
3335
+ import { jsx as jsx79, jsxs as jsxs30 } from "react/jsx-runtime";
3292
3336
  var ListRenderer2 = {
3293
3337
  canRenderType: "list",
3294
3338
  render: ({ callToAction, control, margin, items, title }) => /* @__PURE__ */ jsxs30("div", { className: getMargin(margin), children: [
3295
- /* @__PURE__ */ jsx78(Header7, { title, callToAction }),
3339
+ /* @__PURE__ */ jsx79(Header7, { title, callToAction }),
3296
3340
  items.map((item) => {
3297
3341
  const {
3298
3342
  title: itemTitle,
3299
3343
  description,
3300
3344
  supportingValues,
3301
3345
  media,
3302
- tag,
3303
3346
  additionalInfo,
3304
- inlineAlert
3347
+ inlineAlert,
3348
+ callToAction: itemCallToAction,
3349
+ tags
3305
3350
  } = item;
3306
- return /* @__PURE__ */ jsx78(
3307
- ListItem5,
3351
+ return /* @__PURE__ */ jsx79(
3352
+ ListItem6,
3308
3353
  {
3309
3354
  title: itemTitle,
3310
3355
  subtitle: description,
3311
3356
  valueTitle: supportingValues == null ? void 0 : supportingValues.value,
3312
3357
  valueSubtitle: supportingValues == null ? void 0 : supportingValues.subvalue,
3313
- media: getMedia(media, control === "with-avatar" || tag === "with-avatar"),
3358
+ media: getMedia(media, shouldUseAvatar(control, tags)),
3314
3359
  prompt: getInlineAlert(inlineAlert),
3315
- additionalInfo: getAdditionalInfo(additionalInfo)
3360
+ additionalInfo: getAdditionalInfo(additionalInfo),
3361
+ control: getCTAControl(itemCallToAction, tags)
3316
3362
  },
3317
3363
  itemTitle
3318
3364
  );
@@ -3322,9 +3368,9 @@ var ListRenderer2 = {
3322
3368
  var NewListRenderer_default = ListRenderer2;
3323
3369
 
3324
3370
  // ../renderers/src/NewListItem/NewReviewRenderer.tsx
3325
- import { ListItem as ListItem6, Markdown as Markdown6, Popover } from "@transferwise/components";
3371
+ import { ListItem as ListItem7, Markdown as Markdown6, Popover } from "@transferwise/components";
3326
3372
  import { QuestionMarkCircle } from "@transferwise/icons";
3327
- import { jsx as jsx79, jsxs as jsxs31 } from "react/jsx-runtime";
3373
+ import { jsx as jsx80, jsxs as jsxs31 } from "react/jsx-runtime";
3328
3374
  var IGNORED_CONTROLS = [
3329
3375
  "horizontal",
3330
3376
  "horizontal-end-aligned",
@@ -3335,27 +3381,27 @@ var ReviewRenderer2 = {
3335
3381
  canRenderType: "review",
3336
3382
  canRender: ({ control }) => control ? !IGNORED_CONTROLS.includes(control) : true,
3337
3383
  render: ({ callToAction, control, margin, fields, title }) => /* @__PURE__ */ jsxs31("div", { className: getMargin(margin), children: [
3338
- /* @__PURE__ */ jsx79(Header7, { title, callToAction }),
3384
+ /* @__PURE__ */ jsx80(Header7, { title, callToAction }),
3339
3385
  fields.map((field) => {
3340
3386
  var _a;
3341
3387
  const {
3342
3388
  label,
3343
3389
  value,
3344
3390
  media,
3345
- tag,
3346
3391
  additionalInfo,
3347
3392
  inlineAlert,
3348
3393
  help,
3349
- callToAction: itemCallToAction
3394
+ callToAction: itemCallToAction,
3395
+ tags
3350
3396
  } = field;
3351
- return /* @__PURE__ */ jsx79(
3352
- ListItem6,
3397
+ return /* @__PURE__ */ jsx80(
3398
+ ListItem7,
3353
3399
  {
3354
3400
  title: value,
3355
3401
  subtitle: label,
3356
3402
  inverted: true,
3357
- media: getMedia(media, control === "with-avatar" || tag === "with-avatar"),
3358
- control: (_a = getCTAControl(itemCallToAction)) != null ? _a : getHelpControl(help),
3403
+ media: getMedia(media, shouldUseAvatar(control, tags)),
3404
+ control: (_a = getCTAControl(itemCallToAction, tags)) != null ? _a : getHelpControl(help),
3359
3405
  prompt: getInlineAlert(inlineAlert),
3360
3406
  additionalInfo: getAdditionalInfo(additionalInfo)
3361
3407
  },
@@ -3364,49 +3410,31 @@ var ReviewRenderer2 = {
3364
3410
  })
3365
3411
  ] })
3366
3412
  };
3367
- var getCTAControl = (callToAction) => {
3368
- if (!callToAction) {
3369
- return void 0;
3370
- }
3371
- const { accessibilityDescription, href, title, onClick } = callToAction;
3372
- if (href) {
3373
- return /* @__PURE__ */ jsx79(ListItem6.Button, { href, partiallyInteractive: true, "aria-description": accessibilityDescription, children: title });
3374
- }
3375
- return /* @__PURE__ */ jsx79(
3376
- ListItem6.Button,
3377
- {
3378
- "aria-description": accessibilityDescription,
3379
- partiallyInteractive: true,
3380
- onClick,
3381
- children: title
3382
- }
3383
- );
3384
- };
3385
3413
  var getHelpControl = (help) => {
3386
3414
  if (!help) {
3387
3415
  return void 0;
3388
3416
  }
3389
- return /* @__PURE__ */ jsx79(Popover, { content: /* @__PURE__ */ jsx79(Markdown6, { config: { link: { target: "_blank" } }, children: help }), children: /* @__PURE__ */ jsx79(ListItem6.IconButton, { partiallyInteractive: true, children: /* @__PURE__ */ jsx79(QuestionMarkCircle, {}) }) });
3417
+ return /* @__PURE__ */ jsx80(Popover, { content: /* @__PURE__ */ jsx80(Markdown6, { config: { link: { target: "_blank" } }, children: help }), children: /* @__PURE__ */ jsx80(ListItem7.IconButton, { partiallyInteractive: true, children: /* @__PURE__ */ jsx80(QuestionMarkCircle, {}) }) });
3390
3418
  };
3391
3419
  var NewReviewRenderer_default = ReviewRenderer2;
3392
3420
 
3393
3421
  // ../renderers/src/NewListItem/NewStatusListRenderer.tsx
3394
- import { AvatarView as AvatarView4, Header as Header10, ListItem as ListItem7 } from "@transferwise/components";
3395
- import { jsx as jsx80, jsxs as jsxs32 } from "react/jsx-runtime";
3422
+ import { AvatarView as AvatarView4, Header as Header10, ListItem as ListItem8 } from "@transferwise/components";
3423
+ import { jsx as jsx81, jsxs as jsxs32 } from "react/jsx-runtime";
3396
3424
  var NewStatusListRenderer = {
3397
3425
  canRenderType: "status-list",
3398
3426
  render: ({ margin, items, title }) => /* @__PURE__ */ jsxs32("div", { className: getMargin(margin), children: [
3399
- title ? /* @__PURE__ */ jsx80(Header10, { title }) : null,
3427
+ title ? /* @__PURE__ */ jsx81(Header10, { title }) : null,
3400
3428
  items.map((item) => {
3401
3429
  const { callToAction, description, icon, status, title: itemTitle } = item;
3402
- return /* @__PURE__ */ jsx80(
3403
- ListItem7,
3430
+ return /* @__PURE__ */ jsx81(
3431
+ ListItem8,
3404
3432
  {
3405
3433
  title: itemTitle,
3406
3434
  subtitle: description,
3407
- media: icon && "name" in icon ? /* @__PURE__ */ jsx80(AvatarView4, { badge: { status: mapStatus2(status) }, children: /* @__PURE__ */ jsx80(DynamicIcon_default, { name: icon.name }) }) : void 0,
3408
- additionalInfo: callToAction ? /* @__PURE__ */ jsx80(
3409
- ListItem7.AdditionalInfo,
3435
+ media: icon && "name" in icon ? /* @__PURE__ */ jsx81(AvatarView4, { badge: { status: mapStatus2(status) }, children: /* @__PURE__ */ jsx81(DynamicIcon_default, { name: icon.name }) }) : void 0,
3436
+ additionalInfo: callToAction ? /* @__PURE__ */ jsx81(
3437
+ ListItem8.AdditionalInfo,
3410
3438
  {
3411
3439
  action: {
3412
3440
  href: callToAction.href,
@@ -3443,7 +3471,7 @@ var isButtonPriority = (control) => validPriorities.includes(control);
3443
3471
 
3444
3472
  // ../renderers/src/ButtonRenderer/ButtonRendererV2.tsx
3445
3473
  import { useEffect as useEffect9, useState as useState13 } from "react";
3446
- import { jsx as jsx81 } from "react/jsx-runtime";
3474
+ import { jsx as jsx82 } from "react/jsx-runtime";
3447
3475
  var ButtonRendererV2 = {
3448
3476
  canRenderType: "button",
3449
3477
  render: ButtonComponent2
@@ -3457,7 +3485,7 @@ function ButtonComponent2(props) {
3457
3485
  }
3458
3486
  }, [stepLoadingState]);
3459
3487
  const loading = spinny && stepLoadingState !== "idle";
3460
- return /* @__PURE__ */ jsx81(
3488
+ return /* @__PURE__ */ jsx82(
3461
3489
  Button8,
3462
3490
  {
3463
3491
  v2: true,
@@ -3481,16 +3509,16 @@ var getPriority3 = (control) => control && isButtonPriority(control) ? control :
3481
3509
 
3482
3510
  // ../renderers/src/ProgressRenderer.tsx
3483
3511
  import { ProgressBar } from "@transferwise/components";
3484
- import { jsx as jsx82 } from "react/jsx-runtime";
3512
+ import { jsx as jsx83 } from "react/jsx-runtime";
3485
3513
  var ProgressRenderer = {
3486
3514
  canRenderType: "progress",
3487
3515
  render: ({ uid, title, help, progress, progressText, margin, description }) => {
3488
- return /* @__PURE__ */ jsx82(
3516
+ return /* @__PURE__ */ jsx83(
3489
3517
  ProgressBar,
3490
3518
  {
3491
3519
  id: uid,
3492
3520
  className: getMargin(margin),
3493
- title: title && help ? /* @__PURE__ */ jsx82(LabelContentWithHelp, { text: title, help }) : title,
3521
+ title: title && help ? /* @__PURE__ */ jsx83(LabelContentWithHelp, { text: title, help }) : title,
3494
3522
  description,
3495
3523
  progress: {
3496
3524
  max: 1,
@@ -4415,7 +4443,7 @@ import {
4415
4443
  // src/dynamicFlow/telemetry/app-version.ts
4416
4444
  var appVersion = (
4417
4445
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
4418
- typeof process !== "undefined" ? "4.32.2" : "0.0.0"
4446
+ typeof process !== "undefined" ? "4.33.0" : "0.0.0"
4419
4447
  );
4420
4448
 
4421
4449
  // src/dynamicFlow/telemetry/getLogEvent.ts
@@ -4470,12 +4498,12 @@ var messages_default = defineMessages10({
4470
4498
  });
4471
4499
 
4472
4500
  // src/dynamicFlow/DynamicFlow.tsx
4473
- import { jsx as jsx83 } from "react/jsx-runtime";
4501
+ import { jsx as jsx84 } from "react/jsx-runtime";
4474
4502
  var wiseRenderers = getWiseRenderers();
4475
4503
  function DynamicFlowLegacy(props) {
4476
4504
  const { customFetch = globalThis.fetch } = props;
4477
4505
  const coreProps = __spreadProps(__spreadValues({}, props), { httpClient: customFetch });
4478
- return /* @__PURE__ */ jsx83(DynamicFlowCoreLegacy, __spreadValues({}, coreProps));
4506
+ return /* @__PURE__ */ jsx84(DynamicFlowCoreLegacy, __spreadValues({}, coreProps));
4479
4507
  }
4480
4508
  function DynamicFlowRevamp(props) {
4481
4509
  const {
@@ -4512,7 +4540,7 @@ function DynamicFlowRevamp(props) {
4512
4540
  onLink,
4513
4541
  onCopy
4514
4542
  });
4515
- return /* @__PURE__ */ jsx83("div", { className, children: /* @__PURE__ */ jsx83(DynamicFlowCoreRevamp, __spreadValues({}, coreProps)) });
4543
+ return /* @__PURE__ */ jsx84("div", { className, children: /* @__PURE__ */ jsx84(DynamicFlowCoreRevamp, __spreadValues({}, coreProps)) });
4516
4544
  }
4517
4545
  var DynamicForm = forwardRef(function DynamicForm2(props, ref) {
4518
4546
  const {
@@ -4549,7 +4577,7 @@ var DynamicForm = forwardRef(function DynamicForm2(props, ref) {
4549
4577
  onLink,
4550
4578
  onCopy
4551
4579
  });
4552
- return /* @__PURE__ */ jsx83("div", { className, children: /* @__PURE__ */ jsx83(DynamicFormCore, __spreadProps(__spreadValues({}, coreProps), { ref })) });
4580
+ return /* @__PURE__ */ jsx84("div", { className, children: /* @__PURE__ */ jsx84(DynamicFormCore, __spreadProps(__spreadValues({}, coreProps), { ref })) });
4553
4581
  });
4554
4582
  var useWiseHttpClient = (httpClient) => {
4555
4583
  const { locale } = useIntl12();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wise/dynamic-flow-client-internal",
3
- "version": "4.32.2",
3
+ "version": "4.33.0",
4
4
  "description": "Dynamic Flow web client for Wise",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./build/main.js",
@@ -38,24 +38,24 @@
38
38
  "@babel/preset-typescript": "7.27.1",
39
39
  "@chromatic-com/storybook": "4.1.1",
40
40
  "@formatjs/cli": "^6.7.2",
41
- "@storybook/react-vite": "9.1.7",
41
+ "@storybook/react-vite": "9.1.8",
42
42
  "@testing-library/dom": "10.4.1",
43
43
  "@testing-library/jest-dom": "6.8.0",
44
44
  "@testing-library/react": "16.3.0",
45
45
  "@testing-library/user-event": "14.6.1",
46
- "@transferwise/components": "46.110.0",
46
+ "@transferwise/components": "46.111.0",
47
47
  "@transferwise/formatting": "^2.13.4",
48
48
  "@transferwise/icons": "3.22.4",
49
- "@transferwise/neptune-css": "14.24.6",
49
+ "@transferwise/neptune-css": "14.25.0",
50
50
  "@types/jest": "30.0.0",
51
51
  "@types/react": "18.3.24",
52
52
  "@types/react-dom": "18.3.7",
53
- "@wise/art": "2.24.5",
54
- "@wise/components-theming": "^1.6.4",
53
+ "@wise/art": "2.24.6",
54
+ "@wise/components-theming": "^1.7.0",
55
55
  "babel-jest": "30.1.2",
56
56
  "currency-flags": "4.0.7",
57
57
  "esbuild": "0.25.9",
58
- "eslint-plugin-storybook": "9.1.7",
58
+ "eslint-plugin-storybook": "9.1.8",
59
59
  "jest": "30.1.3",
60
60
  "jest-environment-jsdom": "30.1.2",
61
61
  "jest-fetch-mock": "^3.0.3",
@@ -67,16 +67,16 @@
67
67
  "react": "18.3.1",
68
68
  "react-dom": "18.3.1",
69
69
  "react-intl": "6.8.9",
70
- "storybook": "^9.1.7",
70
+ "storybook": "^9.1.8",
71
71
  "stylelint": "16.24.0",
72
72
  "stylelint-config-standard": "36.0.1",
73
73
  "stylelint-no-unsupported-browser-features": "8.0.4",
74
74
  "stylelint-value-no-unknown-custom-properties": "6.0.1",
75
- "tsx": "4.20.5",
75
+ "tsx": "4.20.6",
76
76
  "typescript": "5.9.2",
77
77
  "@wise/dynamic-flow-fixtures": "0.0.1",
78
78
  "@wise/dynamic-flow-renderers": "0.0.0",
79
- "@wise/dynamic-flow-types": "3.15.1"
79
+ "@wise/dynamic-flow-types": "3.16.0"
80
80
  },
81
81
  "peerDependencies": {
82
82
  "@transferwise/components": "^46.104.0",
@@ -91,8 +91,8 @@
91
91
  },
92
92
  "dependencies": {
93
93
  "classnames": "2.5.1",
94
- "@wise/dynamic-flow-client": "4.18.5",
95
- "@wise/dynamic-flow-types": "3.15.1"
94
+ "@wise/dynamic-flow-client": "4.19.0",
95
+ "@wise/dynamic-flow-types": "3.16.0"
96
96
  },
97
97
  "scripts": {
98
98
  "dev": "pnpm build:visual-tests && storybook dev -p 3005",