@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.js CHANGED
@@ -38313,7 +38313,7 @@ var require_QueryClientProvider = __commonJS({
38313
38313
  });
38314
38314
  module2.exports = __toCommonJS2(QueryClientProvider_exports);
38315
38315
  var React47 = __toESM3(require_react(), 1);
38316
- var import_jsx_runtime102 = require_jsx_runtime();
38316
+ var import_jsx_runtime105 = require_jsx_runtime();
38317
38317
  var QueryClientContext2 = React47.createContext(
38318
38318
  void 0
38319
38319
  );
@@ -38337,7 +38337,7 @@ var require_QueryClientProvider = __commonJS({
38337
38337
  client.unmount();
38338
38338
  };
38339
38339
  }, [client]);
38340
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(QueryClientContext2.Provider, { value: client, children });
38340
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(QueryClientContext2.Provider, { value: client, children });
38341
38341
  };
38342
38342
  }
38343
38343
  });
@@ -38426,7 +38426,7 @@ var require_QueryErrorResetBoundary = __commonJS({
38426
38426
  });
38427
38427
  module2.exports = __toCommonJS2(QueryErrorResetBoundary_exports);
38428
38428
  var React47 = __toESM3(require_react(), 1);
38429
- var import_jsx_runtime102 = require_jsx_runtime();
38429
+ var import_jsx_runtime105 = require_jsx_runtime();
38430
38430
  function createValue() {
38431
38431
  let isReset = false;
38432
38432
  return {
@@ -38447,7 +38447,7 @@ var require_QueryErrorResetBoundary = __commonJS({
38447
38447
  children
38448
38448
  }) => {
38449
38449
  const [value] = React47.useState(() => createValue());
38450
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === "function" ? children(value) : children });
38450
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === "function" ? children(value) : children });
38451
38451
  };
38452
38452
  }
38453
38453
  });
