@unifold/ui-web 0.1.81 → 0.1.82

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/dist/index.js +665 -45
  2. package/dist/index.mjs +665 -45
  3. package/package.json +5 -5
package/dist/index.mjs CHANGED
@@ -38307,7 +38307,7 @@ var require_QueryClientProvider = __commonJS({
38307
38307
  });
38308
38308
  module.exports = __toCommonJS(QueryClientProvider_exports);
38309
38309
  var React47 = __toESM3(require_react(), 1);
38310
- var import_jsx_runtime102 = require_jsx_runtime();
38310
+ var import_jsx_runtime105 = require_jsx_runtime();
38311
38311
  var QueryClientContext2 = React47.createContext(
38312
38312
  void 0
38313
38313
  );
@@ -38331,7 +38331,7 @@ var require_QueryClientProvider = __commonJS({
38331
38331
  client.unmount();
38332
38332
  };
38333
38333
  }, [client]);
38334
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(QueryClientContext2.Provider, { value: client, children });
38334
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(QueryClientContext2.Provider, { value: client, children });
38335
38335
  };
38336
38336
  }
38337
38337
  });
@@ -38420,7 +38420,7 @@ var require_QueryErrorResetBoundary = __commonJS({
38420
38420
  });
38421
38421
  module.exports = __toCommonJS(QueryErrorResetBoundary_exports);
38422
38422
  var React47 = __toESM3(require_react(), 1);
38423
- var import_jsx_runtime102 = require_jsx_runtime();
38423
+ var import_jsx_runtime105 = require_jsx_runtime();
38424
38424
  function createValue() {
38425
38425
  let isReset = false;
38426
38426
  return {
@@ -38441,7 +38441,7 @@ var require_QueryErrorResetBoundary = __commonJS({
38441
38441
  children
38442
38442
  }) => {
38443
38443
  const [value] = React47.useState(() => createValue());
38444
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === "function" ? children(value) : children });
38444
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === "function" ? children(value) : children });
38445
38445
  };
38446
38446
  }
38447
38447
  });
@@ -39598,7 +39598,7 @@ var require_modern2 = __commonJS({
39598
39598
  });
39599
39599
 
39600
39600
  // src/unifold.tsx
39601
- var import_react49 = __toESM(require_react());
39601
+ var import_react50 = __toESM(require_react());
39602
39602
  var import_client = __toESM(require_client());
39603
39603
 
39604
39604
  // ../connect-react/dist/index.mjs
@@ -39756,7 +39756,7 @@ function generateKSUID() {
39756
39756
  function generatePrefixedKSUID(prefix) {
39757
39757
  return `${prefix}_${generateKSUID()}`;
39758
39758
  }
39759
- var SDK_VERSION = true ? "0.1.81" : "0.0.0-dev";
39759
+ var SDK_VERSION = true ? "0.1.82" : "0.0.0-dev";
39760
39760
  var CLIENT_VERSION_HEADER = "x-unifold-client-version";
39761
39761
  var CLIENT_USER_AGENT_HEADER = "x-unifold-client-user-agent";
39762
39762
  function detectRuntime() {
@@ -39917,6 +39917,11 @@ async function createDepositAddress(overrides, publishableKey) {
39917
39917
  const firstError = Array.isArray(body.details?.errors) ? body.details?.errors[0] : void 0;
39918
39918
  throw new DepositAddressValidationError(firstError ?? "Invalid recipient address");
39919
39919
  }
39920
+ if (body?.error_type === "xrpl_destination_tag_required") {
39921
+ throw new DepositAddressValidationError(
39922
+ body.message ?? "Recipient address requires a destination tag"
39923
+ );
39924
+ }
39920
39925
  }
39921
39926
  throw new Error(`Failed to create EOA: ${response.statusText}`);
39922
39927
  }
@@ -41799,6 +41804,11 @@ var import_jsx_runtime99 = __toESM(require_jsx_runtime(), 1);
41799
41804
  var import_react48 = __toESM(require_react(), 1);
41800
41805
  var import_jsx_runtime100 = __toESM(require_jsx_runtime(), 1);
41801
41806
  var import_jsx_runtime101 = __toESM(require_jsx_runtime(), 1);
41807
+ var import_react49 = __toESM(require_react(), 1);
41808
+ var import_react_dom2 = __toESM(require_react_dom(), 1);
41809
+ var import_jsx_runtime102 = __toESM(require_jsx_runtime(), 1);
41810
+ var import_jsx_runtime103 = __toESM(require_jsx_runtime(), 1);
41811
+ var import_jsx_runtime104 = __toESM(require_jsx_runtime(), 1);
41802
41812
  var __create2 = Object.create;
41803
41813
  var __defProp3 = Object.defineProperty;
41804
41814
  var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
@@ -47975,7 +47985,7 @@ function generateKSUID2() {
47975
47985
  function generatePrefixedKSUID2(prefix) {
47976
47986
  return `${prefix}_${generateKSUID2()}`;
47977
47987
  }
47978
- var PACKAGE_VERSION = "0.1.81";
47988
+ var PACKAGE_VERSION = "0.1.82";
47979
47989
  var LIBRARY_NAME = "@unifold/analytics";
47980
47990
  var DEFAULT_DEDUP_MS = 500;
47981
47991
  var SESSION_PREFIX = "asess";
@@ -54104,6 +54114,9 @@ var en_default = {
54104
54114
  loading: "Loading...",
54105
54115
  search: "Search",
54106
54116
  close: "Close",
54117
+ noResults: "No matches found",
54118
+ selectCountry: "Select country",
54119
+ selectState: "Select state",
54107
54120
  review: "Review",
54108
54121
  tryAgain: "Try Again",
54109
54122
  somethingWentWrong: "Something went wrong",
@@ -54326,6 +54339,7 @@ var en_default = {
54326
54339
  not_opted_in: "Please make sure you opt-in {{token_symbol}}({{chain_name}}) before receiving funds",
54327
54340
  insufficient_balance: "Recipient account does not meet the minimum balance requirement",
54328
54341
  account_not_found: "Recipient account does not exist on {{chain_name}}",
54342
+ destination_tag_required: "This {{chain_name}} address requires a memo tag. Please provide your memo tag as well, in the format address:memotag",
54329
54343
  validation_error: "Unable to verify recipient address on {{chain_name}}"
54330
54344
  },
54331
54345
  defaultError: "The recipient address cannot receive funds for the selected token"
@@ -54904,12 +54918,18 @@ var en_default = {
54904
54918
  receiveChain: "Receive chain",
54905
54919
  recipientAddress: "Recipient address",
54906
54920
  recipientAddressPlaceholder: "Enter wallet address",
54921
+ recipientAddressPlaceholderXrpl: "Enter wallet address, or address:memotag",
54907
54922
  amount: "Amount",
54908
54923
  amountPlaceholder: "0.00",
54909
54924
  balance: "Balance",
54910
54925
  minimum: "min",
54911
54926
  withdraw: "Withdraw",
54912
54927
  invalidAddress: "Please enter a valid address",
54928
+ invalidXrplAddress: "Please enter a valid {{chain_name}} address. If your recipient requires a memo tag, please provide it as well, in the format address:memotag",
54929
+ memoTag: "Memo tag",
54930
+ memoTagPlaceholder: "e.g. 12345",
54931
+ memoTagRequiredHint: "This {{chain_name}} address requires a memo tag before it can receive funds",
54932
+ invalidMemoTag: "Memo tag must be a whole number between 0 and 4294967295",
54913
54933
  invalidAmount: "Please enter a valid amount",
54914
54934
  verifyingAddress: "Verifying address...",
54915
54935
  loading: "Loading...",
@@ -54957,6 +54977,9 @@ var zh_default = {
54957
54977
  loading: "\u52A0\u8F7D\u4E2D...",
54958
54978
  search: "\u641C\u7D22",
54959
54979
  close: "\u5173\u95ED",
54980
+ noResults: "\u6CA1\u6709\u5339\u914D\u7684\u7ED3\u679C",
54981
+ selectCountry: "\u9009\u62E9\u56FD\u5BB6",
54982
+ selectState: "\u9009\u62E9\u5DDE",
54960
54983
  review: "\u786E\u8BA4\u4FE1\u606F",
54961
54984
  tryAgain: "\u91CD\u8BD5",
54962
54985
  somethingWentWrong: "\u51FA\u73B0\u9519\u8BEF",
@@ -55179,6 +55202,7 @@ var zh_default = {
55179
55202
  not_opted_in: "\u8BF7\u5148\u5728 {{chain_name}} \u4E0A\u5F00\u901A {{token_symbol}}\uFF0C\u7136\u540E\u518D\u63A5\u6536\u8D44\u91D1",
55180
55203
  insufficient_balance: "\u6536\u6B3E\u8D26\u6237\u672A\u6EE1\u8DB3\u6700\u4F4E\u4F59\u989D\u8981\u6C42",
55181
55204
  account_not_found: "\u6536\u6B3E\u8D26\u6237\u5728 {{chain_name}} \u4E0A\u4E0D\u5B58\u5728",
55205
+ destination_tag_required: "\u8BE5 {{chain_name}} \u5730\u5740\u9700\u8981\u76EE\u6807\u6807\u7B7E\uFF08Destination Tag\uFF09\uFF0C\u8BF7\u4E00\u5E76\u586B\u5199\u6807\u7B7E\uFF0C\u683C\u5F0F\u4E3A \u5730\u5740:\u6807\u7B7E",
55182
55206
  validation_error: "\u65E0\u6CD5\u5728 {{chain_name}} \u4E0A\u9A8C\u8BC1\u6536\u6B3E\u5730\u5740"
55183
55207
  },
55184
55208
  defaultError: "\u8BE5\u6536\u6B3E\u5730\u5740\u65E0\u6CD5\u63A5\u6536\u6240\u9009\u4EE3\u5E01\u7684\u8D44\u91D1"
@@ -55757,12 +55781,18 @@ var zh_default = {
55757
55781
  receiveChain: "\u63A5\u6536\u7F51\u7EDC",
55758
55782
  recipientAddress: "\u6536\u6B3E\u5730\u5740",
55759
55783
  recipientAddressPlaceholder: "\u8F93\u5165\u94B1\u5305\u5730\u5740",
55784
+ recipientAddressPlaceholderXrpl: "\u8F93\u5165\u5730\u5740\uFF0C\u6216 \u5730\u5740:\u6807\u7B7E",
55760
55785
  amount: "\u91D1\u989D",
55761
55786
  amountPlaceholder: "0.00",
55762
55787
  balance: "\u4F59\u989D",
55763
55788
  minimum: "\u6700\u4F4E",
55764
55789
  withdraw: "\u63D0\u73B0",
55765
55790
  invalidAddress: "\u8BF7\u8F93\u5165\u6709\u6548\u5730\u5740",
55791
+ invalidXrplAddress: "\u8BF7\u8F93\u5165\u6709\u6548\u7684 {{chain_name}} \u5730\u5740\u3002\u5982\u679C\u6536\u6B3E\u65B9\u9700\u8981\u76EE\u6807\u6807\u7B7E\uFF0C\u8BF7\u4E00\u5E76\u586B\u5199\uFF0C\u683C\u5F0F\u4E3A \u5730\u5740:\u6807\u7B7E",
55792
+ memoTag: "\u76EE\u6807\u6807\u7B7E",
55793
+ memoTagPlaceholder: "\u4F8B\u5982 12345",
55794
+ memoTagRequiredHint: "\u8BE5 {{chain_name}} \u5730\u5740\u9700\u8981\u586B\u5199\u76EE\u6807\u6807\u7B7E\u624D\u80FD\u6536\u6B3E",
55795
+ invalidMemoTag: "\u76EE\u6807\u6807\u7B7E\u5FC5\u987B\u662F 0 \u5230 4294967295 \u4E4B\u95F4\u7684\u6574\u6570",
55766
55796
  invalidAmount: "\u8BF7\u8F93\u5165\u6709\u6548\u91D1\u989D",
55767
55797
  verifyingAddress: "\u6B63\u5728\u9A8C\u8BC1\u5730\u5740...",
55768
55798
  loading: "\u52A0\u8F7D\u4E2D...",
@@ -55810,6 +55840,9 @@ var zh_TW_default = {
55810
55840
  loading: "\u8F09\u5165\u4E2D...",
55811
55841
  search: "\u641C\u5C0B",
55812
55842
  close: "\u95DC\u9589",
55843
+ noResults: "\u6C92\u6709\u7B26\u5408\u7684\u7D50\u679C",
55844
+ selectCountry: "\u9078\u64C7\u570B\u5BB6",
55845
+ selectState: "\u9078\u64C7\u5DDE",
55813
55846
  review: "\u78BA\u8A8D\u8CC7\u8A0A",
55814
55847
  tryAgain: "\u91CD\u8A66",
55815
55848
  somethingWentWrong: "\u767C\u751F\u932F\u8AA4",
@@ -56032,6 +56065,7 @@ var zh_TW_default = {
56032
56065
  not_opted_in: "\u8ACB\u5148\u5728 {{chain_name}} \u4E0A\u958B\u901A {{token_symbol}}\uFF0C\u7136\u5F8C\u518D\u63A5\u6536\u8CC7\u91D1",
56033
56066
  insufficient_balance: "\u6536\u6B3E\u5E33\u6236\u672A\u9054\u6700\u4F4E\u9918\u984D\u8981\u6C42",
56034
56067
  account_not_found: "\u6536\u6B3E\u5E33\u6236\u5728 {{chain_name}} \u4E0A\u4E0D\u5B58\u5728",
56068
+ destination_tag_required: "\u8A72 {{chain_name}} \u5730\u5740\u9700\u8981\u76EE\u7684\u5730\u6A19\u7C64\uFF08Destination Tag\uFF09\uFF0C\u8ACB\u4E00\u4F75\u586B\u5BEB\u6A19\u7C64\uFF0C\u683C\u5F0F\u70BA \u5730\u5740:\u6A19\u7C64",
56035
56069
  validation_error: "\u7121\u6CD5\u5728 {{chain_name}} \u4E0A\u9A57\u8B49\u6536\u6B3E\u5730\u5740"
56036
56070
  },
56037
56071
  defaultError: "\u8A72\u6536\u6B3E\u5730\u5740\u7121\u6CD5\u63A5\u6536\u6240\u9078\u4EE3\u5E63\u7684\u8CC7\u91D1"
@@ -56610,12 +56644,18 @@ var zh_TW_default = {
56610
56644
  receiveChain: "\u63A5\u6536\u7DB2\u8DEF",
56611
56645
  recipientAddress: "\u6536\u6B3E\u5730\u5740",
56612
56646
  recipientAddressPlaceholder: "\u8F38\u5165\u9322\u5305\u5730\u5740",
56647
+ recipientAddressPlaceholderXrpl: "\u8F38\u5165\u5730\u5740\uFF0C\u6216 \u5730\u5740:\u6A19\u7C64",
56613
56648
  amount: "\u91D1\u984D",
56614
56649
  amountPlaceholder: "0.00",
56615
56650
  balance: "\u9918\u984D",
56616
56651
  minimum: "\u6700\u4F4E",
56617
56652
  withdraw: "\u63D0\u9818",
56618
56653
  invalidAddress: "\u8ACB\u8F38\u5165\u6709\u6548\u5730\u5740",
56654
+ invalidXrplAddress: "\u8ACB\u8F38\u5165\u6709\u6548\u7684 {{chain_name}} \u5730\u5740\u3002\u82E5\u6536\u6B3E\u65B9\u9700\u8981\u76EE\u7684\u5730\u6A19\u7C64\uFF0C\u8ACB\u4E00\u4F75\u586B\u5BEB\uFF0C\u683C\u5F0F\u70BA \u5730\u5740:\u6A19\u7C64",
56655
+ memoTag: "\u76EE\u7684\u5730\u6A19\u7C64",
56656
+ memoTagPlaceholder: "\u4F8B\u5982 12345",
56657
+ memoTagRequiredHint: "\u8A72 {{chain_name}} \u5730\u5740\u9700\u8981\u586B\u5BEB\u76EE\u7684\u5730\u6A19\u7C64\u624D\u80FD\u6536\u6B3E",
56658
+ invalidMemoTag: "\u76EE\u7684\u5730\u6A19\u7C64\u5FC5\u9808\u662F 0 \u5230 4294967295 \u4E4B\u9593\u7684\u6574\u6578",
56619
56659
  invalidAmount: "\u8ACB\u8F38\u5165\u6709\u6548\u91D1\u984D",
56620
56660
  verifyingAddress: "\u6B63\u5728\u9A57\u8B49\u5730\u5740...",
56621
56661
  loading: "\u8F09\u5165\u4E2D...",
@@ -56663,6 +56703,9 @@ var fr_default = {
56663
56703
  loading: "Chargement...",
56664
56704
  search: "Rechercher",
56665
56705
  close: "Fermer",
56706
+ noResults: "Aucun r\xE9sultat",
56707
+ selectCountry: "S\xE9lectionner un pays",
56708
+ selectState: "S\xE9lectionner un \xC9tat",
56666
56709
  review: "V\xE9rifier",
56667
56710
  tryAgain: "R\xE9essayer",
56668
56711
  somethingWentWrong: "Une erreur s'est produite",
@@ -56885,6 +56928,7 @@ var fr_default = {
56885
56928
  not_opted_in: "Veuillez d'abord activer {{token_symbol}} ({{chain_name}}) avant de recevoir des fonds",
56886
56929
  insufficient_balance: "Le compte destinataire ne respecte pas le solde minimum requis",
56887
56930
  account_not_found: "Le compte destinataire n'existe pas sur {{chain_name}}",
56931
+ destination_tag_required: "Cette adresse {{chain_name}} n\xE9cessite un tag de destination. Veuillez \xE9galement indiquer votre tag, au format adresse:tag",
56888
56932
  validation_error: "Impossible de v\xE9rifier l'adresse du destinataire sur {{chain_name}}"
56889
56933
  },
56890
56934
  defaultError: "L'adresse du destinataire ne peut pas recevoir de fonds pour le jeton s\xE9lectionn\xE9"
@@ -57463,12 +57507,18 @@ var fr_default = {
57463
57507
  receiveChain: "R\xE9seau de r\xE9ception",
57464
57508
  recipientAddress: "Adresse du destinataire",
57465
57509
  recipientAddressPlaceholder: "Saisir l'adresse du portefeuille",
57510
+ recipientAddressPlaceholderXrpl: "Saisir l'adresse, ou adresse:tag",
57466
57511
  amount: "Montant",
57467
57512
  amountPlaceholder: "0,00",
57468
57513
  balance: "Solde",
57469
57514
  minimum: "min.",
57470
57515
  withdraw: "Retirer",
57471
57516
  invalidAddress: "Veuillez saisir une adresse valide",
57517
+ invalidXrplAddress: "Veuillez saisir une adresse {{chain_name}} valide. Si votre destinataire n\xE9cessite un tag de destination, indiquez-le \xE9galement, au format adresse:tag",
57518
+ memoTag: "Tag de destination",
57519
+ memoTagPlaceholder: "ex. 12345",
57520
+ memoTagRequiredHint: "Cette adresse {{chain_name}} n\xE9cessite un tag de destination pour recevoir des fonds",
57521
+ invalidMemoTag: "Le tag de destination doit \xEAtre un nombre entier entre 0 et 4294967295",
57472
57522
  invalidAmount: "Veuillez saisir un montant valide",
57473
57523
  verifyingAddress: "V\xE9rification de l'adresse...",
57474
57524
  loading: "Chargement...",
@@ -57516,6 +57566,9 @@ var th_default = {
57516
57566
  loading: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14...",
57517
57567
  search: "\u0E04\u0E49\u0E19\u0E2B\u0E32",
57518
57568
  close: "\u0E1B\u0E34\u0E14",
57569
+ noResults: "\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E19",
57570
+ selectCountry: "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28",
57571
+ selectState: "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E23\u0E31\u0E10",
57519
57572
  review: "\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A",
57520
57573
  tryAgain: "\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07",
57521
57574
  somethingWentWrong: "\u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14",
@@ -57738,6 +57791,7 @@ var th_default = {
57738
57791
  not_opted_in: "\u0E42\u0E1B\u0E23\u0E14\u0E40\u0E1B\u0E34\u0E14\u0E43\u0E0A\u0E49 {{token_symbol}} ({{chain_name}}) \u0E01\u0E48\u0E2D\u0E19\u0E23\u0E31\u0E1A\u0E40\u0E07\u0E34\u0E19",
57739
57792
  insufficient_balance: "\u0E1A\u0E31\u0E0D\u0E0A\u0E35\u0E1C\u0E39\u0E49\u0E23\u0E31\u0E1A\u0E44\u0E21\u0E48\u0E21\u0E35\u0E22\u0E2D\u0E14\u0E04\u0E07\u0E40\u0E2B\u0E25\u0E37\u0E2D\u0E02\u0E31\u0E49\u0E19\u0E15\u0E48\u0E33\u0E15\u0E32\u0E21\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14",
57740
57793
  account_not_found: "\u0E44\u0E21\u0E48\u0E21\u0E35\u0E1A\u0E31\u0E0D\u0E0A\u0E35\u0E1C\u0E39\u0E49\u0E23\u0E31\u0E1A\u0E1A\u0E19 {{chain_name}}",
57794
+ destination_tag_required: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 {{chain_name}} \u0E19\u0E35\u0E49\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 destination tag \u0E01\u0E23\u0E38\u0E13\u0E32\u0E23\u0E30\u0E1A\u0E38\u0E41\u0E17\u0E47\u0E01\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\u0E14\u0E49\u0E27\u0E22 \u0E43\u0E19\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A \u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48:\u0E41\u0E17\u0E47\u0E01",
57741
57795
  validation_error: "\u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E1C\u0E39\u0E49\u0E23\u0E31\u0E1A\u0E1A\u0E19 {{chain_name}} \u0E44\u0E14\u0E49"
57742
57796
  },
57743
57797
  defaultError: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E1C\u0E39\u0E49\u0E23\u0E31\u0E1A\u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E23\u0E31\u0E1A\u0E40\u0E07\u0E34\u0E19\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E42\u0E17\u0E40\u0E04\u0E19\u0E17\u0E35\u0E48\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E14\u0E49"
@@ -58316,12 +58370,18 @@ var th_default = {
58316
58370
  receiveChain: "\u0E40\u0E04\u0E23\u0E37\u0E2D\u0E02\u0E48\u0E32\u0E22\u0E17\u0E35\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A",
58317
58371
  recipientAddress: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E1C\u0E39\u0E49\u0E23\u0E31\u0E1A",
58318
58372
  recipientAddressPlaceholder: "\u0E01\u0E23\u0E2D\u0E01\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E01\u0E23\u0E30\u0E40\u0E1B\u0E4B\u0E32\u0E40\u0E07\u0E34\u0E19",
58373
+ recipientAddressPlaceholderXrpl: "\u0E01\u0E23\u0E2D\u0E01\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 \u0E2B\u0E23\u0E37\u0E2D \u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48:\u0E41\u0E17\u0E47\u0E01",
58319
58374
  amount: "\u0E08\u0E33\u0E19\u0E27\u0E19",
58320
58375
  amountPlaceholder: "0.00",
58321
58376
  balance: "\u0E22\u0E2D\u0E14\u0E04\u0E07\u0E40\u0E2B\u0E25\u0E37\u0E2D",
58322
58377
  minimum: "\u0E02\u0E31\u0E49\u0E19\u0E15\u0E48\u0E33",
58323
58378
  withdraw: "\u0E16\u0E2D\u0E19",
58324
58379
  invalidAddress: "\u0E42\u0E1B\u0E23\u0E14\u0E01\u0E23\u0E2D\u0E01\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E17\u0E35\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07",
58380
+ invalidXrplAddress: "\u0E42\u0E1B\u0E23\u0E14\u0E01\u0E23\u0E2D\u0E01\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 {{chain_name}} \u0E17\u0E35\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07 \u0E2B\u0E32\u0E01\u0E1C\u0E39\u0E49\u0E23\u0E31\u0E1A\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E0A\u0E49 destination tag \u0E01\u0E23\u0E38\u0E13\u0E32\u0E23\u0E30\u0E1A\u0E38\u0E14\u0E49\u0E27\u0E22\u0E43\u0E19\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A \u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48:\u0E41\u0E17\u0E47\u0E01",
58381
+ memoTag: "Destination tag",
58382
+ memoTagPlaceholder: "\u0E40\u0E0A\u0E48\u0E19 12345",
58383
+ memoTagRequiredHint: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 {{chain_name}} \u0E19\u0E35\u0E49\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 destination tag \u0E08\u0E36\u0E07\u0E08\u0E30\u0E23\u0E31\u0E1A\u0E40\u0E07\u0E34\u0E19\u0E44\u0E14\u0E49",
58384
+ invalidMemoTag: "Destination tag \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E40\u0E15\u0E47\u0E21\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07 0 \u0E16\u0E36\u0E07 4294967295",
58325
58385
  invalidAmount: "\u0E42\u0E1B\u0E23\u0E14\u0E01\u0E23\u0E2D\u0E01\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07",
58326
58386
  verifyingAddress: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48...",
58327
58387
  loading: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14...",
@@ -58369,6 +58429,9 @@ var ja_default = {
58369
58429
  loading: "\u8AAD\u307F\u8FBC\u307F\u4E2D...",
58370
58430
  search: "\u691C\u7D22",
58371
58431
  close: "\u9589\u3058\u308B",
58432
+ noResults: "\u4E00\u81F4\u3059\u308B\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093",
58433
+ selectCountry: "\u56FD\u3092\u9078\u629E",
58434
+ selectState: "\u5DDE\u3092\u9078\u629E",
58372
58435
  review: "\u78BA\u8A8D",
58373
58436
  tryAgain: "\u518D\u8A66\u884C",
58374
58437
  somethingWentWrong: "\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F",
@@ -58591,6 +58654,7 @@ var ja_default = {
58591
58654
  not_opted_in: "\u8CC7\u91D1\u3092\u53D7\u3051\u53D6\u308B\u524D\u306B\u3001{{chain_name}}\u3067{{token_symbol}}\u3092\u30AA\u30D7\u30C8\u30A4\u30F3\u3057\u3066\u304F\u3060\u3055\u3044",
58592
58655
  insufficient_balance: "\u53D7\u53D6\u53E3\u5EA7\u304C\u6700\u4F4E\u6B8B\u9AD8\u306E\u8981\u4EF6\u3092\u6E80\u305F\u3057\u3066\u3044\u307E\u305B\u3093",
58593
58656
  account_not_found: "{{chain_name}}\u4E0A\u306B\u53D7\u53D6\u53E3\u5EA7\u304C\u5B58\u5728\u3057\u307E\u305B\u3093",
58657
+ destination_tag_required: "\u3053\u306E{{chain_name}}\u30A2\u30C9\u30EC\u30B9\u306B\u306F\u5B9B\u5148\u30BF\u30B0\u304C\u5FC5\u8981\u3067\u3059\u3002\u5B9B\u5148\u30BF\u30B0\u3082\u300C\u30A2\u30C9\u30EC\u30B9:\u30BF\u30B0\u300D\u306E\u5F62\u5F0F\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
58594
58658
  validation_error: "{{chain_name}}\u4E0A\u306E\u53D7\u53D6\u30A2\u30C9\u30EC\u30B9\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093"
58595
58659
  },
58596
58660
  defaultError: "\u9078\u629E\u3057\u305F\u30C8\u30FC\u30AF\u30F3\u3067\u306F\u3001\u3053\u306E\u53D7\u53D6\u30A2\u30C9\u30EC\u30B9\u306B\u8CC7\u91D1\u3092\u9001\u308C\u307E\u305B\u3093"
@@ -59169,12 +59233,18 @@ var ja_default = {
59169
59233
  receiveChain: "\u53D7\u53D6\u30C1\u30A7\u30FC\u30F3",
59170
59234
  recipientAddress: "\u53D7\u53D6\u30A2\u30C9\u30EC\u30B9",
59171
59235
  recipientAddressPlaceholder: "\u30A6\u30A9\u30EC\u30C3\u30C8\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B",
59236
+ recipientAddressPlaceholderXrpl: "\u30A2\u30C9\u30EC\u30B9\u3001\u307E\u305F\u306F \u30A2\u30C9\u30EC\u30B9:\u30BF\u30B0 \u3092\u5165\u529B",
59172
59237
  amount: "\u91D1\u984D",
59173
59238
  amountPlaceholder: "0.00",
59174
59239
  balance: "\u6B8B\u9AD8",
59175
59240
  minimum: "\u6700\u4F4E",
59176
59241
  withdraw: "\u51FA\u91D1",
59177
59242
  invalidAddress: "\u6709\u52B9\u306A\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
59243
+ invalidXrplAddress: "\u6709\u52B9\u306A{{chain_name}}\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u53D7\u53D6\u5148\u3067\u5B9B\u5148\u30BF\u30B0\u304C\u5FC5\u8981\u306A\u5834\u5408\u306F\u3001\u300C\u30A2\u30C9\u30EC\u30B9:\u30BF\u30B0\u300D\u306E\u5F62\u5F0F\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
59244
+ memoTag: "\u5B9B\u5148\u30BF\u30B0",
59245
+ memoTagPlaceholder: "\u4F8B: 12345",
59246
+ memoTagRequiredHint: "\u3053\u306E{{chain_name}}\u30A2\u30C9\u30EC\u30B9\u306F\u3001\u8CC7\u91D1\u3092\u53D7\u3051\u53D6\u308B\u305F\u3081\u306B\u5B9B\u5148\u30BF\u30B0\u304C\u5FC5\u8981\u3067\u3059",
59247
+ invalidMemoTag: "\u5B9B\u5148\u30BF\u30B0\u306F 0\u301C4294967295 \u306E\u6574\u6570\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
59178
59248
  invalidAmount: "\u6709\u52B9\u306A\u91D1\u984D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
59179
59249
  verifyingAddress: "\u30A2\u30C9\u30EC\u30B9\u3092\u78BA\u8A8D\u3057\u3066\u3044\u307E\u3059...",
59180
59250
  loading: "\u8AAD\u307F\u8FBC\u307F\u4E2D...",
@@ -59222,6 +59292,9 @@ var ko_default = {
59222
59292
  loading: "\uB85C\uB529 \uC911...",
59223
59293
  search: "\uAC80\uC0C9",
59224
59294
  close: "\uB2EB\uAE30",
59295
+ noResults: "\uC77C\uCE58\uD558\uB294 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",
59296
+ selectCountry: "\uAD6D\uAC00 \uC120\uD0DD",
59297
+ selectState: "\uC8FC \uC120\uD0DD",
59225
59298
  review: "\uD655\uC778",
59226
59299
  tryAgain: "\uB2E4\uC2DC \uC2DC\uB3C4",
59227
59300
  somethingWentWrong: "\uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4",
@@ -59444,6 +59517,7 @@ var ko_default = {
59444
59517
  not_opted_in: "\uC790\uAE08\uC744 \uBC1B\uAE30 \uC804\uC5D0 {{chain_name}}\uC5D0\uC11C {{token_symbol}}\uC744(\uB97C) \uC635\uD2B8\uC778\uD558\uC138\uC694",
59445
59518
  insufficient_balance: "\uBC1B\uB294 \uACC4\uC815\uC774 \uCD5C\uC18C \uC794\uC561 \uC694\uAC74\uC744 \uCDA9\uC871\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",
59446
59519
  account_not_found: "{{chain_name}}\uC5D0 \uBC1B\uB294 \uACC4\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",
59520
+ destination_tag_required: "\uC774 {{chain_name}} \uC8FC\uC18C\uC5D0\uB294 \uB370\uC2A4\uD2F0\uB124\uC774\uC158 \uD0DC\uADF8\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4. \uD0DC\uADF8\uB3C4 \uD568\uAED8 \uC8FC\uC18C:\uD0DC\uADF8 \uD615\uC2DD\uC73C\uB85C \uC785\uB825\uD558\uC138\uC694",
59447
59521
  validation_error: "{{chain_name}}\uC5D0\uC11C \uBC1B\uB294 \uC8FC\uC18C\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4"
59448
59522
  },
59449
59523
  defaultError: "\uC120\uD0DD\uD55C \uD1A0\uD070\uC73C\uB85C\uB294 \uC774 \uBC1B\uB294 \uC8FC\uC18C\uC5D0 \uC790\uAE08\uC744 \uBCF4\uB0BC \uC218 \uC5C6\uC2B5\uB2C8\uB2E4"
@@ -60022,12 +60096,18 @@ var ko_default = {
60022
60096
  receiveChain: "\uBC1B\uC744 \uCCB4\uC778",
60023
60097
  recipientAddress: "\uBC1B\uB294 \uC8FC\uC18C",
60024
60098
  recipientAddressPlaceholder: "\uC9C0\uAC11 \uC8FC\uC18C\uB97C \uC785\uB825\uD558\uC138\uC694",
60099
+ recipientAddressPlaceholderXrpl: "\uC8FC\uC18C \uB610\uB294 \uC8FC\uC18C:\uD0DC\uADF8 \uB97C \uC785\uB825\uD558\uC138\uC694",
60025
60100
  amount: "\uAE08\uC561",
60026
60101
  amountPlaceholder: "0.00",
60027
60102
  balance: "\uC794\uC561",
60028
60103
  minimum: "\uCD5C\uC18C",
60029
60104
  withdraw: "\uCD9C\uAE08",
60030
60105
  invalidAddress: "\uC720\uD6A8\uD55C \uC8FC\uC18C\uB97C \uC785\uB825\uD574 \uC8FC\uC138\uC694",
60106
+ invalidXrplAddress: "\uC720\uD6A8\uD55C {{chain_name}} \uC8FC\uC18C\uB97C \uC785\uB825\uD574 \uC8FC\uC138\uC694. \uC218\uCDE8\uC778\uC774 \uB370\uC2A4\uD2F0\uB124\uC774\uC158 \uD0DC\uADF8\uB97C \uC694\uAD6C\uD558\uB294 \uACBD\uC6B0 \uC8FC\uC18C:\uD0DC\uADF8 \uD615\uC2DD\uC73C\uB85C \uD568\uAED8 \uC785\uB825\uD558\uC138\uC694",
60107
+ memoTag: "\uB370\uC2A4\uD2F0\uB124\uC774\uC158 \uD0DC\uADF8",
60108
+ memoTagPlaceholder: "\uC608: 12345",
60109
+ memoTagRequiredHint: "\uC774 {{chain_name}} \uC8FC\uC18C\uB294 \uC790\uAE08\uC744 \uBC1B\uAE30 \uC704\uD574 \uB370\uC2A4\uD2F0\uB124\uC774\uC158 \uD0DC\uADF8\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4",
60110
+ invalidMemoTag: "\uB370\uC2A4\uD2F0\uB124\uC774\uC158 \uD0DC\uADF8\uB294 0\uC5D0\uC11C 4294967295 \uC0AC\uC774\uC758 \uC815\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4",
60031
60111
  invalidAmount: "\uC720\uD6A8\uD55C \uAE08\uC561\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694",
60032
60112
  verifyingAddress: "\uC8FC\uC18C\uB97C \uD655\uC778\uD558\uB294 \uC911...",
60033
60113
  loading: "\uB85C\uB529 \uC911...",
@@ -62879,6 +62959,17 @@ function DepositPollingToasts({
62879
62959
  }
62880
62960
  );
62881
62961
  }
62962
+ var initialCardOnrampSessionState = {
62963
+ active: null,
62964
+ started: false
62965
+ };
62966
+ function startCardOnrampSession(session) {
62967
+ return { active: session, started: true };
62968
+ }
62969
+ function cardOnrampSessionForView(state, view) {
62970
+ if (view === "review" || state.active === null) return state;
62971
+ return { active: null, started: state.started };
62972
+ }
62882
62973
  function formatFiatAmount(value, symbol) {
62883
62974
  return `${symbol}${value.toLocaleString(void 0, {
62884
62975
  minimumFractionDigits: 2,
@@ -62957,10 +63048,13 @@ function BuyWithCard({
62957
63048
  const [defaultToken, setDefaultToken] = (0, import_react7.useState)(null);
62958
63049
  const [defaultTokenLoading, setDefaultTokenLoading] = (0, import_react7.useState)(false);
62959
63050
  const { userIpInfo, isLoading: isLoadingIp } = useUserIp2();
62960
- const [onrampSession, setOnrampSession] = (0, import_react7.useState)(null);
63051
+ const [onrampSession, setOnrampSession] = (0, import_react7.useState)(initialCardOnrampSessionState);
62961
63052
  const currentView = externalView ?? internalView;
62962
63053
  const showQuotesView = currentView === "quotes";
62963
63054
  const showReviewView = currentView === "review";
63055
+ (0, import_react7.useEffect)(() => {
63056
+ setOnrampSession((prev) => cardOnrampSessionForView(prev, currentView));
63057
+ }, [currentView]);
62964
63058
  (0, import_react7.useEffect)(() => {
62965
63059
  if (externalView) {
62966
63060
  setInternalView(externalView);
@@ -63112,7 +63206,7 @@ function BuyWithCard({
63112
63206
  const { executions, isPolling } = useDepositPolling({
63113
63207
  userId,
63114
63208
  publishableKey,
63115
- enabled: !!onrampSession,
63209
+ enabled: onrampSession.started,
63116
63210
  depositWalletId,
63117
63211
  onDepositSuccess,
63118
63212
  onDepositError
@@ -63405,13 +63499,15 @@ function BuyWithCard({
63405
63499
  ...isDestinationMode ? { destination_amount: destinationAmount } : { source_amount: amount }
63406
63500
  };
63407
63501
  const sessionStartUrl = getOnrampSessionStartUrl(sessionRequest, publishableKey);
63408
- setOnrampSession({
63409
- provider: selectedProvider,
63410
- sourceCurrency: currency,
63411
- sourceAmount: amount,
63412
- sessionUrl: sessionStartUrl,
63413
- externalId
63414
- });
63502
+ setOnrampSession(
63503
+ startCardOnrampSession({
63504
+ provider: selectedProvider,
63505
+ sourceCurrency: currency,
63506
+ sourceAmount: amount,
63507
+ sessionUrl: sessionStartUrl,
63508
+ externalId
63509
+ })
63510
+ );
63415
63511
  track("flow_started", {
63416
63512
  method: "card",
63417
63513
  flow_type: "deposit",
@@ -63867,8 +63963,8 @@ function BuyWithCard({
63867
63963
  onToggleDetails: () => setShowReviewDetails((prev) => !prev),
63868
63964
  onContinue: handleStartOnramp,
63869
63965
  continueLabel: strings.common.confirm,
63870
- continueDisabled: !selectedProvider || !!onrampSession,
63871
- checking: !!onrampSession,
63966
+ continueDisabled: !selectedProvider || !!onrampSession.active,
63967
+ checking: !!onrampSession.active,
63872
63968
  disclaimer: strings.common.intentAddressDisclaimer
63873
63969
  }
63874
63970
  )
@@ -72579,6 +72675,9 @@ function useStripeOnramp(stripePublishableKey, isDark = false) {
72579
72675
  }, []);
72580
72676
  return { coordinator, isLoading, error, initialize };
72581
72677
  }
72678
+ function normalizeStripeStateCode(raw) {
72679
+ return raw.replace(/[^a-zA-Z]/g, "").slice(0, 2).toUpperCase();
72680
+ }
72582
72681
  var STORAGE_PREFIX = "unifold:stripe-link:session";
72583
72682
  function storageKey(externalUserId) {
72584
72683
  return `${STORAGE_PREFIX}:${externalUserId}`;
@@ -73645,7 +73744,7 @@ function PayWithStripeLink({
73645
73744
  setKycFormMode("name");
73646
73745
  return;
73647
73746
  }
73648
- if (!kycForm.addressLine1.trim() || !kycForm.addressCity.trim() || !kycForm.addressState.trim() || !kycForm.addressPostalCode.trim()) {
73747
+ if (!kycForm.addressLine1.trim() || !kycForm.addressCity.trim() || normalizeStripeStateCode(kycForm.addressState).length !== 2 || !kycForm.addressPostalCode.trim()) {
73649
73748
  setError(t.formErrors.enterFullAddress);
73650
73749
  return;
73651
73750
  }
@@ -73656,7 +73755,8 @@ function PayWithStripeLink({
73656
73755
  line1: kycForm.addressLine1,
73657
73756
  ...kycForm.addressLine2.trim() && { line2: kycForm.addressLine2 },
73658
73757
  city: kycForm.addressCity,
73659
- state: kycForm.addressState,
73758
+ // Stripe requires a 2-letter uppercase code for US/CA (`TX`, not `Tx`).
73759
+ state: normalizeStripeStateCode(kycForm.addressState),
73660
73760
  postal_code: kycForm.addressPostalCode,
73661
73761
  country: kycForm.addressCountry
73662
73762
  }
@@ -74920,9 +75020,14 @@ function PayWithStripeLink({
74920
75020
  ...NO_AUTOFILL,
74921
75021
  type: "text",
74922
75022
  value: kycForm.addressState,
74923
- onChange: (e) => setKycForm((f) => ({ ...f, addressState: e.target.value })),
75023
+ onChange: (e) => setKycForm((f) => ({
75024
+ ...f,
75025
+ addressState: normalizeStripeStateCode(e.target.value)
75026
+ })),
74924
75027
  placeholder: "CA",
74925
75028
  maxLength: 2,
75029
+ autoCapitalize: "characters",
75030
+ spellCheck: false,
74926
75031
  className: "uf-w-full uf-py-2.5 uf-px-3 uf-bg-transparent uf-outline-none uf-text-sm",
74927
75032
  style: inputStyle
74928
75033
  }
@@ -75028,7 +75133,7 @@ function PayWithStripeLink({
75028
75133
  DepositFooterButton,
75029
75134
  {
75030
75135
  onClick: kycFormMode === "name" ? handleNameNext : handleKycSubmit,
75031
- disabled: loading || (kycFormMode === "name" ? !kycForm.givenName || !kycForm.surname : kycFormMode === "address" ? !kycForm.addressLine1 || !kycForm.addressCity || !kycForm.addressState || !kycForm.addressPostalCode : !kycForm.ssn || !kycForm.dob.day || !kycForm.dob.month || !kycForm.dob.year),
75136
+ disabled: loading || (kycFormMode === "name" ? !kycForm.givenName || !kycForm.surname : kycFormMode === "address" ? !kycForm.addressLine1 || !kycForm.addressCity || kycForm.addressState.length !== 2 || !kycForm.addressPostalCode : !kycForm.ssn || !kycForm.dob.day || !kycForm.dob.month || !kycForm.dob.year),
75032
75137
  loading,
75033
75138
  className: "uf-flex-1",
75034
75139
  children: loading ? t.submitting : strings.common.review
@@ -88549,6 +88654,30 @@ function useVerifyRecipientAddress(params) {
88549
88654
  refetchOnWindowFocus: false
88550
88655
  });
88551
88656
  }
88657
+ var XRPL_BASE58 = "rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz";
88658
+ var CLASSIC_ADDRESS = new RegExp(`^r[${XRPL_BASE58}]{24,34}$`);
88659
+ var X_ADDRESS = new RegExp(`^[XT][${XRPL_BASE58}]{40,50}$`);
88660
+ var MAX_DESTINATION_TAG = 4294967295;
88661
+ function isXrplRecipientShapeValid(input) {
88662
+ const trimmed = input.trim();
88663
+ if (trimmed.length === 0) {
88664
+ return false;
88665
+ }
88666
+ const separatorIndex = trimmed.indexOf(":");
88667
+ if (separatorIndex === -1) {
88668
+ return CLASSIC_ADDRESS.test(trimmed) || X_ADDRESS.test(trimmed);
88669
+ }
88670
+ const address = trimmed.slice(0, separatorIndex);
88671
+ const tag = trimmed.slice(separatorIndex + 1);
88672
+ return isDestinationTagValid(tag) && (CLASSIC_ADDRESS.test(address) || X_ADDRESS.test(address));
88673
+ }
88674
+ function isDestinationTagValid(tag) {
88675
+ if (!/^\d+$/.test(tag)) {
88676
+ return false;
88677
+ }
88678
+ const parsed = Number(tag);
88679
+ return parsed <= MAX_DESTINATION_TAG;
88680
+ }
88552
88681
  function useGetDepositAddress(params) {
88553
88682
  const {
88554
88683
  userId,
@@ -88711,6 +88840,8 @@ function WithdrawForm({
88711
88840
  const t = strings.withdrawModal;
88712
88841
  const tCrypto = strings.transferCrypto;
88713
88842
  const [recipientAddress, setRecipientAddress] = (0, import_react45.useState)(recipientAddressProp || "");
88843
+ const [memoTag, setMemoTag] = (0, import_react45.useState)("");
88844
+ const [memoTagRequiredFor, setMemoTagRequiredFor] = (0, import_react45.useState)(null);
88714
88845
  const [amount, setAmount] = (0, import_react45.useState)("");
88715
88846
  const [inputUnit, setInputUnit] = (0, import_react45.useState)("fiat");
88716
88847
  const [isSubmitting, setIsSubmitting] = (0, import_react45.useState)(false);
@@ -88729,7 +88860,16 @@ function WithdrawForm({
88729
88860
  setIsMaxed(false);
88730
88861
  }, [balanceData?.balanceBaseUnit]);
88731
88862
  const trimmedAddress = recipientAddress.trim();
88732
- const debouncedAddress = useDebounce(trimmedAddress, 500);
88863
+ const trimmedMemoTag = memoTag.trim();
88864
+ const isMemoTagValid = isDestinationTagValid(trimmedMemoTag);
88865
+ const destinationKey = `${selectedChain?.chain_type ?? ""}:${selectedChain?.chain_id ?? ""}:${selectedChain?.token_address ?? ""}`;
88866
+ const recipientKey = `${destinationKey}:${trimmedAddress}`;
88867
+ const memoTagRequired = trimmedAddress.length > 0 && memoTagRequiredFor === recipientKey;
88868
+ const effectiveRecipient = memoTagRequired && isMemoTagValid ? `${trimmedAddress}:${trimmedMemoTag}` : trimmedAddress;
88869
+ const debouncedRecipient = useDebounce(effectiveRecipient, 500);
88870
+ const isXrplDestination = selectedChain?.chain_type === "xrpl";
88871
+ const isXrplRecipientMalformed = isXrplDestination && trimmedAddress.length > 5 && !isXrplRecipientShapeValid(effectiveRecipient);
88872
+ const canVerifyXrplRecipient = !isXrplDestination || isXrplRecipientShapeValid(debouncedRecipient);
88733
88873
  const {
88734
88874
  data: addressVerification,
88735
88875
  isLoading: isVerifyingAddress,
@@ -88738,16 +88878,36 @@ function WithdrawForm({
88738
88878
  chainType: selectedChain?.chain_type,
88739
88879
  chainId: selectedChain?.chain_id,
88740
88880
  tokenAddress: selectedChain?.token_address,
88741
- recipientAddress: debouncedAddress,
88881
+ recipientAddress: debouncedRecipient,
88742
88882
  publishableKey,
88743
- enabled: debouncedAddress.length > 5 && !!selectedChain
88883
+ enabled: debouncedRecipient.length > 5 && !!selectedChain && canVerifyXrplRecipient
88744
88884
  });
88745
- const isDebouncing = trimmedAddress !== debouncedAddress;
88885
+ const isDebouncing = effectiveRecipient !== debouncedRecipient;
88886
+ const verifiedRecipientKey = `${destinationKey}:${debouncedRecipient}`;
88887
+ (0, import_react45.useEffect)(() => {
88888
+ if (addressVerification?.failure_code === "destination_tag_required") {
88889
+ setMemoTagRequiredFor(verifiedRecipientKey);
88890
+ }
88891
+ }, [addressVerification, verifiedRecipientKey]);
88892
+ (0, import_react45.useEffect)(() => {
88893
+ setMemoTag("");
88894
+ }, [recipientKey]);
88895
+ const xrplFormatHint = (0, import_react45.useMemo)(
88896
+ () => interpolate(t.invalidXrplAddress, {
88897
+ chain_name: selectedChain?.chain_name ?? "XRP Ledger"
88898
+ }),
88899
+ [t, selectedChain]
88900
+ );
88746
88901
  const addressError = (0, import_react45.useMemo)(() => {
88747
88902
  if (!trimmedAddress || trimmedAddress.length <= 5) return null;
88903
+ if (isXrplRecipientMalformed) return xrplFormatHint;
88748
88904
  if (isDebouncing || isVerifyingAddress) return null;
88749
- if (verifyError) return t.invalidAddress;
88905
+ if (verifyError) return isXrplDestination ? xrplFormatHint : t.invalidAddress;
88750
88906
  if (addressVerification && !addressVerification.valid) {
88907
+ if (addressVerification.failure_code === "destination_tag_required")
88908
+ return memoTagRequired ? null : interpolate(tCrypto.addressValidation.errors.destination_tag_required, {
88909
+ chain_name: selectedChain?.chain_name ?? ""
88910
+ });
88751
88911
  if (addressVerification.message && addressVerification.message.trim().length > 0) {
88752
88912
  return addressVerification.message;
88753
88913
  }
@@ -88760,13 +88920,17 @@ function WithdrawForm({
88760
88920
  token_symbol: selectedToken?.symbol ?? "",
88761
88921
  chain_name: selectedChain?.chain_name ?? ""
88762
88922
  });
88763
- return t.invalidAddress;
88923
+ return isXrplDestination ? xrplFormatHint : t.invalidAddress;
88764
88924
  }
88765
88925
  return null;
88766
88926
  }, [
88767
88927
  trimmedAddress,
88768
88928
  isDebouncing,
88769
88929
  isVerifyingAddress,
88930
+ isXrplDestination,
88931
+ isXrplRecipientMalformed,
88932
+ memoTagRequired,
88933
+ xrplFormatHint,
88770
88934
  verifyError,
88771
88935
  addressVerification,
88772
88936
  selectedChain,
@@ -88774,6 +88938,7 @@ function WithdrawForm({
88774
88938
  t,
88775
88939
  tCrypto
88776
88940
  ]);
88941
+ const memoTagError = memoTagRequired && trimmedMemoTag.length > 0 && !isMemoTagValid ? t.invalidMemoTag : null;
88777
88942
  const isAddressValid = !isDebouncing && !!addressVerification?.valid && !addressError;
88778
88943
  const { showWarning: showActivationWarning, activationFee: effectiveActivationFee } = useHypercoreWithdrawActivation({
88779
88944
  userId: externalUserId,
@@ -88781,7 +88946,7 @@ function WithdrawForm({
88781
88946
  senderAddress,
88782
88947
  sourceChainId,
88783
88948
  sourceChainType,
88784
- recipientAddress: debouncedAddress,
88949
+ recipientAddress: debouncedRecipient,
88785
88950
  destinationChainType: selectedChain?.chain_type,
88786
88951
  destinationChainId: selectedChain?.chain_id,
88787
88952
  destinationTokenAddress: selectedChain?.token_address,
@@ -88895,7 +89060,7 @@ function WithdrawForm({
88895
89060
  const isBalanceBelowMinimum = !isLoadingBalance && minimumWithdrawAmountUsd !== null && Math.round(balanceUsdNum * 100) / 100 < minimumWithdrawAmountUsd;
88896
89061
  const isBelowMinimum = minimumWithdrawAmountUsd !== null && fiatAmountFromInput > 0 && Math.round(fiatAmountFromInput * 100) / 100 < minimumWithdrawAmountUsd;
88897
89062
  const isOverBalance = inputUnit === "crypto" ? cryptoAmountFromInput > 0 && balanceCrypto > 0 && cryptoAmountFromInput > balanceCrypto : fiatAmountFromInput > 0 && balanceUsdNum > 0 && Math.round(fiatAmountFromInput * 100) / 100 > Math.round(balanceUsdNum * 100) / 100;
88898
- const isFormValid = trimmedAddress.length > 0 && amount.trim().length > 0 && cryptoAmountFromInput > 0 && isAddressValid && !isBelowMinimum && !isOverBalance && !isBalanceBelowMinimum && !!balanceData;
89063
+ const isFormValid = trimmedAddress.length > 0 && amount.trim().length > 0 && cryptoAmountFromInput > 0 && isAddressValid && !(memoTagRequired && !isMemoTagValid) && !isBelowMinimum && !isOverBalance && !isBalanceBelowMinimum && !!balanceData;
88899
89064
  const handleWithdraw = (0, import_react45.useCallback)(async () => {
88900
89065
  if (!selectedToken || !selectedChain) return;
88901
89066
  if (!isFormValid) return;
@@ -88909,7 +89074,7 @@ function WithdrawForm({
88909
89074
  destinationChainType: selectedChain.chain_type,
88910
89075
  destinationChainId: selectedChain.chain_id,
88911
89076
  destinationTokenAddress: selectedChain.token_address,
88912
- recipientAddress: trimmedAddress
89077
+ recipientAddress: effectiveRecipient
88913
89078
  });
88914
89079
  let amountBaseUnit = isMaxed ? balanceData.balanceBaseUnit : computeBaseUnit(
88915
89080
  balanceData.balanceBaseUnit,
@@ -88958,7 +89123,7 @@ function WithdrawForm({
88958
89123
  amount: humanAmount,
88959
89124
  amountBaseUnit,
88960
89125
  withdrawIntentAddress: depositWallet.address,
88961
- recipientAddress: trimmedAddress
89126
+ recipientAddress: effectiveRecipient
88962
89127
  };
88963
89128
  const usdValue = isMaxed ? balanceUsdNum : fiatAmountFromInput;
88964
89129
  onWithdrawStarted?.({
@@ -88995,7 +89160,7 @@ function WithdrawForm({
88995
89160
  isFormValid,
88996
89161
  cryptoAmountFromInput,
88997
89162
  sourceDecimals,
88998
- trimmedAddress,
89163
+ effectiveRecipient,
88999
89164
  publishableKey,
89000
89165
  onWithdraw,
89001
89166
  sourceChainType,
@@ -89046,7 +89211,7 @@ function WithdrawForm({
89046
89211
  "input",
89047
89212
  {
89048
89213
  type: "text",
89049
- placeholder: t.recipientAddressPlaceholder,
89214
+ placeholder: isXrplDestination ? t.recipientAddressPlaceholderXrpl : t.recipientAddressPlaceholder,
89050
89215
  value: recipientAddress,
89051
89216
  onChange: (e) => {
89052
89217
  setRecipientAddress(e.target.value);
@@ -89082,7 +89247,7 @@ function WithdrawForm({
89082
89247
  ]
89083
89248
  }
89084
89249
  ),
89085
- (isDebouncing || isVerifyingAddress) && trimmedAddress.length > 5 && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "uf-flex uf-items-center uf-gap-1.5 uf-mt-1.5", children: [
89250
+ (isDebouncing || isVerifyingAddress) && trimmedAddress.length > 5 && !addressError && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "uf-flex uf-items-center uf-gap-1.5 uf-mt-1.5", children: [
89086
89251
  /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
89087
89252
  LoaderCircle,
89088
89253
  {
@@ -89104,6 +89269,61 @@ function WithdrawForm({
89104
89269
  /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "uf-text-xs", style: { color: colors2.error, fontFamily: fonts.regular }, children: addressError })
89105
89270
  ] })
89106
89271
  ] }),
89272
+ memoTagRequired && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { children: [
89273
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
89274
+ "div",
89275
+ {
89276
+ className: "uf-text-xs uf-mb-1.5",
89277
+ style: { color: components.card.labelColor, fontFamily: fonts.medium },
89278
+ children: t.memoTag
89279
+ }
89280
+ ),
89281
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
89282
+ "style",
89283
+ {
89284
+ dangerouslySetInnerHTML: {
89285
+ __html: `.uf-withdraw-memo::placeholder { color: ${components.search.placeholderColor}; }`
89286
+ }
89287
+ }
89288
+ ),
89289
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
89290
+ "input",
89291
+ {
89292
+ type: "text",
89293
+ inputMode: "numeric",
89294
+ placeholder: t.memoTagPlaceholder,
89295
+ value: memoTag,
89296
+ onChange: (e) => {
89297
+ setMemoTag(e.target.value);
89298
+ setSubmitError(null);
89299
+ },
89300
+ className: "uf-withdraw-memo uf-w-full uf-px-3 uf-py-2.5 uf-text-sm uf-outline-none",
89301
+ style: {
89302
+ backgroundColor: components.search.backgroundColor,
89303
+ borderRadius: components.input.borderRadius,
89304
+ border: `${components.input.borderWidth}px solid ${memoTagError ? colors2.error : components.input.borderColor}`,
89305
+ color: components.search.inputColor,
89306
+ fontFamily: fonts.regular
89307
+ }
89308
+ }
89309
+ ),
89310
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "uf-flex uf-items-center uf-gap-1.5 uf-mt-1.5", children: [
89311
+ memoTagError && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(TriangleAlert, { className: "uf-w-3 uf-h-3", style: { color: colors2.error } }),
89312
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
89313
+ "span",
89314
+ {
89315
+ className: "uf-text-xs",
89316
+ style: {
89317
+ color: memoTagError ? colors2.error : colors2.foregroundMuted,
89318
+ fontFamily: fonts.regular
89319
+ },
89320
+ children: memoTagError ?? interpolate(t.memoTagRequiredHint, {
89321
+ chain_name: selectedChain?.chain_name ?? "XRP Ledger"
89322
+ })
89323
+ }
89324
+ )
89325
+ ] })
89326
+ ] }),
89107
89327
  /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { children: [
89108
89328
  /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
89109
89329
  "div",
@@ -90197,6 +90417,406 @@ function WithdrawModal({
90197
90417
  }
90198
90418
  ) });
90199
90419
  }
90420
+ var COUNTRIES = [
90421
+ { alpha2: "AD", name: "Andorra", dialCode: "376" },
90422
+ { alpha2: "AE", name: "United Arab Emirates", dialCode: "971" },
90423
+ { alpha2: "AF", name: "Afghanistan", dialCode: "93" },
90424
+ { alpha2: "AG", name: "Antigua and Barbuda", dialCode: "1" },
90425
+ { alpha2: "AI", name: "Anguilla", dialCode: "1" },
90426
+ { alpha2: "AL", name: "Albania", dialCode: "355" },
90427
+ { alpha2: "AM", name: "Armenia", dialCode: "374" },
90428
+ { alpha2: "AO", name: "Angola", dialCode: "244" },
90429
+ { alpha2: "AQ", name: "Antarctica" },
90430
+ { alpha2: "AR", name: "Argentina", dialCode: "54" },
90431
+ { alpha2: "AS", name: "American Samoa", dialCode: "1" },
90432
+ { alpha2: "AT", name: "Austria", dialCode: "43" },
90433
+ { alpha2: "AU", name: "Australia", dialCode: "61" },
90434
+ { alpha2: "AW", name: "Aruba", dialCode: "297" },
90435
+ { alpha2: "AX", name: "\xC5land Islands", dialCode: "358" },
90436
+ { alpha2: "AZ", name: "Azerbaijan", dialCode: "994" },
90437
+ { alpha2: "BA", name: "Bosnia and Herzegovina", dialCode: "387" },
90438
+ { alpha2: "BB", name: "Barbados", dialCode: "1" },
90439
+ { alpha2: "BD", name: "Bangladesh", dialCode: "880" },
90440
+ { alpha2: "BE", name: "Belgium", dialCode: "32" },
90441
+ { alpha2: "BF", name: "Burkina Faso", dialCode: "226" },
90442
+ { alpha2: "BG", name: "Bulgaria", dialCode: "359" },
90443
+ { alpha2: "BH", name: "Bahrain", dialCode: "973" },
90444
+ { alpha2: "BI", name: "Burundi", dialCode: "257" },
90445
+ { alpha2: "BJ", name: "Benin", dialCode: "229" },
90446
+ { alpha2: "BL", name: "Saint Barth\xE9lemy", dialCode: "590" },
90447
+ { alpha2: "BM", name: "Bermuda", dialCode: "1" },
90448
+ { alpha2: "BN", name: "Brunei", dialCode: "673" },
90449
+ { alpha2: "BO", name: "Bolivia", dialCode: "591" },
90450
+ { alpha2: "BQ", name: "Bonaire, Sint Eustatius and Saba", dialCode: "599" },
90451
+ { alpha2: "BR", name: "Brazil", dialCode: "55" },
90452
+ { alpha2: "BS", name: "Bahamas", dialCode: "1" },
90453
+ { alpha2: "BT", name: "Bhutan", dialCode: "975" },
90454
+ { alpha2: "BV", name: "Bouvet Island" },
90455
+ { alpha2: "BW", name: "Botswana", dialCode: "267" },
90456
+ { alpha2: "BY", name: "Belarus", dialCode: "375" },
90457
+ { alpha2: "BZ", name: "Belize", dialCode: "501" },
90458
+ { alpha2: "CA", name: "Canada", dialCode: "1" },
90459
+ { alpha2: "CC", name: "Cocos (Keeling) Islands", dialCode: "61" },
90460
+ { alpha2: "CD", name: "Congo (Democratic Republic)", dialCode: "243" },
90461
+ { alpha2: "CF", name: "Central African Republic", dialCode: "236" },
90462
+ { alpha2: "CG", name: "Congo (Republic)", dialCode: "242" },
90463
+ { alpha2: "CH", name: "Switzerland", dialCode: "41" },
90464
+ { alpha2: "CI", name: "C\xF4te d'Ivoire", dialCode: "225" },
90465
+ { alpha2: "CK", name: "Cook Islands", dialCode: "682" },
90466
+ { alpha2: "CL", name: "Chile", dialCode: "56" },
90467
+ { alpha2: "CM", name: "Cameroon", dialCode: "237" },
90468
+ { alpha2: "CN", name: "China", dialCode: "86" },
90469
+ { alpha2: "CO", name: "Colombia", dialCode: "57" },
90470
+ { alpha2: "CR", name: "Costa Rica", dialCode: "506" },
90471
+ { alpha2: "CU", name: "Cuba", dialCode: "53" },
90472
+ { alpha2: "CV", name: "Cabo Verde", dialCode: "238" },
90473
+ { alpha2: "CW", name: "Cura\xE7ao", dialCode: "599" },
90474
+ { alpha2: "CX", name: "Christmas Island", dialCode: "61" },
90475
+ { alpha2: "CY", name: "Cyprus", dialCode: "357" },
90476
+ { alpha2: "CZ", name: "Czech Republic", dialCode: "420" },
90477
+ { alpha2: "DE", name: "Germany", dialCode: "49" },
90478
+ { alpha2: "DJ", name: "Djibouti", dialCode: "253" },
90479
+ { alpha2: "DK", name: "Denmark", dialCode: "45" },
90480
+ { alpha2: "DM", name: "Dominica", dialCode: "1" },
90481
+ { alpha2: "DO", name: "Dominican Republic", dialCode: "1" },
90482
+ { alpha2: "DZ", name: "Algeria", dialCode: "213" },
90483
+ { alpha2: "EC", name: "Ecuador", dialCode: "593" },
90484
+ { alpha2: "EE", name: "Estonia", dialCode: "372" },
90485
+ { alpha2: "EG", name: "Egypt", dialCode: "20" },
90486
+ { alpha2: "EH", name: "Western Sahara", dialCode: "212" },
90487
+ { alpha2: "ER", name: "Eritrea", dialCode: "291" },
90488
+ { alpha2: "ES", name: "Spain", dialCode: "34" },
90489
+ { alpha2: "ET", name: "Ethiopia", dialCode: "251" },
90490
+ { alpha2: "FI", name: "Finland", dialCode: "358" },
90491
+ { alpha2: "FJ", name: "Fiji", dialCode: "679" },
90492
+ { alpha2: "FK", name: "Falkland Islands", dialCode: "500" },
90493
+ { alpha2: "FM", name: "Micronesia", dialCode: "691" },
90494
+ { alpha2: "FO", name: "Faroe Islands", dialCode: "298" },
90495
+ { alpha2: "FR", name: "France", dialCode: "33" },
90496
+ { alpha2: "GA", name: "Gabon", dialCode: "241" },
90497
+ { alpha2: "GB", name: "United Kingdom", dialCode: "44" },
90498
+ { alpha2: "GD", name: "Grenada", dialCode: "1" },
90499
+ { alpha2: "GE", name: "Georgia", dialCode: "995" },
90500
+ { alpha2: "GF", name: "French Guiana", dialCode: "594" },
90501
+ { alpha2: "GG", name: "Guernsey", dialCode: "44" },
90502
+ { alpha2: "GH", name: "Ghana", dialCode: "233" },
90503
+ { alpha2: "GI", name: "Gibraltar", dialCode: "350" },
90504
+ { alpha2: "GL", name: "Greenland", dialCode: "299" },
90505
+ { alpha2: "GM", name: "Gambia", dialCode: "220" },
90506
+ { alpha2: "GN", name: "Guinea", dialCode: "224" },
90507
+ { alpha2: "GP", name: "Guadeloupe", dialCode: "590" },
90508
+ { alpha2: "GQ", name: "Equatorial Guinea", dialCode: "240" },
90509
+ { alpha2: "GR", name: "Greece", dialCode: "30" },
90510
+ { alpha2: "GS", name: "South Georgia and the South Sandwich Islands" },
90511
+ { alpha2: "GT", name: "Guatemala", dialCode: "502" },
90512
+ { alpha2: "GU", name: "Guam", dialCode: "1" },
90513
+ { alpha2: "GW", name: "Guinea-Bissau", dialCode: "245" },
90514
+ { alpha2: "GY", name: "Guyana", dialCode: "592" },
90515
+ { alpha2: "HK", name: "Hong Kong", dialCode: "852" },
90516
+ { alpha2: "HM", name: "Heard Island and McDonald Islands" },
90517
+ { alpha2: "HN", name: "Honduras", dialCode: "504" },
90518
+ { alpha2: "HR", name: "Croatia", dialCode: "385" },
90519
+ { alpha2: "HT", name: "Haiti", dialCode: "509" },
90520
+ { alpha2: "HU", name: "Hungary", dialCode: "36" },
90521
+ { alpha2: "ID", name: "Indonesia", dialCode: "62" },
90522
+ { alpha2: "IE", name: "Ireland", dialCode: "353" },
90523
+ { alpha2: "IL", name: "Israel", dialCode: "972" },
90524
+ { alpha2: "IM", name: "Isle of Man", dialCode: "44" },
90525
+ { alpha2: "IN", name: "India", dialCode: "91" },
90526
+ { alpha2: "IO", name: "British Indian Ocean Territory", dialCode: "246" },
90527
+ { alpha2: "IQ", name: "Iraq", dialCode: "964" },
90528
+ { alpha2: "IR", name: "Iran", dialCode: "98" },
90529
+ { alpha2: "IS", name: "Iceland", dialCode: "354" },
90530
+ { alpha2: "IT", name: "Italy", dialCode: "39" },
90531
+ { alpha2: "JE", name: "Jersey", dialCode: "44" },
90532
+ { alpha2: "JM", name: "Jamaica", dialCode: "1" },
90533
+ { alpha2: "JO", name: "Jordan", dialCode: "962" },
90534
+ { alpha2: "JP", name: "Japan", dialCode: "81" },
90535
+ { alpha2: "KE", name: "Kenya", dialCode: "254" },
90536
+ { alpha2: "KG", name: "Kyrgyzstan", dialCode: "996" },
90537
+ { alpha2: "KH", name: "Cambodia", dialCode: "855" },
90538
+ { alpha2: "KI", name: "Kiribati", dialCode: "686" },
90539
+ { alpha2: "KM", name: "Comoros", dialCode: "269" },
90540
+ { alpha2: "KN", name: "Saint Kitts and Nevis", dialCode: "1" },
90541
+ { alpha2: "KP", name: "North Korea", dialCode: "850" },
90542
+ { alpha2: "KR", name: "South Korea", dialCode: "82" },
90543
+ { alpha2: "KW", name: "Kuwait", dialCode: "965" },
90544
+ { alpha2: "KY", name: "Cayman Islands", dialCode: "1" },
90545
+ { alpha2: "KZ", name: "Kazakhstan", dialCode: "7" },
90546
+ { alpha2: "LA", name: "Laos", dialCode: "856" },
90547
+ { alpha2: "LB", name: "Lebanon", dialCode: "961" },
90548
+ { alpha2: "LC", name: "Saint Lucia", dialCode: "1" },
90549
+ { alpha2: "LI", name: "Liechtenstein", dialCode: "423" },
90550
+ { alpha2: "LK", name: "Sri Lanka", dialCode: "94" },
90551
+ { alpha2: "LR", name: "Liberia", dialCode: "231" },
90552
+ { alpha2: "LS", name: "Lesotho", dialCode: "266" },
90553
+ { alpha2: "LT", name: "Lithuania", dialCode: "370" },
90554
+ { alpha2: "LU", name: "Luxembourg", dialCode: "352" },
90555
+ { alpha2: "LV", name: "Latvia", dialCode: "371" },
90556
+ { alpha2: "LY", name: "Libya", dialCode: "218" },
90557
+ { alpha2: "MA", name: "Morocco", dialCode: "212" },
90558
+ { alpha2: "MC", name: "Monaco", dialCode: "377" },
90559
+ { alpha2: "MD", name: "Moldova", dialCode: "373" },
90560
+ { alpha2: "ME", name: "Montenegro", dialCode: "382" },
90561
+ { alpha2: "MF", name: "Saint Martin (French part)", dialCode: "590" },
90562
+ { alpha2: "MG", name: "Madagascar", dialCode: "261" },
90563
+ { alpha2: "MH", name: "Marshall Islands", dialCode: "692" },
90564
+ { alpha2: "MK", name: "North Macedonia", dialCode: "389" },
90565
+ { alpha2: "ML", name: "Mali", dialCode: "223" },
90566
+ { alpha2: "MM", name: "Myanmar", dialCode: "95" },
90567
+ { alpha2: "MN", name: "Mongolia", dialCode: "976" },
90568
+ { alpha2: "MO", name: "Macao", dialCode: "853" },
90569
+ { alpha2: "MP", name: "Northern Mariana Islands", dialCode: "1" },
90570
+ { alpha2: "MQ", name: "Martinique", dialCode: "596" },
90571
+ { alpha2: "MR", name: "Mauritania", dialCode: "222" },
90572
+ { alpha2: "MS", name: "Montserrat", dialCode: "1" },
90573
+ { alpha2: "MT", name: "Malta", dialCode: "356" },
90574
+ { alpha2: "MU", name: "Mauritius", dialCode: "230" },
90575
+ { alpha2: "MV", name: "Maldives", dialCode: "960" },
90576
+ { alpha2: "MW", name: "Malawi", dialCode: "265" },
90577
+ { alpha2: "MX", name: "Mexico", dialCode: "52" },
90578
+ { alpha2: "MY", name: "Malaysia", dialCode: "60" },
90579
+ { alpha2: "MZ", name: "Mozambique", dialCode: "258" },
90580
+ { alpha2: "NA", name: "Namibia", dialCode: "264" },
90581
+ { alpha2: "NC", name: "New Caledonia", dialCode: "687" },
90582
+ { alpha2: "NE", name: "Niger", dialCode: "227" },
90583
+ { alpha2: "NF", name: "Norfolk Island", dialCode: "672" },
90584
+ { alpha2: "NG", name: "Nigeria", dialCode: "234" },
90585
+ { alpha2: "NI", name: "Nicaragua", dialCode: "505" },
90586
+ { alpha2: "NL", name: "Netherlands", dialCode: "31" },
90587
+ { alpha2: "NO", name: "Norway", dialCode: "47" },
90588
+ { alpha2: "NP", name: "Nepal", dialCode: "977" },
90589
+ { alpha2: "NR", name: "Nauru", dialCode: "674" },
90590
+ { alpha2: "NU", name: "Niue", dialCode: "683" },
90591
+ { alpha2: "NZ", name: "New Zealand", dialCode: "64" },
90592
+ { alpha2: "OM", name: "Oman", dialCode: "968" },
90593
+ { alpha2: "PA", name: "Panama", dialCode: "507" },
90594
+ { alpha2: "PE", name: "Peru", dialCode: "51" },
90595
+ { alpha2: "PF", name: "French Polynesia", dialCode: "689" },
90596
+ { alpha2: "PG", name: "Papua New Guinea", dialCode: "675" },
90597
+ { alpha2: "PH", name: "Philippines", dialCode: "63" },
90598
+ { alpha2: "PK", name: "Pakistan", dialCode: "92" },
90599
+ { alpha2: "PL", name: "Poland", dialCode: "48" },
90600
+ { alpha2: "PM", name: "Saint Pierre and Miquelon", dialCode: "508" },
90601
+ { alpha2: "PN", name: "Pitcairn", dialCode: "64" },
90602
+ { alpha2: "PR", name: "Puerto Rico", dialCode: "1" },
90603
+ { alpha2: "PS", name: "Palestine", dialCode: "970" },
90604
+ { alpha2: "PT", name: "Portugal", dialCode: "351" },
90605
+ { alpha2: "PW", name: "Palau", dialCode: "680" },
90606
+ { alpha2: "PY", name: "Paraguay", dialCode: "595" },
90607
+ { alpha2: "QA", name: "Qatar", dialCode: "974" },
90608
+ { alpha2: "RE", name: "R\xE9union", dialCode: "262" },
90609
+ { alpha2: "RO", name: "Romania", dialCode: "40" },
90610
+ { alpha2: "RS", name: "Serbia", dialCode: "381" },
90611
+ { alpha2: "RU", name: "Russia", dialCode: "7" },
90612
+ { alpha2: "RW", name: "Rwanda", dialCode: "250" },
90613
+ { alpha2: "SA", name: "Saudi Arabia", dialCode: "966" },
90614
+ { alpha2: "SB", name: "Solomon Islands", dialCode: "677" },
90615
+ { alpha2: "SC", name: "Seychelles", dialCode: "248" },
90616
+ { alpha2: "SD", name: "Sudan", dialCode: "249" },
90617
+ { alpha2: "SE", name: "Sweden", dialCode: "46" },
90618
+ { alpha2: "SG", name: "Singapore", dialCode: "65" },
90619
+ { alpha2: "SH", name: "Saint Helena, Ascension and Tristan da Cunha", dialCode: "290" },
90620
+ { alpha2: "SI", name: "Slovenia", dialCode: "386" },
90621
+ { alpha2: "SJ", name: "Svalbard and Jan Mayen", dialCode: "47" },
90622
+ { alpha2: "SK", name: "Slovakia", dialCode: "421" },
90623
+ { alpha2: "SL", name: "Sierra Leone", dialCode: "232" },
90624
+ { alpha2: "SM", name: "San Marino", dialCode: "378" },
90625
+ { alpha2: "SN", name: "Senegal", dialCode: "221" },
90626
+ { alpha2: "SO", name: "Somalia", dialCode: "252" },
90627
+ { alpha2: "SR", name: "Suriname", dialCode: "597" },
90628
+ { alpha2: "SS", name: "South Sudan", dialCode: "211" },
90629
+ { alpha2: "ST", name: "Sao Tome and Principe", dialCode: "239" },
90630
+ { alpha2: "SV", name: "El Salvador", dialCode: "503" },
90631
+ { alpha2: "SX", name: "Sint Maarten (Dutch part)", dialCode: "1" },
90632
+ { alpha2: "SY", name: "Syria", dialCode: "963" },
90633
+ { alpha2: "SZ", name: "Eswatini", dialCode: "268" },
90634
+ { alpha2: "TC", name: "Turks and Caicos Islands", dialCode: "1" },
90635
+ { alpha2: "TD", name: "Chad", dialCode: "235" },
90636
+ { alpha2: "TF", name: "French Southern Territories" },
90637
+ { alpha2: "TG", name: "Togo", dialCode: "228" },
90638
+ { alpha2: "TH", name: "Thailand", dialCode: "66" },
90639
+ { alpha2: "TJ", name: "Tajikistan", dialCode: "992" },
90640
+ { alpha2: "TK", name: "Tokelau", dialCode: "690" },
90641
+ { alpha2: "TL", name: "Timor-Leste", dialCode: "670" },
90642
+ { alpha2: "TM", name: "Turkmenistan", dialCode: "993" },
90643
+ { alpha2: "TN", name: "Tunisia", dialCode: "216" },
90644
+ { alpha2: "TO", name: "Tonga", dialCode: "676" },
90645
+ { alpha2: "TR", name: "T\xFCrkiye", dialCode: "90" },
90646
+ { alpha2: "TT", name: "Trinidad and Tobago", dialCode: "1" },
90647
+ { alpha2: "TV", name: "Tuvalu", dialCode: "688" },
90648
+ { alpha2: "TW", name: "Taiwan", dialCode: "886" },
90649
+ { alpha2: "TZ", name: "Tanzania", dialCode: "255" },
90650
+ { alpha2: "UA", name: "Ukraine", dialCode: "380" },
90651
+ { alpha2: "UG", name: "Uganda", dialCode: "256" },
90652
+ { alpha2: "UM", name: "U.S. Minor Outlying Islands" },
90653
+ { alpha2: "US", name: "United States", dialCode: "1" },
90654
+ { alpha2: "UY", name: "Uruguay", dialCode: "598" },
90655
+ { alpha2: "UZ", name: "Uzbekistan", dialCode: "998" },
90656
+ { alpha2: "VA", name: "Vatican City", dialCode: "39" },
90657
+ { alpha2: "VC", name: "Saint Vincent and the Grenadines", dialCode: "1" },
90658
+ { alpha2: "VE", name: "Venezuela", dialCode: "58" },
90659
+ { alpha2: "VG", name: "British Virgin Islands", dialCode: "1" },
90660
+ { alpha2: "VI", name: "U.S. Virgin Islands", dialCode: "1" },
90661
+ { alpha2: "VN", name: "Vietnam", dialCode: "84" },
90662
+ { alpha2: "VU", name: "Vanuatu", dialCode: "678" },
90663
+ { alpha2: "WF", name: "Wallis and Futuna", dialCode: "681" },
90664
+ { alpha2: "WS", name: "Samoa", dialCode: "685" },
90665
+ { alpha2: "YE", name: "Yemen", dialCode: "967" },
90666
+ { alpha2: "YT", name: "Mayotte", dialCode: "262" },
90667
+ { alpha2: "ZA", name: "South Africa", dialCode: "27" },
90668
+ { alpha2: "ZM", name: "Zambia", dialCode: "260" },
90669
+ { alpha2: "ZW", name: "Zimbabwe", dialCode: "263" }
90670
+ ];
90671
+ var BY_ALPHA2 = new Map(COUNTRIES.map((c) => [c.alpha2, c]));
90672
+ var ALL_COUNTRIES = [...COUNTRIES].sort(
90673
+ (a, b) => a.name.localeCompare(b.name)
90674
+ );
90675
+ var UK = ["GB"];
90676
+ var EU = [
90677
+ "AT",
90678
+ "BE",
90679
+ "BG",
90680
+ "HR",
90681
+ "CY",
90682
+ "CZ",
90683
+ "DK",
90684
+ "EE",
90685
+ "FI",
90686
+ "FR",
90687
+ "DE",
90688
+ "GR",
90689
+ "HU",
90690
+ "IE",
90691
+ "IT",
90692
+ "LV",
90693
+ "LT",
90694
+ "LU",
90695
+ "MT",
90696
+ "NL",
90697
+ "PL",
90698
+ "PT",
90699
+ "RO",
90700
+ "SK",
90701
+ "SI",
90702
+ "ES",
90703
+ "SE"
90704
+ ];
90705
+ var EEA = [...EU, "IS", "LI", "NO"];
90706
+ var EUROPE = [
90707
+ ...EEA,
90708
+ ...UK,
90709
+ "CH",
90710
+ "AD",
90711
+ "MC",
90712
+ "SM",
90713
+ "VA",
90714
+ "GI",
90715
+ "GG",
90716
+ "JE",
90717
+ "IM",
90718
+ "FO",
90719
+ "AX",
90720
+ "SJ",
90721
+ "GL",
90722
+ "PM",
90723
+ "AL",
90724
+ "BA",
90725
+ "ME",
90726
+ "MK",
90727
+ "RS",
90728
+ "MD",
90729
+ "UA",
90730
+ "BY",
90731
+ "RU",
90732
+ "GE",
90733
+ "AM",
90734
+ "AZ",
90735
+ "TR"
90736
+ ];
90737
+ var INDIA = ["IN"];
90738
+ var SEA = ["BN", "KH", "ID", "LA", "MY", "MM", "PH", "SG", "TH", "VN", "TL"];
90739
+ var ASIA = [
90740
+ ...SEA,
90741
+ ...INDIA,
90742
+ "CN",
90743
+ "HK",
90744
+ "MO",
90745
+ "TW",
90746
+ "JP",
90747
+ "KR",
90748
+ "KP",
90749
+ "MN",
90750
+ "PK",
90751
+ "BD",
90752
+ "LK",
90753
+ "NP",
90754
+ "BT",
90755
+ "MV",
90756
+ "AF",
90757
+ "KZ",
90758
+ "KG",
90759
+ "TJ",
90760
+ "TM",
90761
+ "UZ"
90762
+ ];
90763
+ var CARIBBEAN = [
90764
+ "AI",
90765
+ "AG",
90766
+ "AW",
90767
+ "BS",
90768
+ "BB",
90769
+ "BM",
90770
+ "BQ",
90771
+ "VG",
90772
+ "KY",
90773
+ "CU",
90774
+ "CW",
90775
+ "DM",
90776
+ "DO",
90777
+ "GD",
90778
+ "GP",
90779
+ "HT",
90780
+ "JM",
90781
+ "MQ",
90782
+ "MS",
90783
+ "PR",
90784
+ "BL",
90785
+ "KN",
90786
+ "LC",
90787
+ "MF",
90788
+ "VC",
90789
+ "SX",
90790
+ "TT",
90791
+ "TC",
90792
+ "VI"
90793
+ ];
90794
+ var LATAM = [
90795
+ ...CARIBBEAN,
90796
+ "MX",
90797
+ "BZ",
90798
+ "CR",
90799
+ "SV",
90800
+ "GT",
90801
+ "HN",
90802
+ "NI",
90803
+ "PA",
90804
+ "AR",
90805
+ "BO",
90806
+ "BR",
90807
+ "CL",
90808
+ "CO",
90809
+ "EC",
90810
+ "FK",
90811
+ "GF",
90812
+ "GY",
90813
+ "PY",
90814
+ "PE",
90815
+ "GS",
90816
+ "SR",
90817
+ "UY",
90818
+ "VE"
90819
+ ];
90200
90820
  function UnifoldProvider2({
90201
90821
  children,
90202
90822
  publishableKey,
@@ -90503,7 +91123,7 @@ function UnifoldProvider2({
90503
91123
  handleWithdrawError
90504
91124
  ]
90505
91125
  );
90506
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(UnifoldProvider, { publishableKey, queryClient, children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(ConnectContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(AnalyticsProvider, { tracker, children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(I18nProvider, { locale: config?.locale, children: /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
91126
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(UnifoldProvider, { publishableKey, queryClient, children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(ConnectContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(AnalyticsProvider, { tracker, children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(I18nProvider, { locale: config?.locale, children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(
90507
91127
  ThemeProvider,
90508
91128
  {
90509
91129
  mode: resolvedTheme,
@@ -90514,7 +91134,7 @@ function UnifoldProvider2({
90514
91134
  components: config?.components,
90515
91135
  children: [
90516
91136
  children,
90517
- checkoutConfig && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
91137
+ checkoutConfig && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
90518
91138
  CheckoutModal,
90519
91139
  {
90520
91140
  open: isCheckoutOpen,
@@ -90536,7 +91156,7 @@ function UnifoldProvider2({
90536
91156
  onEvent: checkoutConfig.onEvent
90537
91157
  }
90538
91158
  ),
90539
- withdrawConfig && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
91159
+ withdrawConfig && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
90540
91160
  WithdrawModal,
90541
91161
  {
90542
91162
  open: isWithdrawOpen,
@@ -90564,7 +91184,7 @@ function UnifoldProvider2({
90564
91184
  theme: resolvedTheme
90565
91185
  }
90566
91186
  ),
90567
- depositConfig && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
91187
+ depositConfig && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
90568
91188
  DepositModal,
90569
91189
  {
90570
91190
  open: isOpen,
@@ -90658,9 +91278,9 @@ function useUnifold2() {
90658
91278
  }
90659
91279
 
90660
91280
  // src/unifold.tsx
90661
- var UnifoldBridge = (0, import_react49.forwardRef)((_, ref) => {
91281
+ var UnifoldBridge = (0, import_react50.forwardRef)((_, ref) => {
90662
91282
  const { beginDeposit, closeDeposit, beginWithdraw, closeWithdraw } = useUnifold2();
90663
- (0, import_react49.useImperativeHandle)(ref, () => ({ beginDeposit, closeDeposit, beginWithdraw, closeWithdraw }), [
91283
+ (0, import_react50.useImperativeHandle)(ref, () => ({ beginDeposit, closeDeposit, beginWithdraw, closeWithdraw }), [
90664
91284
  beginDeposit,
90665
91285
  closeDeposit,
90666
91286
  beginWithdraw,
@@ -90669,7 +91289,7 @@ var UnifoldBridge = (0, import_react49.forwardRef)((_, ref) => {
90669
91289
  return null;
90670
91290
  });
90671
91291
  UnifoldBridge.displayName = "UnifoldBridge";
90672
- var RenderErrorBoundary = class extends import_react49.Component {
91292
+ var RenderErrorBoundary = class extends import_react50.Component {
90673
91293
  constructor() {
90674
91294
  super(...arguments);
90675
91295
  this.state = { hasError: false };
@@ -90741,13 +91361,13 @@ function createUnifold(publishableKey, config) {
90741
91361
  };
90742
91362
  try {
90743
91363
  root.render(
90744
- import_react49.default.createElement(
91364
+ import_react50.default.createElement(
90745
91365
  RenderErrorBoundary,
90746
91366
  { onError: handleRenderError },
90747
- import_react49.default.createElement(
91367
+ import_react50.default.createElement(
90748
91368
  UnifoldProvider2,
90749
91369
  { publishableKey, config },
90750
- import_react49.default.createElement(UnifoldBridge, { ref: refCallback })
91370
+ import_react50.default.createElement(UnifoldBridge, { ref: refCallback })
90751
91371
  )
90752
91372
  )
90753
91373
  );