@@ -39611,7 +39611,7 @@ __export(index_exports, {
39611
39611
  module.exports = __toCommonJS(index_exports);
39612
39612
 
39613
39613
  // src/unifold.tsx
39614
- var import_react49 = __toESM(require_react());
39614
+ var import_react50 = __toESM(require_react());
39615
39615
  var import_client = __toESM(require_client());
39616
39616
 
39617
39617
  // ../connect-react/dist/index.mjs
@@ -39769,7 +39769,7 @@ function generateKSUID() {
39769
39769
  function generatePrefixedKSUID(prefix) {
39770
39770
  return `${prefix}_${generateKSUID()}`;
39771
39771
  }
39772
- var SDK_VERSION = true ? "0.1.81" : "0.0.0-dev";
39772
+ var SDK_VERSION = true ? "0.1.82" : "0.0.0-dev";
39773
39773
  var CLIENT_VERSION_HEADER = "x-unifold-client-version";
39774
39774
  var CLIENT_USER_AGENT_HEADER = "x-unifold-client-user-agent";
39775
39775
  function detectRuntime() {
@@ -39930,6 +39930,11 @@ async function createDepositAddress(overrides, publishableKey) {
39930
39930
  const firstError = Array.isArray(body.details?.errors) ? body.details?.errors[0] : void 0;
39931
39931
  throw new DepositAddressValidationError(firstError ?? "Invalid recipient address");
39932
39932
  }
39933
+ if (body?.error_type === "xrpl_destination_tag_required") {
39934
+ throw new DepositAddressValidationError(
39935
+ body.message ?? "Recipient address requires a destination tag"
39936
+ );
39937
+ }
39933
39938
  }
39934
39939
  throw new Error(`Failed to create EOA: ${response.statusText}`);
39935
39940
  }
@@ -41812,6 +41817,11 @@ var import_jsx_runtime99 = __toESM(require_jsx_runtime(), 1);
41812
41817
  var import_react48 = __toESM(require_react(), 1);
41813
41818
  var import_jsx_runtime100 = __toESM(require_jsx_runtime(), 1);
41814
41819
  var import_jsx_runtime101 = __toESM(require_jsx_runtime(), 1);
41820
+ var import_react49 = __toESM(require_react(), 1);
41821
+ var import_react_dom2 = __toESM(require_react_dom(), 1);
41822
+ var import_jsx_runtime102 = __toESM(require_jsx_runtime(), 1);
41823
+ var import_jsx_runtime103 = __toESM(require_jsx_runtime(), 1);
41824
+ var import_jsx_runtime104 = __toESM(require_jsx_runtime(), 1);
41815
41825
  var __create2 = Object.create;
41816
41826
  var __defProp3 = Object.defineProperty;
41817
41827
  var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
@@ -47988,7 +47998,7 @@ function generateKSUID2() {
47988
47998
  function generatePrefixedKSUID2(prefix) {
47989
47999
  return `${prefix}_${generateKSUID2()}`;
47990
48000
  }
47991
- var PACKAGE_VERSION = "0.1.81";
48001
+ var PACKAGE_VERSION = "0.1.82";
47992
48002
  var LIBRARY_NAME = "@unifold/analytics";
47993
48003
  var DEFAULT_DEDUP_MS = 500;
47994
48004
  var SESSION_PREFIX = "asess";
@@ -54117,6 +54127,9 @@ var en_default = {
54117
54127
  loading: "Loading...",
54118
54128
  search: "Search",
54119
54129
  close: "Close",
54130
+ noResults: "No matches found",
54131
+ selectCountry: "Select country",
54132
+ selectState: "Select state",
54120
54133
  review: "Review",
54121
54134
  tryAgain: "Try Again",
54122
54135
  somethingWentWrong: "Something went wrong",
@@ -54339,6 +54352,7 @@ var en_default = {
54339
54352
  not_opted_in: "Please make sure you opt-in {{token_symbol}}({{chain_name}}) before receiving funds",
54340
54353
  insufficient_balance: "Recipient account does not meet the minimum balance requirement",
54341
54354
  account_not_found: "Recipient account does not exist on {{chain_name}}",
54355
+ destination_tag_required: "This {{chain_name}} address requires a memo tag. Please provide your memo tag as well, in the format address:memotag",
54342
54356
  validation_error: "Unable to verify recipient address on {{chain_name}}"
54343
54357
  },
54344
54358
  defaultError: "The recipient address cannot receive funds for the selected token"
@@ -54917,12 +54931,18 @@ var en_default = {
54917
54931
  receiveChain: "Receive chain",
54918
54932
  recipientAddress: "Recipient address",
54919
54933
  recipientAddressPlaceholder: "Enter wallet address",
54934
+ recipientAddressPlaceholderXrpl: "Enter wallet address, or address:memotag",
54920
54935
  amount: "Amount",
54921
54936
  amountPlaceholder: "0.00",
54922
54937
  balance: "Balance",
54923
54938
  minimum: "min",
54924
54939
  withdraw: "Withdraw",
54925
54940
  invalidAddress: "Please enter a valid address",
54941
+ 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",
54942
+ memoTag: "Memo tag",
54943
+ memoTagPlaceholder: "e.g. 12345",
54944
+ memoTagRequiredHint: "This {{chain_name}} address requires a memo tag before it can receive funds",
54945
+ invalidMemoTag: "Memo tag must be a whole number between 0 and 4294967295",
54926
54946
  invalidAmount: "Please enter a valid amount",
54927
54947
  verifyingAddress: "Verifying address...",
54928
54948
  loading: "Loading...",
@@ -54970,6 +54990,9 @@ var zh_default = {
54970
54990
  loading: "\u52A0\u8F7D\u4E2D...",
54971
54991
  search: "\u641C\u7D22",
54972
54992
  close: "\u5173\u95ED",
54993
+ noResults: "\u6CA1\u6709\u5339\u914D\u7684\u7ED3\u679C",
54994
+ selectCountry: "\u9009\u62E9\u56FD\u5BB6",
54995
+ selectState: "\u9009\u62E9\u5DDE",
54973
54996
  review: "\u786E\u8BA4\u4FE1\u606F",
54974
54997
  tryAgain: "\u91CD\u8BD5",
54975
54998
  somethingWentWrong: "\u51FA\u73B0\u9519\u8BEF",
@@ -55192,6 +55215,7 @@ var zh_default = {
55192
55215
  not_opted_in: "\u8BF7\u5148\u5728 {{chain_name}} \u4E0A\u5F00\u901A {{token_symbol}}\uFF0C\u7136\u540E\u518D\u63A5\u6536\u8D44\u91D1",
55193
55216
  insufficient_balance: "\u6536\u6B3E\u8D26\u6237\u672A\u6EE1\u8DB3\u6700\u4F4E\u4F59\u989D\u8981\u6C42",
55194
55217
  account_not_found: "\u6536\u6B3E\u8D26\u6237\u5728 {{chain_name}} \u4E0A\u4E0D\u5B58\u5728",
55218
+ 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",
55195
55219
  validation_error: "\u65E0\u6CD5\u5728 {{chain_name}} \u4E0A\u9A8C\u8BC1\u6536\u6B3E\u5730\u5740"
55196
55220
  },
55197
55221
  defaultError: "\u8BE5\u6536\u6B3E\u5730\u5740\u65E0\u6CD5\u63A5\u6536\u6240\u9009\u4EE3\u5E01\u7684\u8D44\u91D1"
@@ -55770,12 +55794,18 @@ var zh_default = {
55770
55794
  receiveChain: "\u63A5\u6536\u7F51\u7EDC",
55771
55795
  recipientAddress: "\u6536\u6B3E\u5730\u5740",
55772
55796
  recipientAddressPlaceholder: "\u8F93\u5165\u94B1\u5305\u5730\u5740",
55797
+ recipientAddressPlaceholderXrpl: "\u8F93\u5165\u5730\u5740\uFF0C\u6216 \u5730\u5740:\u6807\u7B7E",
55773
55798
  amount: "\u91D1\u989D",
55774
55799
  amountPlaceholder: "0.00",
55775
55800
  balance: "\u4F59\u989D",
55776
55801
  minimum: "\u6700\u4F4E",
55777
55802
  withdraw: "\u63D0\u73B0",
55778
55803
  invalidAddress: "\u8BF7\u8F93\u5165\u6709\u6548\u5730\u5740",
55804
+ 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",
55805
+ memoTag: "\u76EE\u6807\u6807\u7B7E",
55806
+ memoTagPlaceholder: "\u4F8B\u5982 12345",
55807
+ memoTagRequiredHint: "\u8BE5 {{chain_name}} \u5730\u5740\u9700\u8981\u586B\u5199\u76EE\u6807\u6807\u7B7E\u624D\u80FD\u6536\u6B3E",
55808
+ invalidMemoTag: "\u76EE\u6807\u6807\u7B7E\u5FC5\u987B\u662F 0 \u5230 4294967295 \u4E4B\u95F4\u7684\u6574\u6570",
55779
55809
  invalidAmount: "\u8BF7\u8F93\u5165\u6709\u6548\u91D1\u989D",
55780
55810
  verifyingAddress: "\u6B63\u5728\u9A8C\u8BC1\u5730\u5740...",
55781
55811
  loading: "\u52A0\u8F7D\u4E2D...",
@@ -55823,6 +55853,9 @@ var zh_TW_default = {
55823
55853
  loading: "\u8F09\u5165\u4E2D...",
55824
55854
  search: "\u641C\u5C0B",
55825
55855
  close: "\u95DC\u9589",
55856
+ noResults: "\u6C92\u6709\u7B26\u5408\u7684\u7D50\u679C",
55857
+ selectCountry: "\u9078\u64C7\u570B\u5BB6",
55858
+ selectState: "\u9078\u64C7\u5DDE",
55826
55859
  review: "\u78BA\u8A8D\u8CC7\u8A0A",
55827
55860
  tryAgain: "\u91CD\u8A66",
55828
55861
  somethingWentWrong: "\u767C\u751F\u932F\u8AA4",
@@ -56045,6 +56078,7 @@ var zh_TW_default = {
56045
56078
  not_opted_in: "\u8ACB\u5148\u5728 {{chain_name}} \u4E0A\u958B\u901A {{token_symbol}}\uFF0C\u7136\u5F8C\u518D\u63A5\u6536\u8CC7\u91D1",
56046
56079
  insufficient_balance: "\u6536\u6B3E\u5E33\u6236\u672A\u9054\u6700\u4F4E\u9918\u984D\u8981\u6C42",
56047
56080
  account_not_found: "\u6536\u6B3E\u5E33\u6236\u5728 {{chain_name}} \u4E0A\u4E0D\u5B58\u5728",
56081
+ 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",
56048
56082
  validation_error: "\u7121\u6CD5\u5728 {{chain_name}} \u4E0A\u9A57\u8B49\u6536\u6B3E\u5730\u5740"
56049
56083
  },
56050
56084
  defaultError: "\u8A72\u6536\u6B3E\u5730\u5740\u7121\u6CD5\u63A5\u6536\u6240\u9078\u4EE3\u5E63\u7684\u8CC7\u91D1"
@@ -56623,12 +56657,18 @@ var zh_TW_default = {
56623
56657
  receiveChain: "\u63A5\u6536\u7DB2\u8DEF",
56624
56658
  recipientAddress: "\u6536\u6B3E\u5730\u5740",
56625
56659
  recipientAddressPlaceholder: "\u8F38\u5165\u9322\u5305\u5730\u5740",
56660
+ recipientAddressPlaceholderXrpl: "\u8F38\u5165\u5730\u5740\uFF0C\u6216 \u5730\u5740:\u6A19\u7C64",
56626
56661
  amount: "\u91D1\u984D",
56627
56662
  amountPlaceholder: "0.00",
56628
56663
  balance: "\u9918\u984D",
56629
56664
  minimum: "\u6700\u4F4E",
56630
56665
  withdraw: "\u63D0\u9818",
56631
56666
  invalidAddress: "\u8ACB\u8F38\u5165\u6709\u6548\u5730\u5740",
56667
+ 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",
56668
+ memoTag: "\u76EE\u7684\u5730\u6A19\u7C64",
56669
+ memoTagPlaceholder: "\u4F8B\u5982 12345",
56670
+ memoTagRequiredHint: "\u8A72 {{chain_name}} \u5730\u5740\u9700\u8981\u586B\u5BEB\u76EE\u7684\u5730\u6A19\u7C64\u624D\u80FD\u6536\u6B3E",
56671
+ invalidMemoTag: "\u76EE\u7684\u5730\u6A19\u7C64\u5FC5\u9808\u662F 0 \u5230 4294967295 \u4E4B\u9593\u7684\u6574\u6578",
56632
56672
  invalidAmount: "\u8ACB\u8F38\u5165\u6709\u6548\u91D1\u984D",
56633
56673
  verifyingAddress: "\u6B63\u5728\u9A57\u8B49\u5730\u5740...",
56634
56674
  loading: "\u8F09\u5165\u4E2D...",
@@ -56676,6 +56716,9 @@ var fr_default = {
56676
56716
  loading: "Chargement...",
56677
56717
  search: "Rechercher",
56678
56718
  close: "Fermer",
56719
+ noResults: "Aucun r\xE9sultat",
56720
+ selectCountry: "S\xE9lectionner un pays",
56721
+ selectState: "S\xE9lectionner un \xC9tat",
56679
56722
  review: "V\xE9rifier",
56680
56723
  tryAgain: "R\xE9essayer",
56681
56724
  somethingWentWrong: "Une erreur s'est produite",
@@ -56898,6 +56941,7 @@ var fr_default = {
56898
56941
  not_opted_in: "Veuillez d'abord activer {{token_symbol}} ({{chain_name}}) avant de recevoir des fonds",
56899
56942
  insufficient_balance: "Le compte destinataire ne respecte pas le solde minimum requis",
56900
56943
  account_not_found: "Le compte destinataire n'existe pas sur {{chain_name}}",
56944
+ destination_tag_required: "Cette adresse {{chain_name}} n\xE9cessite un tag de destination. Veuillez \xE9galement indiquer votre tag, au format adresse:tag",
56901
56945
  validation_error: "Impossible de v\xE9rifier l'adresse du destinataire sur {{chain_name}}"
56902
56946
  },
56903
56947
  defaultError: "L'adresse du destinataire ne peut pas recevoir de fonds pour le jeton s\xE9lectionn\xE9"
@@ -57476,12 +57520,18 @@ var fr_default = {
57476
57520
  receiveChain: "R\xE9seau de r\xE9ception",
57477
57521
  recipientAddress: "Adresse du destinataire",
57478
57522
  recipientAddressPlaceholder: "Saisir l'adresse du portefeuille",
57523
+ recipientAddressPlaceholderXrpl: "Saisir l'adresse, ou adresse:tag",
57479
57524
  amount: "Montant",
57480
57525
  amountPlaceholder: "0,00",
57481
57526
  balance: "Solde",
57482
57527
  minimum: "min.",
57483
57528
  withdraw: "Retirer",
57484
57529
  invalidAddress: "Veuillez saisir une adresse valide",
57530
+ invalidXrplAddress: "Veuillez saisir une adresse {{chain_name}} valide. Si votre destinataire n\xE9cessite un tag de destination, indiquez-le \xE9galement, au format adresse:tag",
57531
+ memoTag: "Tag de destination",
57532
+ memoTagPlaceholder: "ex. 12345",
57533
+ memoTagRequiredHint: "Cette adresse {{chain_name}} n\xE9cessite un tag de destination pour recevoir des fonds",
57534
+ invalidMemoTag: "Le tag de destination doit \xEAtre un nombre entier entre 0 et 4294967295",
57485
57535
  invalidAmount: "Veuillez saisir un montant valide",
57486
57536
  verifyingAddress: "V\xE9rification de l'adresse...",
57487
57537
  loading: "Chargement...",
@@ -57529,6 +57579,9 @@ var th_default = {
57529
57579
  loading: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14...",
57530
57580
  search: "\u0E04\u0E49\u0E19\u0E2B\u0E32",
57531
57581
  close: "\u0E1B\u0E34\u0E14",
57582
+ noResults: "\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E19",
57583
+ selectCountry: "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28",
57584
+ selectState: "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E23\u0E31\u0E10",
57532
57585
  review: "\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A",
57533
57586
  tryAgain: "\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07",
57534
57587
  somethingWentWrong: "\u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14",
@@ -57751,6 +57804,7 @@ var th_default = {
57751
57804
  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",
57752
57805
  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",
57753
57806
  account_not_found: "\u0E44\u0E21\u0E48\u0E21\u0E35\u0E1A\u0E31\u0E0D\u0E0A\u0E35\u0E1C\u0E39\u0E49\u0E23\u0E31\u0E1A\u0E1A\u0E19 {{chain_name}}",
57807
+ 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",
57754
57808
  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"
57755
57809
  },
57756
57810
  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"
@@ -58329,12 +58383,18 @@ var th_default = {
58329
58383
  receiveChain: "\u0E40\u0E04\u0E23\u0E37\u0E2D\u0E02\u0E48\u0E32\u0E22\u0E17\u0E35\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A",
58330
58384
  recipientAddress: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E1C\u0E39\u0E49\u0E23\u0E31\u0E1A",
58331
58385
  recipientAddressPlaceholder: "\u0E01\u0E23\u0E2D\u0E01\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E01\u0E23\u0E30\u0E40\u0E1B\u0E4B\u0E32\u0E40\u0E07\u0E34\u0E19",
58386
+ 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",
58332
58387
  amount: "\u0E08\u0E33\u0E19\u0E27\u0E19",
58333
58388
  amountPlaceholder: "0.00",
58334
58389
  balance: "\u0E22\u0E2D\u0E14\u0E04\u0E07\u0E40\u0E2B\u0E25\u0E37\u0E2D",
58335
58390
  minimum: "\u0E02\u0E31\u0E49\u0E19\u0E15\u0E48\u0E33",
58336
58391
  withdraw: "\u0E16\u0E2D\u0E19",
58337
58392
  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",
58393
+ 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",
58394
+ memoTag: "Destination tag",
58395
+ memoTagPlaceholder: "\u0E40\u0E0A\u0E48\u0E19 12345",
58396
+ 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",
58397
+ 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",
58338
58398
  invalidAmount: "\u0E42\u0E1B\u0E23\u0E14\u0E01\u0E23\u0E2D\u0E01\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07",
58339
58399
  verifyingAddress: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48...",
58340
58400
  loading: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14...",
@@ -58382,6 +58442,9 @@ var ja_default = {
58382
58442
  loading: "\u8AAD\u307F\u8FBC\u307F\u4E2D...",
58383
58443
  search: "\u691C\u7D22",
58384
58444
  close: "\u9589\u3058\u308B",
58445
+ noResults: "\u4E00\u81F4\u3059\u308B\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093",
58446
+ selectCountry: "\u56FD\u3092\u9078\u629E",
58447
+ selectState: "\u5DDE\u3092\u9078\u629E",
58385
58448
  review: "\u78BA\u8A8D",
58386
58449
  tryAgain: "\u518D\u8A66\u884C",
58387
58450
  somethingWentWrong: "\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F",
@@ -58604,6 +58667,7 @@ var ja_default = {
58604
58667
  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",
58605
58668
  insufficient_balance: "\u53D7\u53D6\u53E3\u5EA7\u304C\u6700\u4F4E\u6B8B\u9AD8\u306E\u8981\u4EF6\u3092\u6E80\u305F\u3057\u3066\u3044\u307E\u305B\u3093",
58606
58669
  account_not_found: "{{chain_name}}\u4E0A\u306B\u53D7\u53D6\u53E3\u5EA7\u304C\u5B58\u5728\u3057\u307E\u305B\u3093",
58670
+ 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",
58607
58671
  validation_error: "{{chain_name}}\u4E0A\u306E\u53D7\u53D6\u30A2\u30C9\u30EC\u30B9\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093"
58608
58672
  },
58609
58673
  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"
@@ -59182,12 +59246,18 @@ var ja_default = {
59182
59246
  receiveChain: "\u53D7\u53D6\u30C1\u30A7\u30FC\u30F3",
59183
59247
  recipientAddress: "\u53D7\u53D6\u30A2\u30C9\u30EC\u30B9",
59184
59248
  recipientAddressPlaceholder: "\u30A6\u30A9\u30EC\u30C3\u30C8\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B",
59249
+ recipientAddressPlaceholderXrpl: "\u30A2\u30C9\u30EC\u30B9\u3001\u307E\u305F\u306F \u30A2\u30C9\u30EC\u30B9:\u30BF\u30B0 \u3092\u5165\u529B",
59185
59250
  amount: "\u91D1\u984D",
59186
59251
  amountPlaceholder: "0.00",
59187
59252
  balance: "\u6B8B\u9AD8",
59188
59253
  minimum: "\u6700\u4F4E",
59189
59254
  withdraw: "\u51FA\u91D1",
59190
59255
  invalidAddress: "\u6709\u52B9\u306A\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
59256
+ 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",
59257
+ memoTag: "\u5B9B\u5148\u30BF\u30B0",
59258
+ memoTagPlaceholder: "\u4F8B: 12345",
59259
+ 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",
59260
+ invalidMemoTag: "\u5B9B\u5148\u30BF\u30B0\u306F 0\u301C4294967295 \u306E\u6574\u6570\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
59191
59261
  invalidAmount: "\u6709\u52B9\u306A\u91D1\u984D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
59192
59262
  verifyingAddress: "\u30A2\u30C9\u30EC\u30B9\u3092\u78BA\u8A8D\u3057\u3066\u3044\u307E\u3059...",
59193
59263
  loading: "\u8AAD\u307F\u8FBC\u307F\u4E2D...",
@@ -59235,6 +59305,9 @@ var ko_default = {
59235
59305
  loading: "\uB85C\uB529 \uC911...",
59236
59306
  search: "\uAC80\uC0C9",
59237
59307
  close: "\uB2EB\uAE30",
59308
+ noResults: "\uC77C\uCE58\uD558\uB294 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",
59309
+ selectCountry: "\uAD6D\uAC00 \uC120\uD0DD",
59310
+ selectState: "\uC8FC \uC120\uD0DD",
59238
59311
  review: "\uD655\uC778",
59239
59312
  tryAgain: "\uB2E4\uC2DC \uC2DC\uB3C4",
59240
59313
  somethingWentWrong: "\uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4",
@@ -59457,6 +59530,7 @@ var ko_default = {
59457
59530
  not_opted_in: "\uC790\uAE08\uC744 \uBC1B\uAE30 \uC804\uC5D0 {{chain_name}}\uC5D0\uC11C {{token_symbol}}\uC744(\uB97C) \uC635\uD2B8\uC778\uD558\uC138\uC694",
59458
59531
  insufficient_balance: "\uBC1B\uB294 \uACC4\uC815\uC774 \uCD5C\uC18C \uC794\uC561 \uC694\uAC74\uC744 \uCDA9\uC871\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",
59459
59532
  account_not_found: "{{chain_name}}\uC5D0 \uBC1B\uB294 \uACC4\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",
59533
+ 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",
59460
59534
  validation_error: "{{chain_name}}\uC5D0\uC11C \uBC1B\uB294 \uC8FC\uC18C\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4"
59461
59535
  },
59462
59536
  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"
@@ -60035,12 +60109,18 @@ var ko_default = {
60035
60109
  receiveChain: "\uBC1B\uC744 \uCCB4\uC778",
60036
60110
  recipientAddress: "\uBC1B\uB294 \uC8FC\uC18C",
60037
60111
  recipientAddressPlaceholder: "\uC9C0\uAC11 \uC8FC\uC18C\uB97C \uC785\uB825\uD558\uC138\uC694",
60112
+ recipientAddressPlaceholderXrpl: "\uC8FC\uC18C \uB610\uB294 \uC8FC\uC18C:\uD0DC\uADF8 \uB97C \uC785\uB825\uD558\uC138\uC694",
60038
60113
  amount: "\uAE08\uC561",
60039
60114
  amountPlaceholder: "0.00",
60040
60115
  balance: "\uC794\uC561",
60041
60116
  minimum: "\uCD5C\uC18C",
60042
60117
  withdraw: "\uCD9C\uAE08",
60043
60118
  invalidAddress: "\uC720\uD6A8\uD55C \uC8FC\uC18C\uB97C \uC785\uB825\uD574 \uC8FC\uC138\uC694",
60119
+ 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",
60120
+ memoTag: "\uB370\uC2A4\uD2F0\uB124\uC774\uC158 \uD0DC\uADF8",
60121
+ memoTagPlaceholder: "\uC608: 12345",
60122
+ 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",
60123
+ invalidMemoTag: "\uB370\uC2A4\uD2F0\uB124\uC774\uC158 \uD0DC\uADF8\uB294 0\uC5D0\uC11C 4294967295 \uC0AC\uC774\uC758 \uC815\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4",
60044
60124
  invalidAmount: "\uC720\uD6A8\uD55C \uAE08\uC561\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694",
60045
60125
  verifyingAddress: "\uC8FC\uC18C\uB97C \uD655\uC778\uD558\uB294 \uC911...",
60046
60126
  loading: "\uB85C\uB529 \uC911...",
@@ -62892,6 +62972,17 @@ function DepositPollingToasts({
62892
62972
  }
62893
62973
  );
62894
62974
  }
62975
+ var initialCardOnrampSessionState = {
62976
+ active: null,
62977
+ started: false
62978
+ };
62979
+ function startCardOnrampSession(session) {
62980
+ return { active: session, started: true };
62981
+ }
62982
+ function cardOnrampSessionForView(state, view) {
62983
+ if (view === "review" || state.active === null) return state;
62984
+ return { active: null, started: state.started };
62985
+ }
62895
62986
  function formatFiatAmount(value, symbol) {
62896
62987
  return `${symbol}${value.toLocaleString(void 0, {
62897
62988
  minimumFractionDigits: 2,
@@ -62970,10 +63061,13 @@ function BuyWithCard({
62970
63061
  const [defaultToken, setDefaultToken] = (0, import_react7.useState)(null);
62971
63062
  const [defaultTokenLoading, setDefaultTokenLoading] = (0, import_react7.useState)(false);
62972
63063
  const { userIpInfo, isLoading: isLoadingIp } = useUserIp2();
62973
- const [onrampSession, setOnrampSession] = (0, import_react7.useState)(null);
63064
+ const [onrampSession, setOnrampSession] = (0, import_react7.useState)(initialCardOnrampSessionState);
62974
63065
  const currentView = externalView ?? internalView;
62975
63066
  const showQuotesView = currentView === "quotes";
62976
63067
  const showReviewView = currentView === "review";
63068
+ (0, import_react7.useEffect)(() => {
63069
+ setOnrampSession((prev) => cardOnrampSessionForView(prev, currentView));
63070
+ }, [currentView]);
62977
63071
  (0, import_react7.useEffect)(() => {
62978
63072
  if (externalView) {
62979
63073
  setInternalView(externalView);
@@ -63125,7 +63219,7 @@ function BuyWithCard({
63125
63219
  const { executions, isPolling } = useDepositPolling({
63126
63220
  userId,
63127
63221
  publishableKey,
63128
- enabled: !!onrampSession,
63222
+ enabled: onrampSession.started,
63129
63223
  depositWalletId,
63130
63224
  onDepositSuccess,
63131
63225
  onDepositError
@@ -63418,13 +63512,15 @@ function BuyWithCard({
63418
63512
  ...isDestinationMode ? { destination_amount: destinationAmount } : { source_amount: amount }
63419
63513
  };
63420
63514
  const sessionStartUrl = getOnrampSessionStartUrl(sessionRequest, publishableKey);
63421
- setOnrampSession({
63422
- provider: selectedProvider,
63423
- sourceCurrency: currency,
63424
- sourceAmount: amount,
63425
- sessionUrl: sessionStartUrl,
63426
- externalId
63427
- });
63515
+ setOnrampSession(
63516
+ startCardOnrampSession({
63517
+ provider: selectedProvider,
63518
+ sourceCurrency: currency,
63519
+ sourceAmount: amount,
63520
+ sessionUrl: sessionStartUrl,
63521
+ externalId
63522
+ })
63523
+ );
63428
63524
  track("flow_started", {
63429
63525
  method: "card",
63430
63526
  flow_type: "deposit",
@@ -63880,8 +63976,8 @@ function BuyWithCard({
63880
63976
  onToggleDetails: () => setShowReviewDetails((prev) => !prev),
63881
63977
  onContinue: handleStartOnramp,
63882
63978
  continueLabel: strings.common.confirm,
63883
- continueDisabled: !selectedProvider || !!onrampSession,
63884
- checking: !!onrampSession,
63979
+ continueDisabled: !selectedProvider || !!onrampSession.active,
63980
+ checking: !!onrampSession.active,
63885
63981
  disclaimer: strings.common.intentAddressDisclaimer
63886
63982
  }
63887
63983
  )
@@ -72592,6 +72688,9 @@ function useStripeOnramp(stripePublishableKey, isDark = false) {
72592
72688
  }, []);
72593
72689
  return { coordinator, isLoading, error, initialize };
72594
72690
  }
72691
+ function normalizeStripeStateCode(raw) {
72692
+ return raw.replace(/[^a-zA-Z]/g, "").slice(0, 2).toUpperCase();
72693
+ }
72595
72694
  var STORAGE_PREFIX = "unifold:stripe-link:session";
72596
72695
  function storageKey(externalUserId) {
72597
72696
  return `${STORAGE_PREFIX}:${externalUserId}`;
@@ -73658,7 +73757,7 @@ function PayWithStripeLink({
73658
73757
  setKycFormMode("name");
73659
73758
  return;
73660
73759
  }
73661
- if (!kycForm.addressLine1.trim() || !kycForm.addressCity.trim() || !kycForm.addressState.trim() || !kycForm.addressPostalCode.trim()) {
73760
+ if (!kycForm.addressLine1.trim() || !kycForm.addressCity.trim() || normalizeStripeStateCode(kycForm.addressState).length !== 2 || !kycForm.addressPostalCode.trim()) {
73662
73761
  setError(t.formErrors.enterFullAddress);
73663
73762
  return;
73664
73763
  }
@@ -73669,7 +73768,8 @@ function PayWithStripeLink({
73669
73768
  line1: kycForm.addressLine1,
73670
73769
  ...kycForm.addressLine2.trim() && { line2: kycForm.addressLine2 },
73671
73770
  city: kycForm.addressCity,
73672
- state: kycForm.addressState,
73771
+ // Stripe requires a 2-letter uppercase code for US/CA (`TX`, not `Tx`).
73772
+ state: normalizeStripeStateCode(kycForm.addressState),
73673
73773
  postal_code: kycForm.addressPostalCode,
73674
73774
  country: kycForm.addressCountry
73675
73775
  }
@@ -74933,9 +75033,14 @@ function PayWithStripeLink({
74933
75033
  ...NO_AUTOFILL,
74934
75034
  type: "text",
74935
75035
  value: kycForm.addressState,
74936
- onChange: (e) => setKycForm((f) => ({ ...f, addressState: e.target.value })),
75036
+ onChange: (e) => setKycForm((f) => ({
75037
+ ...f,
75038
+ addressState: normalizeStripeStateCode(e.target.value)
75039
+ })),
74937
75040
  placeholder: "CA",
74938
75041
  maxLength: 2,
75042
+ autoCapitalize: "characters",
75043
+ spellCheck: false,
74939
75044
  className: "uf-w-full uf-py-2.5 uf-px-3 uf-bg-transparent uf-outline-none uf-text-sm",
74940
75045
  style: inputStyle
74941
75046
  }
@@ -75041,7 +75146,7 @@ function PayWithStripeLink({
75041
75146
  DepositFooterButton,
75042
75147
  {
75043
75148
  onClick: kycFormMode === "name" ? handleNameNext : handleKycSubmit,
75044
- 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),
75149
+ 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),
75045
75150
  loading,
75046
75151
  className: "uf-flex-1",
75047
75152
  children: loading ? t.submitting : strings.common.review
@@ -88562,6 +88667,30 @@ function useVerifyRecipientAddress(params) {
88562
88667
  refetchOnWindowFocus: false
88563
88668
  });
88564
88669
  }
88670
+ var XRPL_BASE58 = "rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz";
88671
+ var CLASSIC_ADDRESS = new RegExp(`^r[${XRPL_BASE58}]{24,34}$`);
88672
+ var X_ADDRESS = new RegExp(`^[XT][${XRPL_BASE58}]{40,50}$`);
88673
+ var MAX_DESTINATION_TAG = 4294967295;
88674
+ function isXrplRecipientShapeValid(input) {
88675
+ const trimmed = input.trim();
88676
+ if (trimmed.length === 0) {
88677
+ return false;
88678
+ }
88679
+ const separatorIndex = trimmed.indexOf(":");
88680
+ if (separatorIndex === -1) {
88681
+ return CLASSIC_ADDRESS.test(trimmed) || X_ADDRESS.test(trimmed);
88682
+ }
88683
+ const address = trimmed.slice(0, separatorIndex);
88684
+ const tag = trimmed.slice(separatorIndex + 1);
88685
+ return isDestinationTagValid(tag) && (CLASSIC_ADDRESS.test(address) || X_ADDRESS.test(address));
88686
+ }
88687
+ function isDestinationTagValid(tag) {
88688
+ if (!/^\d+$/.test(tag)) {
88689
+ return false;
88690
+ }
88691
+ const parsed = Number(tag);
88692
+ return parsed <= MAX_DESTINATION_TAG;
88693
+ }
88565
88694
  function useGetDepositAddress(params) {
88566
88695
  const {
88567
88696
  userId,
@@ -88724,6 +88853,8 @@ function WithdrawForm({
88724
88853
  const t = strings.withdrawModal;
88725
88854
  const tCrypto = strings.transferCrypto;
88726
88855
  const [recipientAddress, setRecipientAddress] = (0, import_react45.useState)(recipientAddressProp || "");
88856
+ const [memoTag, setMemoTag] = (0, import_react45.useState)("");
88857
+ const [memoTagRequiredFor, setMemoTagRequiredFor] = (0, import_react45.useState)(null);
88727
88858
  const [amount, setAmount] = (0, import_react45.useState)("");
88728
88859
  const [inputUnit, setInputUnit] = (0, import_react45.useState)("fiat");
88729
88860
  const [isSubmitting, setIsSubmitting] = (0, import_react45.useState)(false);
@@ -88742,7 +88873,16 @@ function WithdrawForm({
88742
88873
  setIsMaxed(false);
88743
88874
  }, [balanceData?.balanceBaseUnit]);
88744
88875
  const trimmedAddress = recipientAddress.trim();
88745
- const debouncedAddress = useDebounce(trimmedAddress, 500);
88876
+ const trimmedMemoTag = memoTag.trim();
88877
+ const isMemoTagValid = isDestinationTagValid(trimmedMemoTag);
88878
+ const destinationKey = `${selectedChain?.chain_type ?? ""}:${selectedChain?.chain_id ?? ""}:${selectedChain?.token_address ?? ""}`;
88879
+ const recipientKey = `${destinationKey}:${trimmedAddress}`;
88880
+ const memoTagRequired = trimmedAddress.length > 0 && memoTagRequiredFor === recipientKey;
88881
+ const effectiveRecipient = memoTagRequired && isMemoTagValid ? `${trimmedAddress}:${trimmedMemoTag}` : trimmedAddress;
88882
+ const debouncedRecipient = useDebounce(effectiveRecipient, 500);
88883
+ const isXrplDestination = selectedChain?.chain_type === "xrpl";
88884
+ const isXrplRecipientMalformed = isXrplDestination && trimmedAddress.length > 5 && !isXrplRecipientShapeValid(effectiveRecipient);
88885
+ const canVerifyXrplRecipient = !isXrplDestination || isXrplRecipientShapeValid(debouncedRecipient);
88746
88886
  const {
88747
88887
  data: addressVerification,
88748
88888
  isLoading: isVerifyingAddress,
@@ -88751,16 +88891,36 @@ function WithdrawForm({
88751
88891
  chainType: selectedChain?.chain_type,
88752
88892
  chainId: selectedChain?.chain_id,
88753
88893
  tokenAddress: selectedChain?.token_address,
88754
- recipientAddress: debouncedAddress,
88894
+ recipientAddress: debouncedRecipient,
88755
88895
  publishableKey,
88756
- enabled: debouncedAddress.length > 5 && !!selectedChain
88896
+ enabled: debouncedRecipient.length > 5 && !!selectedChain && canVerifyXrplRecipient
88757
88897
  });
88758
- const isDebouncing = trimmedAddress !== debouncedAddress;
88898
+ const isDebouncing = effectiveRecipient !== debouncedRecipient;
88899
+ const verifiedRecipientKey = `${destinationKey}:${debouncedRecipient}`;
88900
+ (0, import_react45.useEffect)(() => {
88901
+ if (addressVerification?.failure_code === "destination_tag_required") {
88902
+ setMemoTagRequiredFor(verifiedRecipientKey);
88903
+ }
88904
+ }, [addressVerification, verifiedRecipientKey]);
88905
+ (0, import_react45.useEffect)(() => {
88906
+ setMemoTag("");
88907
+ }, [recipientKey]);
88908
+ const xrplFormatHint = (0, import_react45.useMemo)(
88909
+ () => interpolate(t.invalidXrplAddress, {
88910
+ chain_name: selectedChain?.chain_name ?? "XRP Ledger"
88911
+ }),
88912
+ [t, selectedChain]
88913
+ );
88759
88914
  const addressError = (0, import_react45.useMemo)(() => {
88760
88915
  if (!trimmedAddress || trimmedAddress.length <= 5) return null;
88916
+ if (isXrplRecipientMalformed) return xrplFormatHint;
88761
88917
  if (isDebouncing || isVerifyingAddress) return null;
88762
- if (verifyError) return t.invalidAddress;
88918
+ if (verifyError) return isXrplDestination ? xrplFormatHint : t.invalidAddress;
88763
88919
  if (addressVerification && !addressVerification.valid) {
88920
+ if (addressVerification.failure_code === "destination_tag_required")
88921
+ return memoTagRequired ? null : interpolate(tCrypto.addressValidation.errors.destination_tag_required, {
88922
+ chain_name: selectedChain?.chain_name ?? ""
88923
+ });
88764
88924
  if (addressVerification.message && addressVerification.message.trim().length > 0) {
88765
88925
  return addressVerification.message;
88766
88926
  }
@@ -88773,13 +88933,17 @@ function WithdrawForm({
88773
88933
  token_symbol: selectedToken?.symbol ?? "",
88774
88934
  chain_name: selectedChain?.chain_name ?? ""
88775
88935
  });
88776
- return t.invalidAddress;
88936
+ return isXrplDestination ? xrplFormatHint : t.invalidAddress;
88777
88937
  }
88778
88938
  return null;
88779
88939
  }, [
88780
88940
  trimmedAddress,
88781
88941
  isDebouncing,
88782
88942
  isVerifyingAddress,
88943
+ isXrplDestination,
88944
+ isXrplRecipientMalformed,
88945
+ memoTagRequired,
88946
+ xrplFormatHint,
88783
88947
  verifyError,
88784
88948
  addressVerification,
88785
88949
  selectedChain,
@@ -88787,6 +88951,7 @@ function WithdrawForm({
88787
88951
  t,
88788
88952
  tCrypto
88789
88953
  ]);
88954
+ const memoTagError = memoTagRequired && trimmedMemoTag.length > 0 && !isMemoTagValid ? t.invalidMemoTag : null;
88790
88955
  const isAddressValid = !isDebouncing && !!addressVerification?.valid && !addressError;
88791
88956
  const { showWarning: showActivationWarning, activationFee: effectiveActivationFee } = useHypercoreWithdrawActivation({
88792
88957
  userId: externalUserId,
@@ -88794,7 +88959,7 @@ function WithdrawForm({
88794
88959
  senderAddress,
88795
88960
  sourceChainId,
88796
88961
  sourceChainType,
88797
- recipientAddress: debouncedAddress,
88962
+ recipientAddress: debouncedRecipient,
88798
88963
  destinationChainType: selectedChain?.chain_type,
88799
88964
  destinationChainId: selectedChain?.chain_id,
88800
88965
  destinationTokenAddress: selectedChain?.token_address,
@@ -88908,7 +89073,7 @@ function WithdrawForm({
88908
89073
  const isBalanceBelowMinimum = !isLoadingBalance && minimumWithdrawAmountUsd !== null && Math.round(balanceUsdNum * 100) / 100 < minimumWithdrawAmountUsd;
88909
89074
  const isBelowMinimum = minimumWithdrawAmountUsd !== null && fiatAmountFromInput > 0 && Math.round(fiatAmountFromInput * 100) / 100 < minimumWithdrawAmountUsd;
88910
89075
  const isOverBalance = inputUnit === "crypto" ? cryptoAmountFromInput > 0 && balanceCrypto > 0 && cryptoAmountFromInput > balanceCrypto : fiatAmountFromInput > 0 && balanceUsdNum > 0 && Math.round(fiatAmountFromInput * 100) / 100 > Math.round(balanceUsdNum * 100) / 100;
88911
- const isFormValid = trimmedAddress.length > 0 && amount.trim().length > 0 && cryptoAmountFromInput > 0 && isAddressValid && !isBelowMinimum && !isOverBalance && !isBalanceBelowMinimum && !!balanceData;
89076
+ const isFormValid = trimmedAddress.length > 0 && amount.trim().length > 0 && cryptoAmountFromInput > 0 && isAddressValid && !(memoTagRequired && !isMemoTagValid) && !isBelowMinimum && !isOverBalance && !isBalanceBelowMinimum && !!balanceData;
88912
89077
  const handleWithdraw = (0, import_react45.useCallback)(async () => {
88913
89078
  if (!selectedToken || !selectedChain) return;
88914
89079
  if (!isFormValid) return;
@@ -88922,7 +89087,7 @@ function WithdrawForm({
88922
89087
  destinationChainType: selectedChain.chain_type,
88923
89088
  destinationChainId: selectedChain.chain_id,
88924
89089
  destinationTokenAddress: selectedChain.token_address,
88925
- recipientAddress: trimmedAddress
89090
+ recipientAddress: effectiveRecipient
88926
89091
  });
88927
89092
  let amountBaseUnit = isMaxed ? balanceData.balanceBaseUnit : computeBaseUnit(
88928
89093
  balanceData.balanceBaseUnit,
@@ -88971,7 +89136,7 @@ function WithdrawForm({
88971
89136
  amount: humanAmount,
88972
89137
  amountBaseUnit,
88973
89138
  withdrawIntentAddress: depositWallet.address,
88974
- recipientAddress: trimmedAddress
89139
+ recipientAddress: effectiveRecipient
88975
89140
  };
88976
89141
  const usdValue = isMaxed ? balanceUsdNum : fiatAmountFromInput;
88977
89142
  onWithdrawStarted?.({
@@ -89008,7 +89173,7 @@ function WithdrawForm({
89008
89173
  isFormValid,
89009
89174
  cryptoAmountFromInput,
89010
89175
  sourceDecimals,
89011
- trimmedAddress,
89176
+ effectiveRecipient,
89012
89177
  publishableKey,
89013
89178
  onWithdraw,
89014
89179
  sourceChainType,
@@ -89059,7 +89224,7 @@ function WithdrawForm({
89059
89224
  "input",
89060
89225
  {
89061
89226
  type: "text",
89062
- placeholder: t.recipientAddressPlaceholder,
89227
+ placeholder: isXrplDestination ? t.recipientAddressPlaceholderXrpl : t.recipientAddressPlaceholder,
89063
89228
  value: recipientAddress,
89064
89229
  onChange: (e) => {
89065
89230
  setRecipientAddress(e.target.value);
@@ -89095,7 +89260,7 @@ function WithdrawForm({
89095
89260
  ]
89096
89261
  }
89097
89262
  ),
89098
- (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: [
89263
+ (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: [
89099
89264
  /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
89100
89265
  LoaderCircle,
89101
89266
  {
@@ -89117,6 +89282,61 @@ function WithdrawForm({
89117
89282
  /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("span", { className: "uf-text-xs", style: { color: colors2.error, fontFamily: fonts.regular }, children: addressError })
89118
89283
  ] })
89119
89284
  ] }),
89285
+ memoTagRequired && /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { children: [
89286
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
89287
+ "div",
89288
+ {
89289
+ className: "uf-text-xs uf-mb-1.5",
89290
+ style: { color: components.card.labelColor, fontFamily: fonts.medium },
89291
+ children: t.memoTag
89292
+ }
89293
+ ),
89294
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
89295
+ "style",
89296
+ {
89297
+ dangerouslySetInnerHTML: {
89298
+ __html: `.uf-withdraw-memo::placeholder { color: ${components.search.placeholderColor}; }`
89299
+ }
89300
+ }
89301
+ ),
89302
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
89303
+ "input",
89304
+ {
89305
+ type: "text",
89306
+ inputMode: "numeric",
89307
+ placeholder: t.memoTagPlaceholder,
89308
+ value: memoTag,
89309
+ onChange: (e) => {
89310
+ setMemoTag(e.target.value);
89311
+ setSubmitError(null);
89312
+ },
89313
+ className: "uf-withdraw-memo uf-w-full uf-px-3 uf-py-2.5 uf-text-sm uf-outline-none",
89314
+ style: {
89315
+ backgroundColor: components.search.backgroundColor,
89316
+ borderRadius: components.input.borderRadius,
89317
+ border: `${components.input.borderWidth}px solid ${memoTagError ? colors2.error : components.input.borderColor}`,
89318
+ color: components.search.inputColor,
89319
+ fontFamily: fonts.regular
89320
+ }
89321
+ }
89322
+ ),
89323
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { className: "uf-flex uf-items-center uf-gap-1.5 uf-mt-1.5", children: [
89324
+ memoTagError && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(TriangleAlert, { className: "uf-w-3 uf-h-3", style: { color: colors2.error } }),
89325
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
89326
+ "span",
89327
+ {
89328
+ className: "uf-text-xs",
89329
+ style: {
89330
+ color: memoTagError ? colors2.error : colors2.foregroundMuted,
89331
+ fontFamily: fonts.regular
89332
+ },
89333
+ children: memoTagError ?? interpolate(t.memoTagRequiredHint, {
89334
+ chain_name: selectedChain?.chain_name ?? "XRP Ledger"
89335
+ })
89336
+ }
89337
+ )
89338
+ ] })
89339
+ ] }),
89120
89340
  /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("div", { children: [
89121
89341
  /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(
89122
89342
  "div",
@@ -90210,6 +90430,406 @@ function WithdrawModal({
90210
90430
  }
90211
90431
  ) });
90212
90432
  }
90433
+ var COUNTRIES = [
90434
+ { alpha2: "AD", name: "Andorra", dialCode: "376" },
90435
+ { alpha2: "AE", name: "United Arab Emirates", dialCode: "971" },
90436
+ { alpha2: "AF", name: "Afghanistan", dialCode: "93" },
90437
+ { alpha2: "AG", name: "Antigua and Barbuda", dialCode: "1" },
90438
+ { alpha2: "AI", name: "Anguilla", dialCode: "1" },
90439
+ { alpha2: "AL", name: "Albania", dialCode: "355" },
90440
+ { alpha2: "AM", name: "Armenia", dialCode: "374" },
90441
+ { alpha2: "AO", name: "Angola", dialCode: "244" },
90442
+ { alpha2: "AQ", name: "Antarctica" },
90443
+ { alpha2: "AR", name: "Argentina", dialCode: "54" },
90444
+ { alpha2: "AS", name: "American Samoa", dialCode: "1" },
90445
+ { alpha2: "AT", name: "Austria", dialCode: "43" },
90446
+ { alpha2: "AU", name: "Australia", dialCode: "61" },
90447
+ { alpha2: "AW", name: "Aruba", dialCode: "297" },
90448
+ { alpha2: "AX", name: "\xC5land Islands", dialCode: "358" },
90449
+ { alpha2: "AZ", name: "Azerbaijan", dialCode: "994" },
90450
+ { alpha2: "BA", name: "Bosnia and Herzegovina", dialCode: "387" },
90451
+ { alpha2: "BB", name: "Barbados", dialCode: "1" },
90452
+ { alpha2: "BD", name: "Bangladesh", dialCode: "880" },
90453
+ { alpha2: "BE", name: "Belgium", dialCode: "32" },
90454
+ { alpha2: "BF", name: "Burkina Faso", dialCode: "226" },
90455
+ { alpha2: "BG", name: "Bulgaria", dialCode: "359" },
90456
+ { alpha2: "BH", name: "Bahrain", dialCode: "973" },
90457
+ { alpha2: "BI", name: "Burundi", dialCode: "257" },
90458
+ { alpha2: "BJ", name: "Benin", dialCode: "229" },
90459
+ { alpha2: "BL", name: "Saint Barth\xE9lemy", dialCode: "590" },
90460
+ { alpha2: "BM", name: "Bermuda", dialCode: "1" },
90461
+ { alpha2: "BN", name: "Brunei", dialCode: "673" },
90462
+ { alpha2: "BO", name: "Bolivia", dialCode: "591" },
90463
+ { alpha2: "BQ", name: "Bonaire, Sint Eustatius and Saba", dialCode: "599" },
90464
+ { alpha2: "BR", name: "Brazil", dialCode: "55" },
90465
+ { alpha2: "BS", name: "Bahamas", dialCode: "1" },
90466
+ { alpha2: "BT", name: "Bhutan", dialCode: "975" },
90467
+ { alpha2: "BV", name: "Bouvet Island" },
90468
+ { alpha2: "BW", name: "Botswana", dialCode: "267" },
90469
+ { alpha2: "BY", name: "Belarus", dialCode: "375" },
90470
+ { alpha2: "BZ", name: "Belize", dialCode: "501" },
90471
+ { alpha2: "CA", name: "Canada", dialCode: "1" },
90472
+ { alpha2: "CC", name: "Cocos (Keeling) Islands", dialCode: "61" },
90473
+ { alpha2: "CD", name: "Congo (Democratic Republic)", dialCode: "243" },
90474
+ { alpha2: "CF", name: "Central African Republic", dialCode: "236" },
90475
+ { alpha2: "CG", name: "Congo (Republic)", dialCode: "242" },
90476
+ { alpha2: "CH", name: "Switzerland", dialCode: "41" },
90477
+ { alpha2: "CI", name: "C\xF4te d'Ivoire", dialCode: "225" },
90478
+ { alpha2: "CK", name: "Cook Islands", dialCode: "682" },
90479
+ { alpha2: "CL", name: "Chile", dialCode: "56" },
90480
+ { alpha2: "CM", name: "Cameroon", dialCode: "237" },
90481
+ { alpha2: "CN", name: "China", dialCode: "86" },
90482
+ { alpha2: "CO", name: "Colombia", dialCode: "57" },
90483
+ { alpha2: "CR", name: "Costa Rica", dialCode: "506" },
90484
+ { alpha2: "CU", name: "Cuba", dialCode: "53" },
90485
+ { alpha2: "CV", name: "Cabo Verde", dialCode: "238" },
90486
+ { alpha2: "CW", name: "Cura\xE7ao", dialCode: "599" },
90487
+ { alpha2: "CX", name: "Christmas Island", dialCode: "61" },
90488
+ { alpha2: "CY", name: "Cyprus", dialCode: "357" },
90489
+ { alpha2: "CZ", name: "Czech Republic", dialCode: "420" },
90490
+ { alpha2: "DE", name: "Germany", dialCode: "49" },
90491
+ { alpha2: "DJ", name: "Djibouti", dialCode: "253" },
90492
+ { alpha2: "DK", name: "Denmark", dialCode: "45" },
90493
+ { alpha2: "DM", name: "Dominica", dialCode: "1" },
90494
+ { alpha2: "DO", name: "Dominican Republic", dialCode: "1" },
90495
+ { alpha2: "DZ", name: "Algeria", dialCode: "213" },
90496
+ { alpha2: "EC", name: "Ecuador", dialCode: "593" },
90497
+ { alpha2: "EE", name: "Estonia", dialCode: "372" },
90498
+ { alpha2: "EG", name: "Egypt", dialCode: "20" },
90499
+ { alpha2: "EH", name: "Western Sahara", dialCode: "212" },
90500
+ { alpha2: "ER", name: "Eritrea", dialCode: "291" },
90501
+ { alpha2: "ES", name: "Spain", dialCode: "34" },
90502
+ { alpha2: "ET", name: "Ethiopia", dialCode: "251" },
90503
+ { alpha2: "FI", name: "Finland", dialCode: "358" },
90504
+ { alpha2: "FJ", name: "Fiji", dialCode: "679" },
90505
+ { alpha2: "FK", name: "Falkland Islands", dialCode: "500" },
90506
+ { alpha2: "FM", name: "Micronesia", dialCode: "691" },
90507
+ { alpha2: "FO", name: "Faroe Islands", dialCode: "298" },
90508
+ { alpha2: "FR", name: "France", dialCode: "33" },
90509
+ { alpha2: "GA", name: "Gabon", dialCode: "241" },
90510
+ { alpha2: "GB", name: "United Kingdom", dialCode: "44" },
90511
+ { alpha2: "GD", name: "Grenada", dialCode: "1" },
90512
+ { alpha2: "GE", name: "Georgia", dialCode: "995" },
90513
+ { alpha2: "GF", name: "French Guiana", dialCode: "594" },
90514
+ { alpha2: "GG", name: "Guernsey", dialCode: "44" },
90515
+ { alpha2: "GH", name: "Ghana", dialCode: "233" },
90516
+ { alpha2: "GI", name: "Gibraltar", dialCode: "350" },
90517
+ { alpha2: "GL", name: "Greenland", dialCode: "299" },
90518
+ { alpha2: "GM", name: "Gambia", dialCode: "220" },
90519
+ { alpha2: "GN", name: "Guinea", dialCode: "224" },
90520
+ { alpha2: "GP", name: "Guadeloupe", dialCode: "590" },
90521
+ { alpha2: "GQ", name: "Equatorial Guinea", dialCode: "240" },
90522
+ { alpha2: "GR", name: "Greece", dialCode: "30" },
90523
+ { alpha2: "GS", name: "South Georgia and the South Sandwich Islands" },
90524
+ { alpha2: "GT", name: "Guatemala", dialCode: "502" },
90525
+ { alpha2: "GU", name: "Guam", dialCode: "1" },
90526
+ { alpha2: "GW", name: "Guinea-Bissau", dialCode: "245" },
90527
+ { alpha2: "GY", name: "Guyana", dialCode: "592" },
90528
+ { alpha2: "HK", name: "Hong Kong", dialCode: "852" },
90529
+ { alpha2: "HM", name: "Heard Island and McDonald Islands" },
90530
+ { alpha2: "HN", name: "Honduras", dialCode: "504" },
90531
+ { alpha2: "HR", name: "Croatia", dialCode: "385" },
90532
+ { alpha2: "HT", name: "Haiti", dialCode: "509" },
90533
+ { alpha2: "HU", name: "Hungary", dialCode: "36" },
90534
+ { alpha2: "ID", name: "Indonesia", dialCode: "62" },
90535
+ { alpha2: "IE", name: "Ireland", dialCode: "353" },
90536
+ { alpha2: "IL", name: "Israel", dialCode: "972" },
90537
+ { alpha2: "IM", name: "Isle of Man", dialCode: "44" },
90538
+ { alpha2: "IN", name: "India", dialCode: "91" },
90539
+ { alpha2: "IO", name: "British Indian Ocean Territory", dialCode: "246" },
90540
+ { alpha2: "IQ", name: "Iraq", dialCode: "964" },
90541
+ { alpha2: "IR", name: "Iran", dialCode: "98" },
90542
+ { alpha2: "IS", name: "Iceland", dialCode: "354" },
90543
+ { alpha2: "IT", name: "Italy", dialCode: "39" },
90544
+ { alpha2: "JE", name: "Jersey", dialCode: "44" },
90545
+ { alpha2: "JM", name: "Jamaica", dialCode: "1" },
90546
+ { alpha2: "JO", name: "Jordan", dialCode: "962" },
90547
+ { alpha2: "JP", name: "Japan", dialCode: "81" },
90548
+ { alpha2: "KE", name: "Kenya", dialCode: "254" },
90549
+ { alpha2: "KG", name: "Kyrgyzstan", dialCode: "996" },
90550
+ { alpha2: "KH", name: "Cambodia", dialCode: "855" },
90551
+ { alpha2: "KI", name: "Kiribati", dialCode: "686" },
90552
+ { alpha2: "KM", name: "Comoros", dialCode: "269" },
90553
+ { alpha2: "KN", name: "Saint Kitts and Nevis", dialCode: "1" },
90554
+ { alpha2: "KP", name: "North Korea", dialCode: "850" },
90555
+ { alpha2: "KR", name: "South Korea", dialCode: "82" },
90556
+ { alpha2: "KW", name: "Kuwait", dialCode: "965" },
90557
+ { alpha2: "KY", name: "Cayman Islands", dialCode: "1" },
90558
+ { alpha2: "KZ", name: "Kazakhstan", dialCode: "7" },
90559
+ { alpha2: "LA", name: "Laos", dialCode: "856" },
90560
+ { alpha2: "LB", name: "Lebanon", dialCode: "961" },
90561
+ { alpha2: "LC", name: "Saint Lucia", dialCode: "1" },
90562
+ { alpha2: "LI", name: "Liechtenstein", dialCode: "423" },
90563
+ { alpha2: "LK", name: "Sri Lanka", dialCode: "94" },
90564
+ { alpha2: "LR", name: "Liberia", dialCode: "231" },
90565
+ { alpha2: "LS", name: "Lesotho", dialCode: "266" },
90566
+ { alpha2: "LT", name: "Lithuania", dialCode: "370" },
90567
+ { alpha2: "LU", name: "Luxembourg", dialCode: "352" },
90568
+ { alpha2: "LV", name: "Latvia", dialCode: "371" },
90569
+ { alpha2: "LY", name: "Libya", dialCode: "218" },
90570
+ { alpha2: "MA", name: "Morocco", dialCode: "212" },
90571
+ { alpha2: "MC", name: "Monaco", dialCode: "377" },
90572
+ { alpha2: "MD", name: "Moldova", dialCode: "373" },
90573
+ { alpha2: "ME", name: "Montenegro", dialCode: "382" },
90574
+ { alpha2: "MF", name: "Saint Martin (French part)", dialCode: "590" },
90575
+ { alpha2: "MG", name: "Madagascar", dialCode: "261" },
90576
+ { alpha2: "MH", name: "Marshall Islands", dialCode: "692" },
90577
+ { alpha2: "MK", name: "North Macedonia", dialCode: "389" },
90578
+ { alpha2: "ML", name: "Mali", dialCode: "223" },
90579
+ { alpha2: "MM", name: "Myanmar", dialCode: "95" },
90580
+ { alpha2: "MN", name: "Mongolia", dialCode: "976" },
90581
+ { alpha2: "MO", name: "Macao", dialCode: "853" },
90582
+ { alpha2: "MP", name: "Northern Mariana Islands", dialCode: "1" },
90583
+ { alpha2: "MQ", name: "Martinique", dialCode: "596" },
90584
+ { alpha2: "MR", name: "Mauritania", dialCode: "222" },
90585
+ { alpha2: "MS", name: "Montserrat", dialCode: "1" },
90586
+ { alpha2: "MT", name: "Malta", dialCode: "356" },
90587
+ { alpha2: "MU", name: "Mauritius", dialCode: "230" },
90588
+ { alpha2: "MV", name: "Maldives", dialCode: "960" },
90589
+ { alpha2: "MW", name: "Malawi", dialCode: "265" },
90590
+ { alpha2: "MX", name: "Mexico", dialCode: "52" },
90591
+ { alpha2: "MY", name: "Malaysia", dialCode: "60" },
90592
+ { alpha2: "MZ", name: "Mozambique", dialCode: "258" },
90593
+ { alpha2: "NA", name: "Namibia", dialCode: "264" },
90594
+ { alpha2: "NC", name: "New Caledonia", dialCode: "687" },
90595
+ { alpha2: "NE", name: "Niger", dialCode: "227" },
90596
+ { alpha2: "NF", name: "Norfolk Island", dialCode: "672" },
90597
+ { alpha2: "NG", name: "Nigeria", dialCode: "234" },
90598
+ { alpha2: "NI", name: "Nicaragua", dialCode: "505" },
90599
+ { alpha2: "NL", name: "Netherlands", dialCode: "31" },
90600
+ { alpha2: "NO", name: "Norway", dialCode: "47" },
90601
+ { alpha2: "NP", name: "Nepal", dialCode: "977" },
90602
+ { alpha2: "NR", name: "Nauru", dialCode: "674" },
90603
+ { alpha2: "NU", name: "Niue", dialCode: "683" },
90604
+ { alpha2: "NZ", name: "New Zealand", dialCode: "64" },
90605
+ { alpha2: "OM", name: "Oman", dialCode: "968" },
90606
+ { alpha2: "PA", name: "Panama", dialCode: "507" },
90607
+ { alpha2: "PE", name: "Peru", dialCode: "51" },
90608
+ { alpha2: "PF", name: "French Polynesia", dialCode: "689" },
90609
+ { alpha2: "PG", name: "Papua New Guinea", dialCode: "675" },
90610
+ { alpha2: "PH", name: "Philippines", dialCode: "63" },
90611
+ { alpha2: "PK", name: "Pakistan", dialCode: "92" },
90612
+ { alpha2: "PL", name: "Poland", dialCode: "48" },
90613
+ { alpha2: "PM", name: "Saint Pierre and Miquelon", dialCode: "508" },
90614
+ { alpha2: "PN", name: "Pitcairn", dialCode: "64" },
90615
+ { alpha2: "PR", name: "Puerto Rico", dialCode: "1" },
90616
+ { alpha2: "PS", name: "Palestine", dialCode: "970" },
90617
+ { alpha2: "PT", name: "Portugal", dialCode: "351" },
90618
+ { alpha2: "PW", name: "Palau", dialCode: "680" },
90619
+ { alpha2: "PY", name: "Paraguay", dialCode: "595" },
90620
+ { alpha2: "QA", name: "Qatar", dialCode: "974" },
90621
+ { alpha2: "RE", name: "R\xE9union", dialCode: "262" },
90622
+ { alpha2: "RO", name: "Romania", dialCode: "40" },
90623
+ { alpha2: "RS", name: "Serbia", dialCode: "381" },
90624
+ { alpha2: "RU", name: "Russia", dialCode: "7" },
90625
+ { alpha2: "RW", name: "Rwanda", dialCode: "250" },
90626
+ { alpha2: "SA", name: "Saudi Arabia", dialCode: "966" },
90627
+ { alpha2: "SB", name: "Solomon Islands", dialCode: "677" },
90628
+ { alpha2: "SC", name: "Seychelles", dialCode: "248" },
90629
+ { alpha2: "SD", name: "Sudan", dialCode: "249" },
90630
+ { alpha2: "SE", name: "Sweden", dialCode: "46" },
90631
+ { alpha2: "SG", name: "Singapore", dialCode: "65" },
90632
+ { alpha2: "SH", name: "Saint Helena, Ascension and Tristan da Cunha", dialCode: "290" },
90633
+ { alpha2: "SI", name: "Slovenia", dialCode: "386" },
90634
+ { alpha2: "SJ", name: "Svalbard and Jan Mayen", dialCode: "47" },
90635
+ { alpha2: "SK", name: "Slovakia", dialCode: "421" },
90636
+ { alpha2: "SL", name: "Sierra Leone", dialCode: "232" },
90637
+ { alpha2: "SM", name: "San Marino", dialCode: "378" },
90638
+ { alpha2: "SN", name: "Senegal", dialCode: "221" },
90639
+ { alpha2: "SO", name: "Somalia", dialCode: "252" },
90640
+ { alpha2: "SR", name: "Suriname", dialCode: "597" },
90641
+ { alpha2: "SS", name: "South Sudan", dialCode: "211" },
90642
+ { alpha2: "ST", name: "Sao Tome and Principe", dialCode: "239" },
90643
+ { alpha2: "SV", name: "El Salvador", dialCode: "503" },
90644
+ { alpha2: "SX", name: "Sint Maarten (Dutch part)", dialCode: "1" },
90645
+ { alpha2: "SY", name: "Syria", dialCode: "963" },
90646
+ { alpha2: "SZ", name: "Eswatini", dialCode: "268" },
90647
+ { alpha2: "TC", name: "Turks and Caicos Islands", dialCode: "1" },
90648
+ { alpha2: "TD", name: "Chad", dialCode: "235" },
90649
+ { alpha2: "TF", name: "French Southern Territories" },
90650
+ { alpha2: "TG", name: "Togo", dialCode: "228" },
90651
+ { alpha2: "TH", name: "Thailand", dialCode: "66" },
90652
+ { alpha2: "TJ", name: "Tajikistan", dialCode: "992" },
90653
+ { alpha2: "TK", name: "Tokelau", dialCode: "690" },
90654
+ { alpha2: "TL", name: "Timor-Leste", dialCode: "670" },
90655
+ { alpha2: "TM", name: "Turkmenistan", dialCode: "993" },
90656
+ { alpha2: "TN", name: "Tunisia", dialCode: "216" },
90657
+ { alpha2: "TO", name: "Tonga", dialCode: "676" },
90658
+ { alpha2: "TR", name: "T\xFCrkiye", dialCode: "90" },
90659
+ { alpha2: "TT", name: "Trinidad and Tobago", dialCode: "1" },
90660
+ { alpha2: "TV", name: "Tuvalu", dialCode: "688" },
90661
+ { alpha2: "TW", name: "Taiwan", dialCode: "886" },
90662
+ { alpha2: "TZ", name: "Tanzania", dialCode: "255" },
90663
+ { alpha2: "UA", name: "Ukraine", dialCode: "380" },
90664
+ { alpha2: "UG", name: "Uganda", dialCode: "256" },
90665
+ { alpha2: "UM", name: "U.S. Minor Outlying Islands" },
90666
+ { alpha2: "US", name: "United States", dialCode: "1" },
90667
+ { alpha2: "UY", name: "Uruguay", dialCode: "598" },
90668
+ { alpha2: "UZ", name: "Uzbekistan", dialCode: "998" },
90669
+ { alpha2: "VA", name: "Vatican City", dialCode: "39" },
90670
+ { alpha2: "VC", name: "Saint Vincent and the Grenadines", dialCode: "1" },
90671
+ { alpha2: "VE", name: "Venezuela", dialCode: "58" },
90672
+ { alpha2: "VG", name: "British Virgin Islands", dialCode: "1" },
90673
+ { alpha2: "VI", name: "U.S. Virgin Islands", dialCode: "1" },
90674
+ { alpha2: "VN", name: "Vietnam", dialCode: "84" },
90675
+ { alpha2: "VU", name: "Vanuatu", dialCode: "678" },
90676
+ { alpha2: "WF", name: "Wallis and Futuna", dialCode: "681" },
90677
+ { alpha2: "WS", name: "Samoa", dialCode: "685" },
90678
+ { alpha2: "YE", name: "Yemen", dialCode: "967" },
90679
+ { alpha2: "YT", name: "Mayotte", dialCode: "262" },
90680
+ { alpha2: "ZA", name: "South Africa", dialCode: "27" },
90681
+ { alpha2: "ZM", name: "Zambia", dialCode: "260" },
90682
+ { alpha2: "ZW", name: "Zimbabwe", dialCode: "263" }
90683
+ ];
90684
+ var BY_ALPHA2 = new Map(COUNTRIES.map((c) => [c.alpha2, c]));
90685
+ var ALL_COUNTRIES = [...COUNTRIES].sort(
90686
+ (a, b) => a.name.localeCompare(b.name)
90687
+ );
90688
+ var UK = ["GB"];
90689
+ var EU = [
90690
+ "AT",
90691
+ "BE",
90692
+ "BG",
90693
+ "HR",
90694
+ "CY",
90695
+ "CZ",
90696
+ "DK",
90697
+ "EE",
90698
+ "FI",
90699
+ "FR",
90700
+ "DE",
90701
+ "GR",
90702
+ "HU",
90703
+ "IE",
90704
+ "IT",
90705
+ "LV",
90706
+ "LT",
90707
+ "LU",
90708
+ "MT",
90709
+ "NL",
90710
+ "PL",
90711
+ "PT",
90712
+ "RO",
90713
+ "SK",
90714
+ "SI",
90715
+ "ES",
90716
+ "SE"
90717
+ ];
90718
+ var EEA = [...EU, "IS", "LI", "NO"];
90719
+ var EUROPE = [
90720
+ ...EEA,
90721
+ ...UK,
90722
+ "CH",
90723
+ "AD",
90724
+ "MC",
90725
+ "SM",
90726
+ "VA",
90727
+ "GI",
90728
+ "GG",
90729
+ "JE",
90730
+ "IM",
90731
+ "FO",
90732
+ "AX",
90733
+ "SJ",
90734
+ "GL",
90735
+ "PM",
90736
+ "AL",
90737
+ "BA",
90738
+ "ME",
90739
+ "MK",
90740
+ "RS",
90741
+ "MD",
90742
+ "UA",
90743
+ "BY",
90744
+ "RU",
90745
+ "GE",
90746
+ "AM",
90747
+ "AZ",
90748
+ "TR"
90749
+ ];
90750
+ var INDIA = ["IN"];
90751
+ var SEA = ["BN", "KH", "ID", "LA", "MY", "MM", "PH", "SG", "TH", "VN", "TL"];
90752
+ var ASIA = [
90753
+ ...SEA,
90754
+ ...INDIA,
90755
+ "CN",
90756
+ "HK",
90757
+ "MO",
90758
+ "TW",
90759
+ "JP",
90760
+ "KR",
90761
+ "KP",
90762
+ "MN",
90763
+ "PK",
90764
+ "BD",
90765
+ "LK",
90766
+ "NP",
90767
+ "BT",
90768
+ "MV",
90769
+ "AF",
90770
+ "KZ",
90771
+ "KG",
90772
+ "TJ",
90773
+ "TM",
90774
+ "UZ"
90775
+ ];
90776
+ var CARIBBEAN = [
90777
+ "AI",
90778
+ "AG",
90779
+ "AW",
90780
+ "BS",
90781
+ "BB",
90782
+ "BM",
90783
+ "BQ",
90784
+ "VG",
90785
+ "KY",
90786
+ "CU",
90787
+ "CW",
90788
+ "DM",
90789
+ "DO",
90790
+ "GD",
90791
+ "GP",
90792
+ "HT",
90793
+ "JM",
90794
+ "MQ",
90795
+ "MS",
90796
+ "PR",
90797
+ "BL",
90798
+ "KN",
90799
+ "LC",
90800
+ "MF",
90801
+ "VC",
90802
+ "SX",
90803
+ "TT",
90804
+ "TC",
90805
+ "VI"
90806
+ ];
90807
+ var LATAM = [
90808
+ ...CARIBBEAN,
90809
+ "MX",
90810
+ "BZ",
90811
+ "CR",
90812
+ "SV",
90813
+ "GT",
90814
+ "HN",
90815
+ "NI",
90816
+ "PA",
90817
+ "AR",
90818
+ "BO",
90819
+ "BR",
90820
+ "CL",
90821
+ "CO",
90822
+ "EC",
90823
+ "FK",
90824
+ "GF",
90825
+ "GY",
90826
+ "PY",
90827
+ "PE",
90828
+ "GS",
90829
+ "SR",
90830
+ "UY",
90831
+ "VE"
90832
+ ];
90213
90833
  function UnifoldProvider2({
90214
90834
  children,
90215
90835
  publishableKey,
@@ -90516,7 +91136,7 @@ function UnifoldProvider2({
90516
91136
  handleWithdrawError
90517
91137
  ]
90518
91138
  );
90519
- 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)(
91139
+ 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)(
90520
91140
  ThemeProvider,
90521
91141
  {
90522
91142
  mode: resolvedTheme,
@@ -90527,7 +91147,7 @@ function UnifoldProvider2({
90527
91147
  components: config?.components,
90528
91148
  children: [
90529
91149
  children,
90530
- checkoutConfig && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
91150
+ checkoutConfig && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
90531
91151
  CheckoutModal,
90532
91152
  {
90533
91153
  open: isCheckoutOpen,
@@ -90549,7 +91169,7 @@ function UnifoldProvider2({
90549
91169
  onEvent: checkoutConfig.onEvent
90550
91170
  }
90551
91171
  ),
90552
- withdrawConfig && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
91172
+ withdrawConfig && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
90553
91173
  WithdrawModal,
90554
91174
  {
90555
91175
  open: isWithdrawOpen,
@@ -90577,7 +91197,7 @@ function UnifoldProvider2({
90577
91197
  theme: resolvedTheme
90578
91198
  }
90579
91199
  ),
90580
- depositConfig && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
91200
+ depositConfig && /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
90581
91201
  DepositModal,
90582
91202
  {
90583
91203
  open: isOpen,
@@ -90671,9 +91291,9 @@ function useUnifold2() {
90671
91291
  }
90672
91292
 
90673
91293
  // src/unifold.tsx
90674
- var UnifoldBridge = (0, import_react49.forwardRef)((_, ref) => {
91294
+ var UnifoldBridge = (0, import_react50.forwardRef)((_, ref) => {
90675
91295
  const { beginDeposit, closeDeposit, beginWithdraw, closeWithdraw } = useUnifold2();
90676
- (0, import_react49.useImperativeHandle)(ref, () => ({ beginDeposit, closeDeposit, beginWithdraw, closeWithdraw }), [
91296
+ (0, import_react50.useImperativeHandle)(ref, () => ({ beginDeposit, closeDeposit, beginWithdraw, closeWithdraw }), [
90677
91297
  beginDeposit,
90678
91298
  closeDeposit,
90679
91299
  beginWithdraw,
@@ -90682,7 +91302,7 @@ var UnifoldBridge = (0, import_react49.forwardRef)((_, ref) => {
90682
91302
  return null;
90683
91303
  });
90684
91304
  UnifoldBridge.displayName = "UnifoldBridge";
90685
- var RenderErrorBoundary = class extends import_react49.Component {
91305
+ var RenderErrorBoundary = class extends import_react50.Component {
90686
91306
  constructor() {
90687
91307
  super(...arguments);
90688
91308
  this.state = { hasError: false };
@@ -90754,13 +91374,13 @@ function createUnifold(publishableKey, config) {
90754
91374
  };
90755
91375
  try {
90756
91376
  root.render(
90757
- import_react49.default.createElement(
91377
+ import_react50.default.createElement(
90758
91378
  RenderErrorBoundary,
90759
91379
  { onError: handleRenderError },
90760
- import_react49.default.createElement(
91380
+ import_react50.default.createElement(
90761
91381
  UnifoldProvider2,
90762
91382
  { publishableKey, config },
90763
- import_react49.default.createElement(UnifoldBridge, { ref: refCallback })
91383
+ import_react50.default.createElement(UnifoldBridge, { ref: refCallback })
90764
91384
  )
90765
91385
  )
90766
91386
  );