@unifold/ui-react 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.
- package/dist/index.d.mts +261 -2
- package/dist/index.d.ts +261 -2
- package/dist/index.js +1336 -28
- package/dist/index.mjs +1317 -28
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -27,6 +27,9 @@ var en_default = {
|
|
|
27
27
|
loading: "Loading...",
|
|
28
28
|
search: "Search",
|
|
29
29
|
close: "Close",
|
|
30
|
+
noResults: "No matches found",
|
|
31
|
+
selectCountry: "Select country",
|
|
32
|
+
selectState: "Select state",
|
|
30
33
|
review: "Review",
|
|
31
34
|
tryAgain: "Try Again",
|
|
32
35
|
somethingWentWrong: "Something went wrong",
|
|
@@ -249,6 +252,7 @@ var en_default = {
|
|
|
249
252
|
not_opted_in: "Please make sure you opt-in {{token_symbol}}({{chain_name}}) before receiving funds",
|
|
250
253
|
insufficient_balance: "Recipient account does not meet the minimum balance requirement",
|
|
251
254
|
account_not_found: "Recipient account does not exist on {{chain_name}}",
|
|
255
|
+
destination_tag_required: "This {{chain_name}} address requires a memo tag. Please provide your memo tag as well, in the format address:memotag",
|
|
252
256
|
validation_error: "Unable to verify recipient address on {{chain_name}}"
|
|
253
257
|
},
|
|
254
258
|
defaultError: "The recipient address cannot receive funds for the selected token"
|
|
@@ -827,12 +831,18 @@ var en_default = {
|
|
|
827
831
|
receiveChain: "Receive chain",
|
|
828
832
|
recipientAddress: "Recipient address",
|
|
829
833
|
recipientAddressPlaceholder: "Enter wallet address",
|
|
834
|
+
recipientAddressPlaceholderXrpl: "Enter wallet address, or address:memotag",
|
|
830
835
|
amount: "Amount",
|
|
831
836
|
amountPlaceholder: "0.00",
|
|
832
837
|
balance: "Balance",
|
|
833
838
|
minimum: "min",
|
|
834
839
|
withdraw: "Withdraw",
|
|
835
840
|
invalidAddress: "Please enter a valid address",
|
|
841
|
+
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",
|
|
842
|
+
memoTag: "Memo tag",
|
|
843
|
+
memoTagPlaceholder: "e.g. 12345",
|
|
844
|
+
memoTagRequiredHint: "This {{chain_name}} address requires a memo tag before it can receive funds",
|
|
845
|
+
invalidMemoTag: "Memo tag must be a whole number between 0 and 4294967295",
|
|
836
846
|
invalidAmount: "Please enter a valid amount",
|
|
837
847
|
verifyingAddress: "Verifying address...",
|
|
838
848
|
loading: "Loading...",
|
|
@@ -882,6 +892,9 @@ var zh_default = {
|
|
|
882
892
|
loading: "\u52A0\u8F7D\u4E2D...",
|
|
883
893
|
search: "\u641C\u7D22",
|
|
884
894
|
close: "\u5173\u95ED",
|
|
895
|
+
noResults: "\u6CA1\u6709\u5339\u914D\u7684\u7ED3\u679C",
|
|
896
|
+
selectCountry: "\u9009\u62E9\u56FD\u5BB6",
|
|
897
|
+
selectState: "\u9009\u62E9\u5DDE",
|
|
885
898
|
review: "\u786E\u8BA4\u4FE1\u606F",
|
|
886
899
|
tryAgain: "\u91CD\u8BD5",
|
|
887
900
|
somethingWentWrong: "\u51FA\u73B0\u9519\u8BEF",
|
|
@@ -1104,6 +1117,7 @@ var zh_default = {
|
|
|
1104
1117
|
not_opted_in: "\u8BF7\u5148\u5728 {{chain_name}} \u4E0A\u5F00\u901A {{token_symbol}}\uFF0C\u7136\u540E\u518D\u63A5\u6536\u8D44\u91D1",
|
|
1105
1118
|
insufficient_balance: "\u6536\u6B3E\u8D26\u6237\u672A\u6EE1\u8DB3\u6700\u4F4E\u4F59\u989D\u8981\u6C42",
|
|
1106
1119
|
account_not_found: "\u6536\u6B3E\u8D26\u6237\u5728 {{chain_name}} \u4E0A\u4E0D\u5B58\u5728",
|
|
1120
|
+
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",
|
|
1107
1121
|
validation_error: "\u65E0\u6CD5\u5728 {{chain_name}} \u4E0A\u9A8C\u8BC1\u6536\u6B3E\u5730\u5740"
|
|
1108
1122
|
},
|
|
1109
1123
|
defaultError: "\u8BE5\u6536\u6B3E\u5730\u5740\u65E0\u6CD5\u63A5\u6536\u6240\u9009\u4EE3\u5E01\u7684\u8D44\u91D1"
|
|
@@ -1682,12 +1696,18 @@ var zh_default = {
|
|
|
1682
1696
|
receiveChain: "\u63A5\u6536\u7F51\u7EDC",
|
|
1683
1697
|
recipientAddress: "\u6536\u6B3E\u5730\u5740",
|
|
1684
1698
|
recipientAddressPlaceholder: "\u8F93\u5165\u94B1\u5305\u5730\u5740",
|
|
1699
|
+
recipientAddressPlaceholderXrpl: "\u8F93\u5165\u5730\u5740\uFF0C\u6216 \u5730\u5740:\u6807\u7B7E",
|
|
1685
1700
|
amount: "\u91D1\u989D",
|
|
1686
1701
|
amountPlaceholder: "0.00",
|
|
1687
1702
|
balance: "\u4F59\u989D",
|
|
1688
1703
|
minimum: "\u6700\u4F4E",
|
|
1689
1704
|
withdraw: "\u63D0\u73B0",
|
|
1690
1705
|
invalidAddress: "\u8BF7\u8F93\u5165\u6709\u6548\u5730\u5740",
|
|
1706
|
+
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",
|
|
1707
|
+
memoTag: "\u76EE\u6807\u6807\u7B7E",
|
|
1708
|
+
memoTagPlaceholder: "\u4F8B\u5982 12345",
|
|
1709
|
+
memoTagRequiredHint: "\u8BE5 {{chain_name}} \u5730\u5740\u9700\u8981\u586B\u5199\u76EE\u6807\u6807\u7B7E\u624D\u80FD\u6536\u6B3E",
|
|
1710
|
+
invalidMemoTag: "\u76EE\u6807\u6807\u7B7E\u5FC5\u987B\u662F 0 \u5230 4294967295 \u4E4B\u95F4\u7684\u6574\u6570",
|
|
1691
1711
|
invalidAmount: "\u8BF7\u8F93\u5165\u6709\u6548\u91D1\u989D",
|
|
1692
1712
|
verifyingAddress: "\u6B63\u5728\u9A8C\u8BC1\u5730\u5740...",
|
|
1693
1713
|
loading: "\u52A0\u8F7D\u4E2D...",
|
|
@@ -1737,6 +1757,9 @@ var zh_TW_default = {
|
|
|
1737
1757
|
loading: "\u8F09\u5165\u4E2D...",
|
|
1738
1758
|
search: "\u641C\u5C0B",
|
|
1739
1759
|
close: "\u95DC\u9589",
|
|
1760
|
+
noResults: "\u6C92\u6709\u7B26\u5408\u7684\u7D50\u679C",
|
|
1761
|
+
selectCountry: "\u9078\u64C7\u570B\u5BB6",
|
|
1762
|
+
selectState: "\u9078\u64C7\u5DDE",
|
|
1740
1763
|
review: "\u78BA\u8A8D\u8CC7\u8A0A",
|
|
1741
1764
|
tryAgain: "\u91CD\u8A66",
|
|
1742
1765
|
somethingWentWrong: "\u767C\u751F\u932F\u8AA4",
|
|
@@ -1959,6 +1982,7 @@ var zh_TW_default = {
|
|
|
1959
1982
|
not_opted_in: "\u8ACB\u5148\u5728 {{chain_name}} \u4E0A\u958B\u901A {{token_symbol}}\uFF0C\u7136\u5F8C\u518D\u63A5\u6536\u8CC7\u91D1",
|
|
1960
1983
|
insufficient_balance: "\u6536\u6B3E\u5E33\u6236\u672A\u9054\u6700\u4F4E\u9918\u984D\u8981\u6C42",
|
|
1961
1984
|
account_not_found: "\u6536\u6B3E\u5E33\u6236\u5728 {{chain_name}} \u4E0A\u4E0D\u5B58\u5728",
|
|
1985
|
+
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",
|
|
1962
1986
|
validation_error: "\u7121\u6CD5\u5728 {{chain_name}} \u4E0A\u9A57\u8B49\u6536\u6B3E\u5730\u5740"
|
|
1963
1987
|
},
|
|
1964
1988
|
defaultError: "\u8A72\u6536\u6B3E\u5730\u5740\u7121\u6CD5\u63A5\u6536\u6240\u9078\u4EE3\u5E63\u7684\u8CC7\u91D1"
|
|
@@ -2537,12 +2561,18 @@ var zh_TW_default = {
|
|
|
2537
2561
|
receiveChain: "\u63A5\u6536\u7DB2\u8DEF",
|
|
2538
2562
|
recipientAddress: "\u6536\u6B3E\u5730\u5740",
|
|
2539
2563
|
recipientAddressPlaceholder: "\u8F38\u5165\u9322\u5305\u5730\u5740",
|
|
2564
|
+
recipientAddressPlaceholderXrpl: "\u8F38\u5165\u5730\u5740\uFF0C\u6216 \u5730\u5740:\u6A19\u7C64",
|
|
2540
2565
|
amount: "\u91D1\u984D",
|
|
2541
2566
|
amountPlaceholder: "0.00",
|
|
2542
2567
|
balance: "\u9918\u984D",
|
|
2543
2568
|
minimum: "\u6700\u4F4E",
|
|
2544
2569
|
withdraw: "\u63D0\u9818",
|
|
2545
2570
|
invalidAddress: "\u8ACB\u8F38\u5165\u6709\u6548\u5730\u5740",
|
|
2571
|
+
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",
|
|
2572
|
+
memoTag: "\u76EE\u7684\u5730\u6A19\u7C64",
|
|
2573
|
+
memoTagPlaceholder: "\u4F8B\u5982 12345",
|
|
2574
|
+
memoTagRequiredHint: "\u8A72 {{chain_name}} \u5730\u5740\u9700\u8981\u586B\u5BEB\u76EE\u7684\u5730\u6A19\u7C64\u624D\u80FD\u6536\u6B3E",
|
|
2575
|
+
invalidMemoTag: "\u76EE\u7684\u5730\u6A19\u7C64\u5FC5\u9808\u662F 0 \u5230 4294967295 \u4E4B\u9593\u7684\u6574\u6578",
|
|
2546
2576
|
invalidAmount: "\u8ACB\u8F38\u5165\u6709\u6548\u91D1\u984D",
|
|
2547
2577
|
verifyingAddress: "\u6B63\u5728\u9A57\u8B49\u5730\u5740...",
|
|
2548
2578
|
loading: "\u8F09\u5165\u4E2D...",
|
|
@@ -2592,6 +2622,9 @@ var fr_default = {
|
|
|
2592
2622
|
loading: "Chargement...",
|
|
2593
2623
|
search: "Rechercher",
|
|
2594
2624
|
close: "Fermer",
|
|
2625
|
+
noResults: "Aucun r\xE9sultat",
|
|
2626
|
+
selectCountry: "S\xE9lectionner un pays",
|
|
2627
|
+
selectState: "S\xE9lectionner un \xC9tat",
|
|
2595
2628
|
review: "V\xE9rifier",
|
|
2596
2629
|
tryAgain: "R\xE9essayer",
|
|
2597
2630
|
somethingWentWrong: "Une erreur s'est produite",
|
|
@@ -2814,6 +2847,7 @@ var fr_default = {
|
|
|
2814
2847
|
not_opted_in: "Veuillez d'abord activer {{token_symbol}} ({{chain_name}}) avant de recevoir des fonds",
|
|
2815
2848
|
insufficient_balance: "Le compte destinataire ne respecte pas le solde minimum requis",
|
|
2816
2849
|
account_not_found: "Le compte destinataire n'existe pas sur {{chain_name}}",
|
|
2850
|
+
destination_tag_required: "Cette adresse {{chain_name}} n\xE9cessite un tag de destination. Veuillez \xE9galement indiquer votre tag, au format adresse:tag",
|
|
2817
2851
|
validation_error: "Impossible de v\xE9rifier l'adresse du destinataire sur {{chain_name}}"
|
|
2818
2852
|
},
|
|
2819
2853
|
defaultError: "L'adresse du destinataire ne peut pas recevoir de fonds pour le jeton s\xE9lectionn\xE9"
|
|
@@ -3392,12 +3426,18 @@ var fr_default = {
|
|
|
3392
3426
|
receiveChain: "R\xE9seau de r\xE9ception",
|
|
3393
3427
|
recipientAddress: "Adresse du destinataire",
|
|
3394
3428
|
recipientAddressPlaceholder: "Saisir l'adresse du portefeuille",
|
|
3429
|
+
recipientAddressPlaceholderXrpl: "Saisir l'adresse, ou adresse:tag",
|
|
3395
3430
|
amount: "Montant",
|
|
3396
3431
|
amountPlaceholder: "0,00",
|
|
3397
3432
|
balance: "Solde",
|
|
3398
3433
|
minimum: "min.",
|
|
3399
3434
|
withdraw: "Retirer",
|
|
3400
3435
|
invalidAddress: "Veuillez saisir une adresse valide",
|
|
3436
|
+
invalidXrplAddress: "Veuillez saisir une adresse {{chain_name}} valide. Si votre destinataire n\xE9cessite un tag de destination, indiquez-le \xE9galement, au format adresse:tag",
|
|
3437
|
+
memoTag: "Tag de destination",
|
|
3438
|
+
memoTagPlaceholder: "ex. 12345",
|
|
3439
|
+
memoTagRequiredHint: "Cette adresse {{chain_name}} n\xE9cessite un tag de destination pour recevoir des fonds",
|
|
3440
|
+
invalidMemoTag: "Le tag de destination doit \xEAtre un nombre entier entre 0 et 4294967295",
|
|
3401
3441
|
invalidAmount: "Veuillez saisir un montant valide",
|
|
3402
3442
|
verifyingAddress: "V\xE9rification de l'adresse...",
|
|
3403
3443
|
loading: "Chargement...",
|
|
@@ -3447,6 +3487,9 @@ var th_default = {
|
|
|
3447
3487
|
loading: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14...",
|
|
3448
3488
|
search: "\u0E04\u0E49\u0E19\u0E2B\u0E32",
|
|
3449
3489
|
close: "\u0E1B\u0E34\u0E14",
|
|
3490
|
+
noResults: "\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E19",
|
|
3491
|
+
selectCountry: "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28",
|
|
3492
|
+
selectState: "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E23\u0E31\u0E10",
|
|
3450
3493
|
review: "\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A",
|
|
3451
3494
|
tryAgain: "\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07",
|
|
3452
3495
|
somethingWentWrong: "\u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14",
|
|
@@ -3669,6 +3712,7 @@ var th_default = {
|
|
|
3669
3712
|
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",
|
|
3670
3713
|
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",
|
|
3671
3714
|
account_not_found: "\u0E44\u0E21\u0E48\u0E21\u0E35\u0E1A\u0E31\u0E0D\u0E0A\u0E35\u0E1C\u0E39\u0E49\u0E23\u0E31\u0E1A\u0E1A\u0E19 {{chain_name}}",
|
|
3715
|
+
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",
|
|
3672
3716
|
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"
|
|
3673
3717
|
},
|
|
3674
3718
|
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"
|
|
@@ -4247,12 +4291,18 @@ var th_default = {
|
|
|
4247
4291
|
receiveChain: "\u0E40\u0E04\u0E23\u0E37\u0E2D\u0E02\u0E48\u0E32\u0E22\u0E17\u0E35\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A",
|
|
4248
4292
|
recipientAddress: "\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E1C\u0E39\u0E49\u0E23\u0E31\u0E1A",
|
|
4249
4293
|
recipientAddressPlaceholder: "\u0E01\u0E23\u0E2D\u0E01\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E01\u0E23\u0E30\u0E40\u0E1B\u0E4B\u0E32\u0E40\u0E07\u0E34\u0E19",
|
|
4294
|
+
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",
|
|
4250
4295
|
amount: "\u0E08\u0E33\u0E19\u0E27\u0E19",
|
|
4251
4296
|
amountPlaceholder: "0.00",
|
|
4252
4297
|
balance: "\u0E22\u0E2D\u0E14\u0E04\u0E07\u0E40\u0E2B\u0E25\u0E37\u0E2D",
|
|
4253
4298
|
minimum: "\u0E02\u0E31\u0E49\u0E19\u0E15\u0E48\u0E33",
|
|
4254
4299
|
withdraw: "\u0E16\u0E2D\u0E19",
|
|
4255
4300
|
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",
|
|
4301
|
+
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",
|
|
4302
|
+
memoTag: "Destination tag",
|
|
4303
|
+
memoTagPlaceholder: "\u0E40\u0E0A\u0E48\u0E19 12345",
|
|
4304
|
+
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",
|
|
4305
|
+
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",
|
|
4256
4306
|
invalidAmount: "\u0E42\u0E1B\u0E23\u0E14\u0E01\u0E23\u0E2D\u0E01\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07",
|
|
4257
4307
|
verifyingAddress: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E15\u0E23\u0E27\u0E08\u0E2A\u0E2D\u0E1A\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48...",
|
|
4258
4308
|
loading: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14...",
|
|
@@ -4302,6 +4352,9 @@ var ja_default = {
|
|
|
4302
4352
|
loading: "\u8AAD\u307F\u8FBC\u307F\u4E2D...",
|
|
4303
4353
|
search: "\u691C\u7D22",
|
|
4304
4354
|
close: "\u9589\u3058\u308B",
|
|
4355
|
+
noResults: "\u4E00\u81F4\u3059\u308B\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093",
|
|
4356
|
+
selectCountry: "\u56FD\u3092\u9078\u629E",
|
|
4357
|
+
selectState: "\u5DDE\u3092\u9078\u629E",
|
|
4305
4358
|
review: "\u78BA\u8A8D",
|
|
4306
4359
|
tryAgain: "\u518D\u8A66\u884C",
|
|
4307
4360
|
somethingWentWrong: "\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F",
|
|
@@ -4524,6 +4577,7 @@ var ja_default = {
|
|
|
4524
4577
|
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",
|
|
4525
4578
|
insufficient_balance: "\u53D7\u53D6\u53E3\u5EA7\u304C\u6700\u4F4E\u6B8B\u9AD8\u306E\u8981\u4EF6\u3092\u6E80\u305F\u3057\u3066\u3044\u307E\u305B\u3093",
|
|
4526
4579
|
account_not_found: "{{chain_name}}\u4E0A\u306B\u53D7\u53D6\u53E3\u5EA7\u304C\u5B58\u5728\u3057\u307E\u305B\u3093",
|
|
4580
|
+
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",
|
|
4527
4581
|
validation_error: "{{chain_name}}\u4E0A\u306E\u53D7\u53D6\u30A2\u30C9\u30EC\u30B9\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093"
|
|
4528
4582
|
},
|
|
4529
4583
|
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"
|
|
@@ -5102,12 +5156,18 @@ var ja_default = {
|
|
|
5102
5156
|
receiveChain: "\u53D7\u53D6\u30C1\u30A7\u30FC\u30F3",
|
|
5103
5157
|
recipientAddress: "\u53D7\u53D6\u30A2\u30C9\u30EC\u30B9",
|
|
5104
5158
|
recipientAddressPlaceholder: "\u30A6\u30A9\u30EC\u30C3\u30C8\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B",
|
|
5159
|
+
recipientAddressPlaceholderXrpl: "\u30A2\u30C9\u30EC\u30B9\u3001\u307E\u305F\u306F \u30A2\u30C9\u30EC\u30B9:\u30BF\u30B0 \u3092\u5165\u529B",
|
|
5105
5160
|
amount: "\u91D1\u984D",
|
|
5106
5161
|
amountPlaceholder: "0.00",
|
|
5107
5162
|
balance: "\u6B8B\u9AD8",
|
|
5108
5163
|
minimum: "\u6700\u4F4E",
|
|
5109
5164
|
withdraw: "\u51FA\u91D1",
|
|
5110
5165
|
invalidAddress: "\u6709\u52B9\u306A\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
5166
|
+
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",
|
|
5167
|
+
memoTag: "\u5B9B\u5148\u30BF\u30B0",
|
|
5168
|
+
memoTagPlaceholder: "\u4F8B: 12345",
|
|
5169
|
+
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",
|
|
5170
|
+
invalidMemoTag: "\u5B9B\u5148\u30BF\u30B0\u306F 0\u301C4294967295 \u306E\u6574\u6570\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
5111
5171
|
invalidAmount: "\u6709\u52B9\u306A\u91D1\u984D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
5112
5172
|
verifyingAddress: "\u30A2\u30C9\u30EC\u30B9\u3092\u78BA\u8A8D\u3057\u3066\u3044\u307E\u3059...",
|
|
5113
5173
|
loading: "\u8AAD\u307F\u8FBC\u307F\u4E2D...",
|
|
@@ -5157,6 +5217,9 @@ var ko_default = {
|
|
|
5157
5217
|
loading: "\uB85C\uB529 \uC911...",
|
|
5158
5218
|
search: "\uAC80\uC0C9",
|
|
5159
5219
|
close: "\uB2EB\uAE30",
|
|
5220
|
+
noResults: "\uC77C\uCE58\uD558\uB294 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",
|
|
5221
|
+
selectCountry: "\uAD6D\uAC00 \uC120\uD0DD",
|
|
5222
|
+
selectState: "\uC8FC \uC120\uD0DD",
|
|
5160
5223
|
review: "\uD655\uC778",
|
|
5161
5224
|
tryAgain: "\uB2E4\uC2DC \uC2DC\uB3C4",
|
|
5162
5225
|
somethingWentWrong: "\uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4",
|
|
@@ -5379,6 +5442,7 @@ var ko_default = {
|
|
|
5379
5442
|
not_opted_in: "\uC790\uAE08\uC744 \uBC1B\uAE30 \uC804\uC5D0 {{chain_name}}\uC5D0\uC11C {{token_symbol}}\uC744(\uB97C) \uC635\uD2B8\uC778\uD558\uC138\uC694",
|
|
5380
5443
|
insufficient_balance: "\uBC1B\uB294 \uACC4\uC815\uC774 \uCD5C\uC18C \uC794\uC561 \uC694\uAC74\uC744 \uCDA9\uC871\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",
|
|
5381
5444
|
account_not_found: "{{chain_name}}\uC5D0 \uBC1B\uB294 \uACC4\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4",
|
|
5445
|
+
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",
|
|
5382
5446
|
validation_error: "{{chain_name}}\uC5D0\uC11C \uBC1B\uB294 \uC8FC\uC18C\uB97C \uD655\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4"
|
|
5383
5447
|
},
|
|
5384
5448
|
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"
|
|
@@ -5957,12 +6021,18 @@ var ko_default = {
|
|
|
5957
6021
|
receiveChain: "\uBC1B\uC744 \uCCB4\uC778",
|
|
5958
6022
|
recipientAddress: "\uBC1B\uB294 \uC8FC\uC18C",
|
|
5959
6023
|
recipientAddressPlaceholder: "\uC9C0\uAC11 \uC8FC\uC18C\uB97C \uC785\uB825\uD558\uC138\uC694",
|
|
6024
|
+
recipientAddressPlaceholderXrpl: "\uC8FC\uC18C \uB610\uB294 \uC8FC\uC18C:\uD0DC\uADF8 \uB97C \uC785\uB825\uD558\uC138\uC694",
|
|
5960
6025
|
amount: "\uAE08\uC561",
|
|
5961
6026
|
amountPlaceholder: "0.00",
|
|
5962
6027
|
balance: "\uC794\uC561",
|
|
5963
6028
|
minimum: "\uCD5C\uC18C",
|
|
5964
6029
|
withdraw: "\uCD9C\uAE08",
|
|
5965
6030
|
invalidAddress: "\uC720\uD6A8\uD55C \uC8FC\uC18C\uB97C \uC785\uB825\uD574 \uC8FC\uC138\uC694",
|
|
6031
|
+
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",
|
|
6032
|
+
memoTag: "\uB370\uC2A4\uD2F0\uB124\uC774\uC158 \uD0DC\uADF8",
|
|
6033
|
+
memoTagPlaceholder: "\uC608: 12345",
|
|
6034
|
+
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",
|
|
6035
|
+
invalidMemoTag: "\uB370\uC2A4\uD2F0\uB124\uC774\uC158 \uD0DC\uADF8\uB294 0\uC5D0\uC11C 4294967295 \uC0AC\uC774\uC758 \uC815\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4",
|
|
5966
6036
|
invalidAmount: "\uC720\uD6A8\uD55C \uAE08\uC561\uC744 \uC785\uB825\uD574 \uC8FC\uC138\uC694",
|
|
5967
6037
|
verifyingAddress: "\uC8FC\uC18C\uB97C \uD655\uC778\uD558\uB294 \uC911...",
|
|
5968
6038
|
loading: "\uB85C\uB529 \uC911...",
|
|
@@ -8980,6 +9050,19 @@ function DepositPollingToasts({
|
|
|
8980
9050
|
);
|
|
8981
9051
|
}
|
|
8982
9052
|
|
|
9053
|
+
// src/components/deposits/card-onramp-session.ts
|
|
9054
|
+
var initialCardOnrampSessionState = {
|
|
9055
|
+
active: null,
|
|
9056
|
+
started: false
|
|
9057
|
+
};
|
|
9058
|
+
function startCardOnrampSession(session) {
|
|
9059
|
+
return { active: session, started: true };
|
|
9060
|
+
}
|
|
9061
|
+
function cardOnrampSessionForView(state, view) {
|
|
9062
|
+
if (view === "review" || state.active === null) return state;
|
|
9063
|
+
return { active: null, started: state.started };
|
|
9064
|
+
}
|
|
9065
|
+
|
|
8983
9066
|
// src/components/deposits/BuyWithCard.tsx
|
|
8984
9067
|
import { jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
8985
9068
|
function formatFiatAmount(value, symbol) {
|
|
@@ -9060,10 +9143,13 @@ function BuyWithCard({
|
|
|
9060
9143
|
const [defaultToken, setDefaultToken] = useState11(null);
|
|
9061
9144
|
const [defaultTokenLoading, setDefaultTokenLoading] = useState11(false);
|
|
9062
9145
|
const { userIpInfo, isLoading: isLoadingIp } = useUserIp();
|
|
9063
|
-
const [onrampSession, setOnrampSession] = useState11(
|
|
9146
|
+
const [onrampSession, setOnrampSession] = useState11(initialCardOnrampSessionState);
|
|
9064
9147
|
const currentView = externalView ?? internalView;
|
|
9065
9148
|
const showQuotesView = currentView === "quotes";
|
|
9066
9149
|
const showReviewView = currentView === "review";
|
|
9150
|
+
useEffect8(() => {
|
|
9151
|
+
setOnrampSession((prev) => cardOnrampSessionForView(prev, currentView));
|
|
9152
|
+
}, [currentView]);
|
|
9067
9153
|
useEffect8(() => {
|
|
9068
9154
|
if (externalView) {
|
|
9069
9155
|
setInternalView(externalView);
|
|
@@ -9215,7 +9301,7 @@ function BuyWithCard({
|
|
|
9215
9301
|
const { executions, isPolling } = useDepositPolling({
|
|
9216
9302
|
userId,
|
|
9217
9303
|
publishableKey,
|
|
9218
|
-
enabled:
|
|
9304
|
+
enabled: onrampSession.started,
|
|
9219
9305
|
depositWalletId,
|
|
9220
9306
|
onDepositSuccess,
|
|
9221
9307
|
onDepositError
|
|
@@ -9508,13 +9594,15 @@ function BuyWithCard({
|
|
|
9508
9594
|
...isDestinationMode ? { destination_amount: destinationAmount } : { source_amount: amount }
|
|
9509
9595
|
};
|
|
9510
9596
|
const sessionStartUrl = getOnrampSessionStartUrl(sessionRequest, publishableKey);
|
|
9511
|
-
setOnrampSession(
|
|
9512
|
-
|
|
9513
|
-
|
|
9514
|
-
|
|
9515
|
-
|
|
9516
|
-
|
|
9517
|
-
|
|
9597
|
+
setOnrampSession(
|
|
9598
|
+
startCardOnrampSession({
|
|
9599
|
+
provider: selectedProvider,
|
|
9600
|
+
sourceCurrency: currency,
|
|
9601
|
+
sourceAmount: amount,
|
|
9602
|
+
sessionUrl: sessionStartUrl,
|
|
9603
|
+
externalId
|
|
9604
|
+
})
|
|
9605
|
+
);
|
|
9518
9606
|
track("flow_started", {
|
|
9519
9607
|
method: "card",
|
|
9520
9608
|
flow_type: "deposit",
|
|
@@ -9970,8 +10058,8 @@ function BuyWithCard({
|
|
|
9970
10058
|
onToggleDetails: () => setShowReviewDetails((prev) => !prev),
|
|
9971
10059
|
onContinue: handleStartOnramp,
|
|
9972
10060
|
continueLabel: strings.common.confirm,
|
|
9973
|
-
continueDisabled: !selectedProvider || !!onrampSession,
|
|
9974
|
-
checking: !!onrampSession,
|
|
10061
|
+
continueDisabled: !selectedProvider || !!onrampSession.active,
|
|
10062
|
+
checking: !!onrampSession.active,
|
|
9975
10063
|
disclaimer: strings.common.intentAddressDisclaimer
|
|
9976
10064
|
}
|
|
9977
10065
|
)
|
|
@@ -19016,6 +19104,11 @@ function useStripeOnramp(stripePublishableKey, isDark = false) {
|
|
|
19016
19104
|
return { coordinator, isLoading, error, initialize };
|
|
19017
19105
|
}
|
|
19018
19106
|
|
|
19107
|
+
// src/components/deposits/stripe-link/normalize-kyc-address.ts
|
|
19108
|
+
function normalizeStripeStateCode(raw) {
|
|
19109
|
+
return raw.replace(/[^a-zA-Z]/g, "").slice(0, 2).toUpperCase();
|
|
19110
|
+
}
|
|
19111
|
+
|
|
19019
19112
|
// src/components/deposits/stripe-link/stripe-session-storage.ts
|
|
19020
19113
|
var STORAGE_PREFIX = "unifold:stripe-link:session";
|
|
19021
19114
|
function storageKey(externalUserId) {
|
|
@@ -20086,7 +20179,7 @@ function PayWithStripeLink({
|
|
|
20086
20179
|
setKycFormMode("name");
|
|
20087
20180
|
return;
|
|
20088
20181
|
}
|
|
20089
|
-
if (!kycForm.addressLine1.trim() || !kycForm.addressCity.trim() ||
|
|
20182
|
+
if (!kycForm.addressLine1.trim() || !kycForm.addressCity.trim() || normalizeStripeStateCode(kycForm.addressState).length !== 2 || !kycForm.addressPostalCode.trim()) {
|
|
20090
20183
|
setError(t.formErrors.enterFullAddress);
|
|
20091
20184
|
return;
|
|
20092
20185
|
}
|
|
@@ -20097,7 +20190,8 @@ function PayWithStripeLink({
|
|
|
20097
20190
|
line1: kycForm.addressLine1,
|
|
20098
20191
|
...kycForm.addressLine2.trim() && { line2: kycForm.addressLine2 },
|
|
20099
20192
|
city: kycForm.addressCity,
|
|
20100
|
-
|
|
20193
|
+
// Stripe requires a 2-letter uppercase code for US/CA (`TX`, not `Tx`).
|
|
20194
|
+
state: normalizeStripeStateCode(kycForm.addressState),
|
|
20101
20195
|
postal_code: kycForm.addressPostalCode,
|
|
20102
20196
|
country: kycForm.addressCountry
|
|
20103
20197
|
}
|
|
@@ -21361,9 +21455,14 @@ function PayWithStripeLink({
|
|
|
21361
21455
|
...NO_AUTOFILL,
|
|
21362
21456
|
type: "text",
|
|
21363
21457
|
value: kycForm.addressState,
|
|
21364
|
-
onChange: (e) => setKycForm((f) => ({
|
|
21458
|
+
onChange: (e) => setKycForm((f) => ({
|
|
21459
|
+
...f,
|
|
21460
|
+
addressState: normalizeStripeStateCode(e.target.value)
|
|
21461
|
+
})),
|
|
21365
21462
|
placeholder: "CA",
|
|
21366
21463
|
maxLength: 2,
|
|
21464
|
+
autoCapitalize: "characters",
|
|
21465
|
+
spellCheck: false,
|
|
21367
21466
|
className: "uf-w-full uf-py-2.5 uf-px-3 uf-bg-transparent uf-outline-none uf-text-sm",
|
|
21368
21467
|
style: inputStyle
|
|
21369
21468
|
}
|
|
@@ -21469,7 +21568,7 @@ function PayWithStripeLink({
|
|
|
21469
21568
|
DepositFooterButton,
|
|
21470
21569
|
{
|
|
21471
21570
|
onClick: kycFormMode === "name" ? handleNameNext : handleKycSubmit,
|
|
21472
|
-
disabled: loading || (kycFormMode === "name" ? !kycForm.givenName || !kycForm.surname : kycFormMode === "address" ? !kycForm.addressLine1 || !kycForm.addressCity ||
|
|
21571
|
+
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),
|
|
21473
21572
|
loading,
|
|
21474
21573
|
className: "uf-flex-1",
|
|
21475
21574
|
children: loading ? t.submitting : strings.common.review
|
|
@@ -35580,6 +35679,32 @@ async function detectBrowserWallet(chainType, senderAddress) {
|
|
|
35580
35679
|
return null;
|
|
35581
35680
|
}
|
|
35582
35681
|
|
|
35682
|
+
// src/lib/xrpl-address.ts
|
|
35683
|
+
var XRPL_BASE58 = "rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz";
|
|
35684
|
+
var CLASSIC_ADDRESS = new RegExp(`^r[${XRPL_BASE58}]{24,34}$`);
|
|
35685
|
+
var X_ADDRESS = new RegExp(`^[XT][${XRPL_BASE58}]{40,50}$`);
|
|
35686
|
+
var MAX_DESTINATION_TAG = 4294967295;
|
|
35687
|
+
function isXrplRecipientShapeValid(input) {
|
|
35688
|
+
const trimmed = input.trim();
|
|
35689
|
+
if (trimmed.length === 0) {
|
|
35690
|
+
return false;
|
|
35691
|
+
}
|
|
35692
|
+
const separatorIndex = trimmed.indexOf(":");
|
|
35693
|
+
if (separatorIndex === -1) {
|
|
35694
|
+
return CLASSIC_ADDRESS.test(trimmed) || X_ADDRESS.test(trimmed);
|
|
35695
|
+
}
|
|
35696
|
+
const address = trimmed.slice(0, separatorIndex);
|
|
35697
|
+
const tag = trimmed.slice(separatorIndex + 1);
|
|
35698
|
+
return isDestinationTagValid(tag) && (CLASSIC_ADDRESS.test(address) || X_ADDRESS.test(address));
|
|
35699
|
+
}
|
|
35700
|
+
function isDestinationTagValid(tag) {
|
|
35701
|
+
if (!/^\d+$/.test(tag)) {
|
|
35702
|
+
return false;
|
|
35703
|
+
}
|
|
35704
|
+
const parsed = Number(tag);
|
|
35705
|
+
return parsed <= MAX_DESTINATION_TAG;
|
|
35706
|
+
}
|
|
35707
|
+
|
|
35583
35708
|
// src/hooks/use-hypercore-withdraw-activation.ts
|
|
35584
35709
|
import { useMemo as useMemo22 } from "react";
|
|
35585
35710
|
import { ActionType as ActionType6 } from "@unifold/core";
|
|
@@ -35754,6 +35879,8 @@ function WithdrawForm({
|
|
|
35754
35879
|
const t = strings.withdrawModal;
|
|
35755
35880
|
const tCrypto = strings.transferCrypto;
|
|
35756
35881
|
const [recipientAddress, setRecipientAddress] = useState47(recipientAddressProp || "");
|
|
35882
|
+
const [memoTag, setMemoTag] = useState47("");
|
|
35883
|
+
const [memoTagRequiredFor, setMemoTagRequiredFor] = useState47(null);
|
|
35757
35884
|
const [amount, setAmount] = useState47("");
|
|
35758
35885
|
const [inputUnit, setInputUnit] = useState47("fiat");
|
|
35759
35886
|
const [isSubmitting, setIsSubmitting] = useState47(false);
|
|
@@ -35772,7 +35899,16 @@ function WithdrawForm({
|
|
|
35772
35899
|
setIsMaxed(false);
|
|
35773
35900
|
}, [balanceData?.balanceBaseUnit]);
|
|
35774
35901
|
const trimmedAddress = recipientAddress.trim();
|
|
35775
|
-
const
|
|
35902
|
+
const trimmedMemoTag = memoTag.trim();
|
|
35903
|
+
const isMemoTagValid = isDestinationTagValid(trimmedMemoTag);
|
|
35904
|
+
const destinationKey = `${selectedChain?.chain_type ?? ""}:${selectedChain?.chain_id ?? ""}:${selectedChain?.token_address ?? ""}`;
|
|
35905
|
+
const recipientKey = `${destinationKey}:${trimmedAddress}`;
|
|
35906
|
+
const memoTagRequired = trimmedAddress.length > 0 && memoTagRequiredFor === recipientKey;
|
|
35907
|
+
const effectiveRecipient = memoTagRequired && isMemoTagValid ? `${trimmedAddress}:${trimmedMemoTag}` : trimmedAddress;
|
|
35908
|
+
const debouncedRecipient = useDebounce(effectiveRecipient, 500);
|
|
35909
|
+
const isXrplDestination = selectedChain?.chain_type === "xrpl";
|
|
35910
|
+
const isXrplRecipientMalformed = isXrplDestination && trimmedAddress.length > 5 && !isXrplRecipientShapeValid(effectiveRecipient);
|
|
35911
|
+
const canVerifyXrplRecipient = !isXrplDestination || isXrplRecipientShapeValid(debouncedRecipient);
|
|
35776
35912
|
const {
|
|
35777
35913
|
data: addressVerification,
|
|
35778
35914
|
isLoading: isVerifyingAddress,
|
|
@@ -35781,16 +35917,36 @@ function WithdrawForm({
|
|
|
35781
35917
|
chainType: selectedChain?.chain_type,
|
|
35782
35918
|
chainId: selectedChain?.chain_id,
|
|
35783
35919
|
tokenAddress: selectedChain?.token_address,
|
|
35784
|
-
recipientAddress:
|
|
35920
|
+
recipientAddress: debouncedRecipient,
|
|
35785
35921
|
publishableKey,
|
|
35786
|
-
enabled:
|
|
35922
|
+
enabled: debouncedRecipient.length > 5 && !!selectedChain && canVerifyXrplRecipient
|
|
35787
35923
|
});
|
|
35788
|
-
const isDebouncing =
|
|
35924
|
+
const isDebouncing = effectiveRecipient !== debouncedRecipient;
|
|
35925
|
+
const verifiedRecipientKey = `${destinationKey}:${debouncedRecipient}`;
|
|
35926
|
+
useEffect45(() => {
|
|
35927
|
+
if (addressVerification?.failure_code === "destination_tag_required") {
|
|
35928
|
+
setMemoTagRequiredFor(verifiedRecipientKey);
|
|
35929
|
+
}
|
|
35930
|
+
}, [addressVerification, verifiedRecipientKey]);
|
|
35931
|
+
useEffect45(() => {
|
|
35932
|
+
setMemoTag("");
|
|
35933
|
+
}, [recipientKey]);
|
|
35934
|
+
const xrplFormatHint = useMemo23(
|
|
35935
|
+
() => interpolate(t.invalidXrplAddress, {
|
|
35936
|
+
chain_name: selectedChain?.chain_name ?? "XRP Ledger"
|
|
35937
|
+
}),
|
|
35938
|
+
[t, selectedChain]
|
|
35939
|
+
);
|
|
35789
35940
|
const addressError = useMemo23(() => {
|
|
35790
35941
|
if (!trimmedAddress || trimmedAddress.length <= 5) return null;
|
|
35942
|
+
if (isXrplRecipientMalformed) return xrplFormatHint;
|
|
35791
35943
|
if (isDebouncing || isVerifyingAddress) return null;
|
|
35792
|
-
if (verifyError) return t.invalidAddress;
|
|
35944
|
+
if (verifyError) return isXrplDestination ? xrplFormatHint : t.invalidAddress;
|
|
35793
35945
|
if (addressVerification && !addressVerification.valid) {
|
|
35946
|
+
if (addressVerification.failure_code === "destination_tag_required")
|
|
35947
|
+
return memoTagRequired ? null : interpolate(tCrypto.addressValidation.errors.destination_tag_required, {
|
|
35948
|
+
chain_name: selectedChain?.chain_name ?? ""
|
|
35949
|
+
});
|
|
35794
35950
|
if (addressVerification.message && addressVerification.message.trim().length > 0) {
|
|
35795
35951
|
return addressVerification.message;
|
|
35796
35952
|
}
|
|
@@ -35803,13 +35959,17 @@ function WithdrawForm({
|
|
|
35803
35959
|
token_symbol: selectedToken?.symbol ?? "",
|
|
35804
35960
|
chain_name: selectedChain?.chain_name ?? ""
|
|
35805
35961
|
});
|
|
35806
|
-
return t.invalidAddress;
|
|
35962
|
+
return isXrplDestination ? xrplFormatHint : t.invalidAddress;
|
|
35807
35963
|
}
|
|
35808
35964
|
return null;
|
|
35809
35965
|
}, [
|
|
35810
35966
|
trimmedAddress,
|
|
35811
35967
|
isDebouncing,
|
|
35812
35968
|
isVerifyingAddress,
|
|
35969
|
+
isXrplDestination,
|
|
35970
|
+
isXrplRecipientMalformed,
|
|
35971
|
+
memoTagRequired,
|
|
35972
|
+
xrplFormatHint,
|
|
35813
35973
|
verifyError,
|
|
35814
35974
|
addressVerification,
|
|
35815
35975
|
selectedChain,
|
|
@@ -35817,6 +35977,7 @@ function WithdrawForm({
|
|
|
35817
35977
|
t,
|
|
35818
35978
|
tCrypto
|
|
35819
35979
|
]);
|
|
35980
|
+
const memoTagError = memoTagRequired && trimmedMemoTag.length > 0 && !isMemoTagValid ? t.invalidMemoTag : null;
|
|
35820
35981
|
const isAddressValid = !isDebouncing && !!addressVerification?.valid && !addressError;
|
|
35821
35982
|
const { showWarning: showActivationWarning, activationFee: effectiveActivationFee } = useHypercoreWithdrawActivation({
|
|
35822
35983
|
userId: externalUserId,
|
|
@@ -35824,7 +35985,7 @@ function WithdrawForm({
|
|
|
35824
35985
|
senderAddress,
|
|
35825
35986
|
sourceChainId,
|
|
35826
35987
|
sourceChainType,
|
|
35827
|
-
recipientAddress:
|
|
35988
|
+
recipientAddress: debouncedRecipient,
|
|
35828
35989
|
destinationChainType: selectedChain?.chain_type,
|
|
35829
35990
|
destinationChainId: selectedChain?.chain_id,
|
|
35830
35991
|
destinationTokenAddress: selectedChain?.token_address,
|
|
@@ -35938,7 +36099,7 @@ function WithdrawForm({
|
|
|
35938
36099
|
const isBalanceBelowMinimum = !isLoadingBalance && minimumWithdrawAmountUsd !== null && Math.round(balanceUsdNum * 100) / 100 < minimumWithdrawAmountUsd;
|
|
35939
36100
|
const isBelowMinimum = minimumWithdrawAmountUsd !== null && fiatAmountFromInput > 0 && Math.round(fiatAmountFromInput * 100) / 100 < minimumWithdrawAmountUsd;
|
|
35940
36101
|
const isOverBalance = inputUnit === "crypto" ? cryptoAmountFromInput > 0 && balanceCrypto > 0 && cryptoAmountFromInput > balanceCrypto : fiatAmountFromInput > 0 && balanceUsdNum > 0 && Math.round(fiatAmountFromInput * 100) / 100 > Math.round(balanceUsdNum * 100) / 100;
|
|
35941
|
-
const isFormValid = trimmedAddress.length > 0 && amount.trim().length > 0 && cryptoAmountFromInput > 0 && isAddressValid && !isBelowMinimum && !isOverBalance && !isBalanceBelowMinimum && !!balanceData;
|
|
36102
|
+
const isFormValid = trimmedAddress.length > 0 && amount.trim().length > 0 && cryptoAmountFromInput > 0 && isAddressValid && !(memoTagRequired && !isMemoTagValid) && !isBelowMinimum && !isOverBalance && !isBalanceBelowMinimum && !!balanceData;
|
|
35942
36103
|
const handleWithdraw = useCallback18(async () => {
|
|
35943
36104
|
if (!selectedToken || !selectedChain) return;
|
|
35944
36105
|
if (!isFormValid) return;
|
|
@@ -35952,7 +36113,7 @@ function WithdrawForm({
|
|
|
35952
36113
|
destinationChainType: selectedChain.chain_type,
|
|
35953
36114
|
destinationChainId: selectedChain.chain_id,
|
|
35954
36115
|
destinationTokenAddress: selectedChain.token_address,
|
|
35955
|
-
recipientAddress:
|
|
36116
|
+
recipientAddress: effectiveRecipient
|
|
35956
36117
|
});
|
|
35957
36118
|
let amountBaseUnit = isMaxed ? balanceData.balanceBaseUnit : computeBaseUnit(
|
|
35958
36119
|
balanceData.balanceBaseUnit,
|
|
@@ -36001,7 +36162,7 @@ function WithdrawForm({
|
|
|
36001
36162
|
amount: humanAmount,
|
|
36002
36163
|
amountBaseUnit,
|
|
36003
36164
|
withdrawIntentAddress: depositWallet.address,
|
|
36004
|
-
recipientAddress:
|
|
36165
|
+
recipientAddress: effectiveRecipient
|
|
36005
36166
|
};
|
|
36006
36167
|
const usdValue = isMaxed ? balanceUsdNum : fiatAmountFromInput;
|
|
36007
36168
|
onWithdrawStarted?.({
|
|
@@ -36038,7 +36199,7 @@ function WithdrawForm({
|
|
|
36038
36199
|
isFormValid,
|
|
36039
36200
|
cryptoAmountFromInput,
|
|
36040
36201
|
sourceDecimals,
|
|
36041
|
-
|
|
36202
|
+
effectiveRecipient,
|
|
36042
36203
|
publishableKey,
|
|
36043
36204
|
onWithdraw,
|
|
36044
36205
|
sourceChainType,
|
|
@@ -36089,7 +36250,7 @@ function WithdrawForm({
|
|
|
36089
36250
|
"input",
|
|
36090
36251
|
{
|
|
36091
36252
|
type: "text",
|
|
36092
|
-
placeholder: t.recipientAddressPlaceholder,
|
|
36253
|
+
placeholder: isXrplDestination ? t.recipientAddressPlaceholderXrpl : t.recipientAddressPlaceholder,
|
|
36093
36254
|
value: recipientAddress,
|
|
36094
36255
|
onChange: (e) => {
|
|
36095
36256
|
setRecipientAddress(e.target.value);
|
|
@@ -36125,7 +36286,7 @@ function WithdrawForm({
|
|
|
36125
36286
|
]
|
|
36126
36287
|
}
|
|
36127
36288
|
),
|
|
36128
|
-
(isDebouncing || isVerifyingAddress) && trimmedAddress.length > 5 && /* @__PURE__ */ jsxs68("div", { className: "uf-flex uf-items-center uf-gap-1.5 uf-mt-1.5", children: [
|
|
36289
|
+
(isDebouncing || isVerifyingAddress) && trimmedAddress.length > 5 && !addressError && /* @__PURE__ */ jsxs68("div", { className: "uf-flex uf-items-center uf-gap-1.5 uf-mt-1.5", children: [
|
|
36129
36290
|
/* @__PURE__ */ jsx79(
|
|
36130
36291
|
Loader213,
|
|
36131
36292
|
{
|
|
@@ -36147,6 +36308,61 @@ function WithdrawForm({
|
|
|
36147
36308
|
/* @__PURE__ */ jsx79("span", { className: "uf-text-xs", style: { color: colors2.error, fontFamily: fonts.regular }, children: addressError })
|
|
36148
36309
|
] })
|
|
36149
36310
|
] }),
|
|
36311
|
+
memoTagRequired && /* @__PURE__ */ jsxs68("div", { children: [
|
|
36312
|
+
/* @__PURE__ */ jsx79(
|
|
36313
|
+
"div",
|
|
36314
|
+
{
|
|
36315
|
+
className: "uf-text-xs uf-mb-1.5",
|
|
36316
|
+
style: { color: components.card.labelColor, fontFamily: fonts.medium },
|
|
36317
|
+
children: t.memoTag
|
|
36318
|
+
}
|
|
36319
|
+
),
|
|
36320
|
+
/* @__PURE__ */ jsx79(
|
|
36321
|
+
"style",
|
|
36322
|
+
{
|
|
36323
|
+
dangerouslySetInnerHTML: {
|
|
36324
|
+
__html: `.uf-withdraw-memo::placeholder { color: ${components.search.placeholderColor}; }`
|
|
36325
|
+
}
|
|
36326
|
+
}
|
|
36327
|
+
),
|
|
36328
|
+
/* @__PURE__ */ jsx79(
|
|
36329
|
+
"input",
|
|
36330
|
+
{
|
|
36331
|
+
type: "text",
|
|
36332
|
+
inputMode: "numeric",
|
|
36333
|
+
placeholder: t.memoTagPlaceholder,
|
|
36334
|
+
value: memoTag,
|
|
36335
|
+
onChange: (e) => {
|
|
36336
|
+
setMemoTag(e.target.value);
|
|
36337
|
+
setSubmitError(null);
|
|
36338
|
+
},
|
|
36339
|
+
className: "uf-withdraw-memo uf-w-full uf-px-3 uf-py-2.5 uf-text-sm uf-outline-none",
|
|
36340
|
+
style: {
|
|
36341
|
+
backgroundColor: components.search.backgroundColor,
|
|
36342
|
+
borderRadius: components.input.borderRadius,
|
|
36343
|
+
border: `${components.input.borderWidth}px solid ${memoTagError ? colors2.error : components.input.borderColor}`,
|
|
36344
|
+
color: components.search.inputColor,
|
|
36345
|
+
fontFamily: fonts.regular
|
|
36346
|
+
}
|
|
36347
|
+
}
|
|
36348
|
+
),
|
|
36349
|
+
/* @__PURE__ */ jsxs68("div", { className: "uf-flex uf-items-center uf-gap-1.5 uf-mt-1.5", children: [
|
|
36350
|
+
memoTagError && /* @__PURE__ */ jsx79(AlertTriangle7, { className: "uf-w-3 uf-h-3", style: { color: colors2.error } }),
|
|
36351
|
+
/* @__PURE__ */ jsx79(
|
|
36352
|
+
"span",
|
|
36353
|
+
{
|
|
36354
|
+
className: "uf-text-xs",
|
|
36355
|
+
style: {
|
|
36356
|
+
color: memoTagError ? colors2.error : colors2.foregroundMuted,
|
|
36357
|
+
fontFamily: fonts.regular
|
|
36358
|
+
},
|
|
36359
|
+
children: memoTagError ?? interpolate(t.memoTagRequiredHint, {
|
|
36360
|
+
chain_name: selectedChain?.chain_name ?? "XRP Ledger"
|
|
36361
|
+
})
|
|
36362
|
+
}
|
|
36363
|
+
)
|
|
36364
|
+
] })
|
|
36365
|
+
] }),
|
|
36150
36366
|
/* @__PURE__ */ jsxs68("div", { children: [
|
|
36151
36367
|
/* @__PURE__ */ jsxs68(
|
|
36152
36368
|
"div",
|
|
@@ -37464,7 +37680,1062 @@ function WithdrawTokenSelector({ tokens, onSelect, onBack }) {
|
|
|
37464
37680
|
) })
|
|
37465
37681
|
] });
|
|
37466
37682
|
}
|
|
37683
|
+
|
|
37684
|
+
// src/lib/countries/countries.ts
|
|
37685
|
+
var COUNTRIES = [
|
|
37686
|
+
{ alpha2: "AD", name: "Andorra", dialCode: "376" },
|
|
37687
|
+
{ alpha2: "AE", name: "United Arab Emirates", dialCode: "971" },
|
|
37688
|
+
{ alpha2: "AF", name: "Afghanistan", dialCode: "93" },
|
|
37689
|
+
{ alpha2: "AG", name: "Antigua and Barbuda", dialCode: "1" },
|
|
37690
|
+
{ alpha2: "AI", name: "Anguilla", dialCode: "1" },
|
|
37691
|
+
{ alpha2: "AL", name: "Albania", dialCode: "355" },
|
|
37692
|
+
{ alpha2: "AM", name: "Armenia", dialCode: "374" },
|
|
37693
|
+
{ alpha2: "AO", name: "Angola", dialCode: "244" },
|
|
37694
|
+
{ alpha2: "AQ", name: "Antarctica" },
|
|
37695
|
+
{ alpha2: "AR", name: "Argentina", dialCode: "54" },
|
|
37696
|
+
{ alpha2: "AS", name: "American Samoa", dialCode: "1" },
|
|
37697
|
+
{ alpha2: "AT", name: "Austria", dialCode: "43" },
|
|
37698
|
+
{ alpha2: "AU", name: "Australia", dialCode: "61" },
|
|
37699
|
+
{ alpha2: "AW", name: "Aruba", dialCode: "297" },
|
|
37700
|
+
{ alpha2: "AX", name: "\xC5land Islands", dialCode: "358" },
|
|
37701
|
+
{ alpha2: "AZ", name: "Azerbaijan", dialCode: "994" },
|
|
37702
|
+
{ alpha2: "BA", name: "Bosnia and Herzegovina", dialCode: "387" },
|
|
37703
|
+
{ alpha2: "BB", name: "Barbados", dialCode: "1" },
|
|
37704
|
+
{ alpha2: "BD", name: "Bangladesh", dialCode: "880" },
|
|
37705
|
+
{ alpha2: "BE", name: "Belgium", dialCode: "32" },
|
|
37706
|
+
{ alpha2: "BF", name: "Burkina Faso", dialCode: "226" },
|
|
37707
|
+
{ alpha2: "BG", name: "Bulgaria", dialCode: "359" },
|
|
37708
|
+
{ alpha2: "BH", name: "Bahrain", dialCode: "973" },
|
|
37709
|
+
{ alpha2: "BI", name: "Burundi", dialCode: "257" },
|
|
37710
|
+
{ alpha2: "BJ", name: "Benin", dialCode: "229" },
|
|
37711
|
+
{ alpha2: "BL", name: "Saint Barth\xE9lemy", dialCode: "590" },
|
|
37712
|
+
{ alpha2: "BM", name: "Bermuda", dialCode: "1" },
|
|
37713
|
+
{ alpha2: "BN", name: "Brunei", dialCode: "673" },
|
|
37714
|
+
{ alpha2: "BO", name: "Bolivia", dialCode: "591" },
|
|
37715
|
+
{ alpha2: "BQ", name: "Bonaire, Sint Eustatius and Saba", dialCode: "599" },
|
|
37716
|
+
{ alpha2: "BR", name: "Brazil", dialCode: "55" },
|
|
37717
|
+
{ alpha2: "BS", name: "Bahamas", dialCode: "1" },
|
|
37718
|
+
{ alpha2: "BT", name: "Bhutan", dialCode: "975" },
|
|
37719
|
+
{ alpha2: "BV", name: "Bouvet Island" },
|
|
37720
|
+
{ alpha2: "BW", name: "Botswana", dialCode: "267" },
|
|
37721
|
+
{ alpha2: "BY", name: "Belarus", dialCode: "375" },
|
|
37722
|
+
{ alpha2: "BZ", name: "Belize", dialCode: "501" },
|
|
37723
|
+
{ alpha2: "CA", name: "Canada", dialCode: "1" },
|
|
37724
|
+
{ alpha2: "CC", name: "Cocos (Keeling) Islands", dialCode: "61" },
|
|
37725
|
+
{ alpha2: "CD", name: "Congo (Democratic Republic)", dialCode: "243" },
|
|
37726
|
+
{ alpha2: "CF", name: "Central African Republic", dialCode: "236" },
|
|
37727
|
+
{ alpha2: "CG", name: "Congo (Republic)", dialCode: "242" },
|
|
37728
|
+
{ alpha2: "CH", name: "Switzerland", dialCode: "41" },
|
|
37729
|
+
{ alpha2: "CI", name: "C\xF4te d'Ivoire", dialCode: "225" },
|
|
37730
|
+
{ alpha2: "CK", name: "Cook Islands", dialCode: "682" },
|
|
37731
|
+
{ alpha2: "CL", name: "Chile", dialCode: "56" },
|
|
37732
|
+
{ alpha2: "CM", name: "Cameroon", dialCode: "237" },
|
|
37733
|
+
{ alpha2: "CN", name: "China", dialCode: "86" },
|
|
37734
|
+
{ alpha2: "CO", name: "Colombia", dialCode: "57" },
|
|
37735
|
+
{ alpha2: "CR", name: "Costa Rica", dialCode: "506" },
|
|
37736
|
+
{ alpha2: "CU", name: "Cuba", dialCode: "53" },
|
|
37737
|
+
{ alpha2: "CV", name: "Cabo Verde", dialCode: "238" },
|
|
37738
|
+
{ alpha2: "CW", name: "Cura\xE7ao", dialCode: "599" },
|
|
37739
|
+
{ alpha2: "CX", name: "Christmas Island", dialCode: "61" },
|
|
37740
|
+
{ alpha2: "CY", name: "Cyprus", dialCode: "357" },
|
|
37741
|
+
{ alpha2: "CZ", name: "Czech Republic", dialCode: "420" },
|
|
37742
|
+
{ alpha2: "DE", name: "Germany", dialCode: "49" },
|
|
37743
|
+
{ alpha2: "DJ", name: "Djibouti", dialCode: "253" },
|
|
37744
|
+
{ alpha2: "DK", name: "Denmark", dialCode: "45" },
|
|
37745
|
+
{ alpha2: "DM", name: "Dominica", dialCode: "1" },
|
|
37746
|
+
{ alpha2: "DO", name: "Dominican Republic", dialCode: "1" },
|
|
37747
|
+
{ alpha2: "DZ", name: "Algeria", dialCode: "213" },
|
|
37748
|
+
{ alpha2: "EC", name: "Ecuador", dialCode: "593" },
|
|
37749
|
+
{ alpha2: "EE", name: "Estonia", dialCode: "372" },
|
|
37750
|
+
{ alpha2: "EG", name: "Egypt", dialCode: "20" },
|
|
37751
|
+
{ alpha2: "EH", name: "Western Sahara", dialCode: "212" },
|
|
37752
|
+
{ alpha2: "ER", name: "Eritrea", dialCode: "291" },
|
|
37753
|
+
{ alpha2: "ES", name: "Spain", dialCode: "34" },
|
|
37754
|
+
{ alpha2: "ET", name: "Ethiopia", dialCode: "251" },
|
|
37755
|
+
{ alpha2: "FI", name: "Finland", dialCode: "358" },
|
|
37756
|
+
{ alpha2: "FJ", name: "Fiji", dialCode: "679" },
|
|
37757
|
+
{ alpha2: "FK", name: "Falkland Islands", dialCode: "500" },
|
|
37758
|
+
{ alpha2: "FM", name: "Micronesia", dialCode: "691" },
|
|
37759
|
+
{ alpha2: "FO", name: "Faroe Islands", dialCode: "298" },
|
|
37760
|
+
{ alpha2: "FR", name: "France", dialCode: "33" },
|
|
37761
|
+
{ alpha2: "GA", name: "Gabon", dialCode: "241" },
|
|
37762
|
+
{ alpha2: "GB", name: "United Kingdom", dialCode: "44" },
|
|
37763
|
+
{ alpha2: "GD", name: "Grenada", dialCode: "1" },
|
|
37764
|
+
{ alpha2: "GE", name: "Georgia", dialCode: "995" },
|
|
37765
|
+
{ alpha2: "GF", name: "French Guiana", dialCode: "594" },
|
|
37766
|
+
{ alpha2: "GG", name: "Guernsey", dialCode: "44" },
|
|
37767
|
+
{ alpha2: "GH", name: "Ghana", dialCode: "233" },
|
|
37768
|
+
{ alpha2: "GI", name: "Gibraltar", dialCode: "350" },
|
|
37769
|
+
{ alpha2: "GL", name: "Greenland", dialCode: "299" },
|
|
37770
|
+
{ alpha2: "GM", name: "Gambia", dialCode: "220" },
|
|
37771
|
+
{ alpha2: "GN", name: "Guinea", dialCode: "224" },
|
|
37772
|
+
{ alpha2: "GP", name: "Guadeloupe", dialCode: "590" },
|
|
37773
|
+
{ alpha2: "GQ", name: "Equatorial Guinea", dialCode: "240" },
|
|
37774
|
+
{ alpha2: "GR", name: "Greece", dialCode: "30" },
|
|
37775
|
+
{ alpha2: "GS", name: "South Georgia and the South Sandwich Islands" },
|
|
37776
|
+
{ alpha2: "GT", name: "Guatemala", dialCode: "502" },
|
|
37777
|
+
{ alpha2: "GU", name: "Guam", dialCode: "1" },
|
|
37778
|
+
{ alpha2: "GW", name: "Guinea-Bissau", dialCode: "245" },
|
|
37779
|
+
{ alpha2: "GY", name: "Guyana", dialCode: "592" },
|
|
37780
|
+
{ alpha2: "HK", name: "Hong Kong", dialCode: "852" },
|
|
37781
|
+
{ alpha2: "HM", name: "Heard Island and McDonald Islands" },
|
|
37782
|
+
{ alpha2: "HN", name: "Honduras", dialCode: "504" },
|
|
37783
|
+
{ alpha2: "HR", name: "Croatia", dialCode: "385" },
|
|
37784
|
+
{ alpha2: "HT", name: "Haiti", dialCode: "509" },
|
|
37785
|
+
{ alpha2: "HU", name: "Hungary", dialCode: "36" },
|
|
37786
|
+
{ alpha2: "ID", name: "Indonesia", dialCode: "62" },
|
|
37787
|
+
{ alpha2: "IE", name: "Ireland", dialCode: "353" },
|
|
37788
|
+
{ alpha2: "IL", name: "Israel", dialCode: "972" },
|
|
37789
|
+
{ alpha2: "IM", name: "Isle of Man", dialCode: "44" },
|
|
37790
|
+
{ alpha2: "IN", name: "India", dialCode: "91" },
|
|
37791
|
+
{ alpha2: "IO", name: "British Indian Ocean Territory", dialCode: "246" },
|
|
37792
|
+
{ alpha2: "IQ", name: "Iraq", dialCode: "964" },
|
|
37793
|
+
{ alpha2: "IR", name: "Iran", dialCode: "98" },
|
|
37794
|
+
{ alpha2: "IS", name: "Iceland", dialCode: "354" },
|
|
37795
|
+
{ alpha2: "IT", name: "Italy", dialCode: "39" },
|
|
37796
|
+
{ alpha2: "JE", name: "Jersey", dialCode: "44" },
|
|
37797
|
+
{ alpha2: "JM", name: "Jamaica", dialCode: "1" },
|
|
37798
|
+
{ alpha2: "JO", name: "Jordan", dialCode: "962" },
|
|
37799
|
+
{ alpha2: "JP", name: "Japan", dialCode: "81" },
|
|
37800
|
+
{ alpha2: "KE", name: "Kenya", dialCode: "254" },
|
|
37801
|
+
{ alpha2: "KG", name: "Kyrgyzstan", dialCode: "996" },
|
|
37802
|
+
{ alpha2: "KH", name: "Cambodia", dialCode: "855" },
|
|
37803
|
+
{ alpha2: "KI", name: "Kiribati", dialCode: "686" },
|
|
37804
|
+
{ alpha2: "KM", name: "Comoros", dialCode: "269" },
|
|
37805
|
+
{ alpha2: "KN", name: "Saint Kitts and Nevis", dialCode: "1" },
|
|
37806
|
+
{ alpha2: "KP", name: "North Korea", dialCode: "850" },
|
|
37807
|
+
{ alpha2: "KR", name: "South Korea", dialCode: "82" },
|
|
37808
|
+
{ alpha2: "KW", name: "Kuwait", dialCode: "965" },
|
|
37809
|
+
{ alpha2: "KY", name: "Cayman Islands", dialCode: "1" },
|
|
37810
|
+
{ alpha2: "KZ", name: "Kazakhstan", dialCode: "7" },
|
|
37811
|
+
{ alpha2: "LA", name: "Laos", dialCode: "856" },
|
|
37812
|
+
{ alpha2: "LB", name: "Lebanon", dialCode: "961" },
|
|
37813
|
+
{ alpha2: "LC", name: "Saint Lucia", dialCode: "1" },
|
|
37814
|
+
{ alpha2: "LI", name: "Liechtenstein", dialCode: "423" },
|
|
37815
|
+
{ alpha2: "LK", name: "Sri Lanka", dialCode: "94" },
|
|
37816
|
+
{ alpha2: "LR", name: "Liberia", dialCode: "231" },
|
|
37817
|
+
{ alpha2: "LS", name: "Lesotho", dialCode: "266" },
|
|
37818
|
+
{ alpha2: "LT", name: "Lithuania", dialCode: "370" },
|
|
37819
|
+
{ alpha2: "LU", name: "Luxembourg", dialCode: "352" },
|
|
37820
|
+
{ alpha2: "LV", name: "Latvia", dialCode: "371" },
|
|
37821
|
+
{ alpha2: "LY", name: "Libya", dialCode: "218" },
|
|
37822
|
+
{ alpha2: "MA", name: "Morocco", dialCode: "212" },
|
|
37823
|
+
{ alpha2: "MC", name: "Monaco", dialCode: "377" },
|
|
37824
|
+
{ alpha2: "MD", name: "Moldova", dialCode: "373" },
|
|
37825
|
+
{ alpha2: "ME", name: "Montenegro", dialCode: "382" },
|
|
37826
|
+
{ alpha2: "MF", name: "Saint Martin (French part)", dialCode: "590" },
|
|
37827
|
+
{ alpha2: "MG", name: "Madagascar", dialCode: "261" },
|
|
37828
|
+
{ alpha2: "MH", name: "Marshall Islands", dialCode: "692" },
|
|
37829
|
+
{ alpha2: "MK", name: "North Macedonia", dialCode: "389" },
|
|
37830
|
+
{ alpha2: "ML", name: "Mali", dialCode: "223" },
|
|
37831
|
+
{ alpha2: "MM", name: "Myanmar", dialCode: "95" },
|
|
37832
|
+
{ alpha2: "MN", name: "Mongolia", dialCode: "976" },
|
|
37833
|
+
{ alpha2: "MO", name: "Macao", dialCode: "853" },
|
|
37834
|
+
{ alpha2: "MP", name: "Northern Mariana Islands", dialCode: "1" },
|
|
37835
|
+
{ alpha2: "MQ", name: "Martinique", dialCode: "596" },
|
|
37836
|
+
{ alpha2: "MR", name: "Mauritania", dialCode: "222" },
|
|
37837
|
+
{ alpha2: "MS", name: "Montserrat", dialCode: "1" },
|
|
37838
|
+
{ alpha2: "MT", name: "Malta", dialCode: "356" },
|
|
37839
|
+
{ alpha2: "MU", name: "Mauritius", dialCode: "230" },
|
|
37840
|
+
{ alpha2: "MV", name: "Maldives", dialCode: "960" },
|
|
37841
|
+
{ alpha2: "MW", name: "Malawi", dialCode: "265" },
|
|
37842
|
+
{ alpha2: "MX", name: "Mexico", dialCode: "52" },
|
|
37843
|
+
{ alpha2: "MY", name: "Malaysia", dialCode: "60" },
|
|
37844
|
+
{ alpha2: "MZ", name: "Mozambique", dialCode: "258" },
|
|
37845
|
+
{ alpha2: "NA", name: "Namibia", dialCode: "264" },
|
|
37846
|
+
{ alpha2: "NC", name: "New Caledonia", dialCode: "687" },
|
|
37847
|
+
{ alpha2: "NE", name: "Niger", dialCode: "227" },
|
|
37848
|
+
{ alpha2: "NF", name: "Norfolk Island", dialCode: "672" },
|
|
37849
|
+
{ alpha2: "NG", name: "Nigeria", dialCode: "234" },
|
|
37850
|
+
{ alpha2: "NI", name: "Nicaragua", dialCode: "505" },
|
|
37851
|
+
{ alpha2: "NL", name: "Netherlands", dialCode: "31" },
|
|
37852
|
+
{ alpha2: "NO", name: "Norway", dialCode: "47" },
|
|
37853
|
+
{ alpha2: "NP", name: "Nepal", dialCode: "977" },
|
|
37854
|
+
{ alpha2: "NR", name: "Nauru", dialCode: "674" },
|
|
37855
|
+
{ alpha2: "NU", name: "Niue", dialCode: "683" },
|
|
37856
|
+
{ alpha2: "NZ", name: "New Zealand", dialCode: "64" },
|
|
37857
|
+
{ alpha2: "OM", name: "Oman", dialCode: "968" },
|
|
37858
|
+
{ alpha2: "PA", name: "Panama", dialCode: "507" },
|
|
37859
|
+
{ alpha2: "PE", name: "Peru", dialCode: "51" },
|
|
37860
|
+
{ alpha2: "PF", name: "French Polynesia", dialCode: "689" },
|
|
37861
|
+
{ alpha2: "PG", name: "Papua New Guinea", dialCode: "675" },
|
|
37862
|
+
{ alpha2: "PH", name: "Philippines", dialCode: "63" },
|
|
37863
|
+
{ alpha2: "PK", name: "Pakistan", dialCode: "92" },
|
|
37864
|
+
{ alpha2: "PL", name: "Poland", dialCode: "48" },
|
|
37865
|
+
{ alpha2: "PM", name: "Saint Pierre and Miquelon", dialCode: "508" },
|
|
37866
|
+
{ alpha2: "PN", name: "Pitcairn", dialCode: "64" },
|
|
37867
|
+
{ alpha2: "PR", name: "Puerto Rico", dialCode: "1" },
|
|
37868
|
+
{ alpha2: "PS", name: "Palestine", dialCode: "970" },
|
|
37869
|
+
{ alpha2: "PT", name: "Portugal", dialCode: "351" },
|
|
37870
|
+
{ alpha2: "PW", name: "Palau", dialCode: "680" },
|
|
37871
|
+
{ alpha2: "PY", name: "Paraguay", dialCode: "595" },
|
|
37872
|
+
{ alpha2: "QA", name: "Qatar", dialCode: "974" },
|
|
37873
|
+
{ alpha2: "RE", name: "R\xE9union", dialCode: "262" },
|
|
37874
|
+
{ alpha2: "RO", name: "Romania", dialCode: "40" },
|
|
37875
|
+
{ alpha2: "RS", name: "Serbia", dialCode: "381" },
|
|
37876
|
+
{ alpha2: "RU", name: "Russia", dialCode: "7" },
|
|
37877
|
+
{ alpha2: "RW", name: "Rwanda", dialCode: "250" },
|
|
37878
|
+
{ alpha2: "SA", name: "Saudi Arabia", dialCode: "966" },
|
|
37879
|
+
{ alpha2: "SB", name: "Solomon Islands", dialCode: "677" },
|
|
37880
|
+
{ alpha2: "SC", name: "Seychelles", dialCode: "248" },
|
|
37881
|
+
{ alpha2: "SD", name: "Sudan", dialCode: "249" },
|
|
37882
|
+
{ alpha2: "SE", name: "Sweden", dialCode: "46" },
|
|
37883
|
+
{ alpha2: "SG", name: "Singapore", dialCode: "65" },
|
|
37884
|
+
{ alpha2: "SH", name: "Saint Helena, Ascension and Tristan da Cunha", dialCode: "290" },
|
|
37885
|
+
{ alpha2: "SI", name: "Slovenia", dialCode: "386" },
|
|
37886
|
+
{ alpha2: "SJ", name: "Svalbard and Jan Mayen", dialCode: "47" },
|
|
37887
|
+
{ alpha2: "SK", name: "Slovakia", dialCode: "421" },
|
|
37888
|
+
{ alpha2: "SL", name: "Sierra Leone", dialCode: "232" },
|
|
37889
|
+
{ alpha2: "SM", name: "San Marino", dialCode: "378" },
|
|
37890
|
+
{ alpha2: "SN", name: "Senegal", dialCode: "221" },
|
|
37891
|
+
{ alpha2: "SO", name: "Somalia", dialCode: "252" },
|
|
37892
|
+
{ alpha2: "SR", name: "Suriname", dialCode: "597" },
|
|
37893
|
+
{ alpha2: "SS", name: "South Sudan", dialCode: "211" },
|
|
37894
|
+
{ alpha2: "ST", name: "Sao Tome and Principe", dialCode: "239" },
|
|
37895
|
+
{ alpha2: "SV", name: "El Salvador", dialCode: "503" },
|
|
37896
|
+
{ alpha2: "SX", name: "Sint Maarten (Dutch part)", dialCode: "1" },
|
|
37897
|
+
{ alpha2: "SY", name: "Syria", dialCode: "963" },
|
|
37898
|
+
{ alpha2: "SZ", name: "Eswatini", dialCode: "268" },
|
|
37899
|
+
{ alpha2: "TC", name: "Turks and Caicos Islands", dialCode: "1" },
|
|
37900
|
+
{ alpha2: "TD", name: "Chad", dialCode: "235" },
|
|
37901
|
+
{ alpha2: "TF", name: "French Southern Territories" },
|
|
37902
|
+
{ alpha2: "TG", name: "Togo", dialCode: "228" },
|
|
37903
|
+
{ alpha2: "TH", name: "Thailand", dialCode: "66" },
|
|
37904
|
+
{ alpha2: "TJ", name: "Tajikistan", dialCode: "992" },
|
|
37905
|
+
{ alpha2: "TK", name: "Tokelau", dialCode: "690" },
|
|
37906
|
+
{ alpha2: "TL", name: "Timor-Leste", dialCode: "670" },
|
|
37907
|
+
{ alpha2: "TM", name: "Turkmenistan", dialCode: "993" },
|
|
37908
|
+
{ alpha2: "TN", name: "Tunisia", dialCode: "216" },
|
|
37909
|
+
{ alpha2: "TO", name: "Tonga", dialCode: "676" },
|
|
37910
|
+
{ alpha2: "TR", name: "T\xFCrkiye", dialCode: "90" },
|
|
37911
|
+
{ alpha2: "TT", name: "Trinidad and Tobago", dialCode: "1" },
|
|
37912
|
+
{ alpha2: "TV", name: "Tuvalu", dialCode: "688" },
|
|
37913
|
+
{ alpha2: "TW", name: "Taiwan", dialCode: "886" },
|
|
37914
|
+
{ alpha2: "TZ", name: "Tanzania", dialCode: "255" },
|
|
37915
|
+
{ alpha2: "UA", name: "Ukraine", dialCode: "380" },
|
|
37916
|
+
{ alpha2: "UG", name: "Uganda", dialCode: "256" },
|
|
37917
|
+
{ alpha2: "UM", name: "U.S. Minor Outlying Islands" },
|
|
37918
|
+
{ alpha2: "US", name: "United States", dialCode: "1" },
|
|
37919
|
+
{ alpha2: "UY", name: "Uruguay", dialCode: "598" },
|
|
37920
|
+
{ alpha2: "UZ", name: "Uzbekistan", dialCode: "998" },
|
|
37921
|
+
{ alpha2: "VA", name: "Vatican City", dialCode: "39" },
|
|
37922
|
+
{ alpha2: "VC", name: "Saint Vincent and the Grenadines", dialCode: "1" },
|
|
37923
|
+
{ alpha2: "VE", name: "Venezuela", dialCode: "58" },
|
|
37924
|
+
{ alpha2: "VG", name: "British Virgin Islands", dialCode: "1" },
|
|
37925
|
+
{ alpha2: "VI", name: "U.S. Virgin Islands", dialCode: "1" },
|
|
37926
|
+
{ alpha2: "VN", name: "Vietnam", dialCode: "84" },
|
|
37927
|
+
{ alpha2: "VU", name: "Vanuatu", dialCode: "678" },
|
|
37928
|
+
{ alpha2: "WF", name: "Wallis and Futuna", dialCode: "681" },
|
|
37929
|
+
{ alpha2: "WS", name: "Samoa", dialCode: "685" },
|
|
37930
|
+
{ alpha2: "YE", name: "Yemen", dialCode: "967" },
|
|
37931
|
+
{ alpha2: "YT", name: "Mayotte", dialCode: "262" },
|
|
37932
|
+
{ alpha2: "ZA", name: "South Africa", dialCode: "27" },
|
|
37933
|
+
{ alpha2: "ZM", name: "Zambia", dialCode: "260" },
|
|
37934
|
+
{ alpha2: "ZW", name: "Zimbabwe", dialCode: "263" }
|
|
37935
|
+
];
|
|
37936
|
+
var BY_ALPHA2 = new Map(COUNTRIES.map((c) => [c.alpha2, c]));
|
|
37937
|
+
var ALL_COUNTRIES = [...COUNTRIES].sort(
|
|
37938
|
+
(a, b) => a.name.localeCompare(b.name)
|
|
37939
|
+
);
|
|
37940
|
+
function findCountry(code) {
|
|
37941
|
+
const upper = (code ?? "").trim().toUpperCase();
|
|
37942
|
+
return upper.length === 2 ? BY_ALPHA2.get(upper) : void 0;
|
|
37943
|
+
}
|
|
37944
|
+
function toAlpha2(code) {
|
|
37945
|
+
return findCountry(code)?.alpha2;
|
|
37946
|
+
}
|
|
37947
|
+
function countryName(code) {
|
|
37948
|
+
return findCountry(code)?.name ?? code;
|
|
37949
|
+
}
|
|
37950
|
+
function dialCode(code) {
|
|
37951
|
+
return findCountry(code)?.dialCode;
|
|
37952
|
+
}
|
|
37953
|
+
|
|
37954
|
+
// src/lib/countries/groups.ts
|
|
37955
|
+
var US = ["US"];
|
|
37956
|
+
var CANADA = ["CA"];
|
|
37957
|
+
var UK = ["GB"];
|
|
37958
|
+
var EU = [
|
|
37959
|
+
"AT",
|
|
37960
|
+
"BE",
|
|
37961
|
+
"BG",
|
|
37962
|
+
"HR",
|
|
37963
|
+
"CY",
|
|
37964
|
+
"CZ",
|
|
37965
|
+
"DK",
|
|
37966
|
+
"EE",
|
|
37967
|
+
"FI",
|
|
37968
|
+
"FR",
|
|
37969
|
+
"DE",
|
|
37970
|
+
"GR",
|
|
37971
|
+
"HU",
|
|
37972
|
+
"IE",
|
|
37973
|
+
"IT",
|
|
37974
|
+
"LV",
|
|
37975
|
+
"LT",
|
|
37976
|
+
"LU",
|
|
37977
|
+
"MT",
|
|
37978
|
+
"NL",
|
|
37979
|
+
"PL",
|
|
37980
|
+
"PT",
|
|
37981
|
+
"RO",
|
|
37982
|
+
"SK",
|
|
37983
|
+
"SI",
|
|
37984
|
+
"ES",
|
|
37985
|
+
"SE"
|
|
37986
|
+
];
|
|
37987
|
+
var EEA = [...EU, "IS", "LI", "NO"];
|
|
37988
|
+
var EUROPE = [
|
|
37989
|
+
...EEA,
|
|
37990
|
+
...UK,
|
|
37991
|
+
"CH",
|
|
37992
|
+
"AD",
|
|
37993
|
+
"MC",
|
|
37994
|
+
"SM",
|
|
37995
|
+
"VA",
|
|
37996
|
+
"GI",
|
|
37997
|
+
"GG",
|
|
37998
|
+
"JE",
|
|
37999
|
+
"IM",
|
|
38000
|
+
"FO",
|
|
38001
|
+
"AX",
|
|
38002
|
+
"SJ",
|
|
38003
|
+
"GL",
|
|
38004
|
+
"PM",
|
|
38005
|
+
"AL",
|
|
38006
|
+
"BA",
|
|
38007
|
+
"ME",
|
|
38008
|
+
"MK",
|
|
38009
|
+
"RS",
|
|
38010
|
+
"MD",
|
|
38011
|
+
"UA",
|
|
38012
|
+
"BY",
|
|
38013
|
+
"RU",
|
|
38014
|
+
"GE",
|
|
38015
|
+
"AM",
|
|
38016
|
+
"AZ",
|
|
38017
|
+
"TR"
|
|
38018
|
+
];
|
|
38019
|
+
var INDIA = ["IN"];
|
|
38020
|
+
var SEA = ["BN", "KH", "ID", "LA", "MY", "MM", "PH", "SG", "TH", "VN", "TL"];
|
|
38021
|
+
var ASIA = [
|
|
38022
|
+
...SEA,
|
|
38023
|
+
...INDIA,
|
|
38024
|
+
"CN",
|
|
38025
|
+
"HK",
|
|
38026
|
+
"MO",
|
|
38027
|
+
"TW",
|
|
38028
|
+
"JP",
|
|
38029
|
+
"KR",
|
|
38030
|
+
"KP",
|
|
38031
|
+
"MN",
|
|
38032
|
+
"PK",
|
|
38033
|
+
"BD",
|
|
38034
|
+
"LK",
|
|
38035
|
+
"NP",
|
|
38036
|
+
"BT",
|
|
38037
|
+
"MV",
|
|
38038
|
+
"AF",
|
|
38039
|
+
"KZ",
|
|
38040
|
+
"KG",
|
|
38041
|
+
"TJ",
|
|
38042
|
+
"TM",
|
|
38043
|
+
"UZ"
|
|
38044
|
+
];
|
|
38045
|
+
var MENA = [
|
|
38046
|
+
"AE",
|
|
38047
|
+
"SA",
|
|
38048
|
+
"QA",
|
|
38049
|
+
"KW",
|
|
38050
|
+
"BH",
|
|
38051
|
+
"OM",
|
|
38052
|
+
"YE",
|
|
38053
|
+
"IQ",
|
|
38054
|
+
"IR",
|
|
38055
|
+
"IL",
|
|
38056
|
+
"PS",
|
|
38057
|
+
"JO",
|
|
38058
|
+
"LB",
|
|
38059
|
+
"SY",
|
|
38060
|
+
"EG",
|
|
38061
|
+
"LY",
|
|
38062
|
+
"TN",
|
|
38063
|
+
"DZ",
|
|
38064
|
+
"MA",
|
|
38065
|
+
"EH"
|
|
38066
|
+
];
|
|
38067
|
+
var AFRICA = [
|
|
38068
|
+
"AO",
|
|
38069
|
+
"BJ",
|
|
38070
|
+
"BW",
|
|
38071
|
+
"BF",
|
|
38072
|
+
"BI",
|
|
38073
|
+
"CV",
|
|
38074
|
+
"CM",
|
|
38075
|
+
"CF",
|
|
38076
|
+
"TD",
|
|
38077
|
+
"KM",
|
|
38078
|
+
"CD",
|
|
38079
|
+
"CG",
|
|
38080
|
+
"CI",
|
|
38081
|
+
"DJ",
|
|
38082
|
+
"GQ",
|
|
38083
|
+
"ER",
|
|
38084
|
+
"SZ",
|
|
38085
|
+
"ET",
|
|
38086
|
+
"GA",
|
|
38087
|
+
"GM",
|
|
38088
|
+
"GH",
|
|
38089
|
+
"GN",
|
|
38090
|
+
"GW",
|
|
38091
|
+
"KE",
|
|
38092
|
+
"LS",
|
|
38093
|
+
"LR",
|
|
38094
|
+
"MG",
|
|
38095
|
+
"MW",
|
|
38096
|
+
"ML",
|
|
38097
|
+
"MR",
|
|
38098
|
+
"MU",
|
|
38099
|
+
"YT",
|
|
38100
|
+
"MZ",
|
|
38101
|
+
"NA",
|
|
38102
|
+
"NE",
|
|
38103
|
+
"NG",
|
|
38104
|
+
"RE",
|
|
38105
|
+
"RW",
|
|
38106
|
+
"SH",
|
|
38107
|
+
"ST",
|
|
38108
|
+
"SN",
|
|
38109
|
+
"SC",
|
|
38110
|
+
"SL",
|
|
38111
|
+
"SO",
|
|
38112
|
+
"ZA",
|
|
38113
|
+
"SS",
|
|
38114
|
+
"SD",
|
|
38115
|
+
"TZ",
|
|
38116
|
+
"TG",
|
|
38117
|
+
"UG",
|
|
38118
|
+
"ZM",
|
|
38119
|
+
"ZW",
|
|
38120
|
+
"IO",
|
|
38121
|
+
"TF"
|
|
38122
|
+
];
|
|
38123
|
+
var CARIBBEAN = [
|
|
38124
|
+
"AI",
|
|
38125
|
+
"AG",
|
|
38126
|
+
"AW",
|
|
38127
|
+
"BS",
|
|
38128
|
+
"BB",
|
|
38129
|
+
"BM",
|
|
38130
|
+
"BQ",
|
|
38131
|
+
"VG",
|
|
38132
|
+
"KY",
|
|
38133
|
+
"CU",
|
|
38134
|
+
"CW",
|
|
38135
|
+
"DM",
|
|
38136
|
+
"DO",
|
|
38137
|
+
"GD",
|
|
38138
|
+
"GP",
|
|
38139
|
+
"HT",
|
|
38140
|
+
"JM",
|
|
38141
|
+
"MQ",
|
|
38142
|
+
"MS",
|
|
38143
|
+
"PR",
|
|
38144
|
+
"BL",
|
|
38145
|
+
"KN",
|
|
38146
|
+
"LC",
|
|
38147
|
+
"MF",
|
|
38148
|
+
"VC",
|
|
38149
|
+
"SX",
|
|
38150
|
+
"TT",
|
|
38151
|
+
"TC",
|
|
38152
|
+
"VI"
|
|
38153
|
+
];
|
|
38154
|
+
var LATAM = [
|
|
38155
|
+
...CARIBBEAN,
|
|
38156
|
+
"MX",
|
|
38157
|
+
"BZ",
|
|
38158
|
+
"CR",
|
|
38159
|
+
"SV",
|
|
38160
|
+
"GT",
|
|
38161
|
+
"HN",
|
|
38162
|
+
"NI",
|
|
38163
|
+
"PA",
|
|
38164
|
+
"AR",
|
|
38165
|
+
"BO",
|
|
38166
|
+
"BR",
|
|
38167
|
+
"CL",
|
|
38168
|
+
"CO",
|
|
38169
|
+
"EC",
|
|
38170
|
+
"FK",
|
|
38171
|
+
"GF",
|
|
38172
|
+
"GY",
|
|
38173
|
+
"PY",
|
|
38174
|
+
"PE",
|
|
38175
|
+
"GS",
|
|
38176
|
+
"SR",
|
|
38177
|
+
"UY",
|
|
38178
|
+
"VE"
|
|
38179
|
+
];
|
|
38180
|
+
var OCEANIA = [
|
|
38181
|
+
"AU",
|
|
38182
|
+
"NZ",
|
|
38183
|
+
"FJ",
|
|
38184
|
+
"PG",
|
|
38185
|
+
"SB",
|
|
38186
|
+
"VU",
|
|
38187
|
+
"NC",
|
|
38188
|
+
"PF",
|
|
38189
|
+
"WS",
|
|
38190
|
+
"AS",
|
|
38191
|
+
"TO",
|
|
38192
|
+
"KI",
|
|
38193
|
+
"FM",
|
|
38194
|
+
"MH",
|
|
38195
|
+
"PW",
|
|
38196
|
+
"NR",
|
|
38197
|
+
"TV",
|
|
38198
|
+
"CK",
|
|
38199
|
+
"NU",
|
|
38200
|
+
"TK",
|
|
38201
|
+
"WF",
|
|
38202
|
+
"GU",
|
|
38203
|
+
"MP",
|
|
38204
|
+
"UM",
|
|
38205
|
+
"PN",
|
|
38206
|
+
"NF",
|
|
38207
|
+
"CX",
|
|
38208
|
+
"CC",
|
|
38209
|
+
"HM",
|
|
38210
|
+
"AQ",
|
|
38211
|
+
"BV"
|
|
38212
|
+
];
|
|
38213
|
+
var COUNTRY_GROUPS = {
|
|
38214
|
+
US,
|
|
38215
|
+
CANADA,
|
|
38216
|
+
UK,
|
|
38217
|
+
EU,
|
|
38218
|
+
EEA,
|
|
38219
|
+
EUROPE,
|
|
38220
|
+
INDIA,
|
|
38221
|
+
SEA,
|
|
38222
|
+
ASIA,
|
|
38223
|
+
MENA,
|
|
38224
|
+
AFRICA,
|
|
38225
|
+
CARIBBEAN,
|
|
38226
|
+
LATAM,
|
|
38227
|
+
OCEANIA
|
|
38228
|
+
};
|
|
38229
|
+
function isInGroup(code, group) {
|
|
38230
|
+
const alpha2 = toAlpha2(code);
|
|
38231
|
+
return !!alpha2 && COUNTRY_GROUPS[group].includes(alpha2);
|
|
38232
|
+
}
|
|
38233
|
+
function getKycCountryList(options = {}) {
|
|
38234
|
+
const { group, whitelisted, blacklisted } = options;
|
|
38235
|
+
const scoped = !!group?.length || !!whitelisted?.length;
|
|
38236
|
+
const include = /* @__PURE__ */ new Set();
|
|
38237
|
+
if (scoped) {
|
|
38238
|
+
for (const g of group ?? []) for (const code of COUNTRY_GROUPS[g]) include.add(code);
|
|
38239
|
+
for (const code of whitelisted ?? []) {
|
|
38240
|
+
const alpha2 = toAlpha2(code);
|
|
38241
|
+
if (alpha2) include.add(alpha2);
|
|
38242
|
+
}
|
|
38243
|
+
}
|
|
38244
|
+
const exclude = /* @__PURE__ */ new Set();
|
|
38245
|
+
for (const code of blacklisted ?? []) {
|
|
38246
|
+
const alpha2 = toAlpha2(code);
|
|
38247
|
+
if (alpha2) exclude.add(alpha2);
|
|
38248
|
+
}
|
|
38249
|
+
return ALL_COUNTRIES.filter((c) => (!scoped || include.has(c.alpha2)) && !exclude.has(c.alpha2));
|
|
38250
|
+
}
|
|
38251
|
+
|
|
38252
|
+
// src/lib/countries/us-states.ts
|
|
38253
|
+
var US_STATES = [
|
|
38254
|
+
{ code: "AL", name: "Alabama" },
|
|
38255
|
+
{ code: "AK", name: "Alaska" },
|
|
38256
|
+
{ code: "AS", name: "American Samoa" },
|
|
38257
|
+
{ code: "AZ", name: "Arizona" },
|
|
38258
|
+
{ code: "AR", name: "Arkansas" },
|
|
38259
|
+
{ code: "CA", name: "California" },
|
|
38260
|
+
{ code: "CO", name: "Colorado" },
|
|
38261
|
+
{ code: "CT", name: "Connecticut" },
|
|
38262
|
+
{ code: "DE", name: "Delaware" },
|
|
38263
|
+
{ code: "DC", name: "District of Columbia" },
|
|
38264
|
+
{ code: "FL", name: "Florida" },
|
|
38265
|
+
{ code: "GA", name: "Georgia" },
|
|
38266
|
+
{ code: "GU", name: "Guam" },
|
|
38267
|
+
{ code: "HI", name: "Hawaii" },
|
|
38268
|
+
{ code: "ID", name: "Idaho" },
|
|
38269
|
+
{ code: "IL", name: "Illinois" },
|
|
38270
|
+
{ code: "IN", name: "Indiana" },
|
|
38271
|
+
{ code: "IA", name: "Iowa" },
|
|
38272
|
+
{ code: "KS", name: "Kansas" },
|
|
38273
|
+
{ code: "KY", name: "Kentucky" },
|
|
38274
|
+
{ code: "LA", name: "Louisiana" },
|
|
38275
|
+
{ code: "ME", name: "Maine" },
|
|
38276
|
+
{ code: "MD", name: "Maryland" },
|
|
38277
|
+
{ code: "MA", name: "Massachusetts" },
|
|
38278
|
+
{ code: "MI", name: "Michigan" },
|
|
38279
|
+
{ code: "MN", name: "Minnesota" },
|
|
38280
|
+
{ code: "MS", name: "Mississippi" },
|
|
38281
|
+
{ code: "MO", name: "Missouri" },
|
|
38282
|
+
{ code: "MT", name: "Montana" },
|
|
38283
|
+
{ code: "NE", name: "Nebraska" },
|
|
38284
|
+
{ code: "NV", name: "Nevada" },
|
|
38285
|
+
{ code: "NH", name: "New Hampshire" },
|
|
38286
|
+
{ code: "NJ", name: "New Jersey" },
|
|
38287
|
+
{ code: "NM", name: "New Mexico" },
|
|
38288
|
+
{ code: "NY", name: "New York" },
|
|
38289
|
+
{ code: "NC", name: "North Carolina" },
|
|
38290
|
+
{ code: "ND", name: "North Dakota" },
|
|
38291
|
+
{ code: "MP", name: "Northern Mariana Islands" },
|
|
38292
|
+
{ code: "OH", name: "Ohio" },
|
|
38293
|
+
{ code: "OK", name: "Oklahoma" },
|
|
38294
|
+
{ code: "OR", name: "Oregon" },
|
|
38295
|
+
{ code: "PA", name: "Pennsylvania" },
|
|
38296
|
+
{ code: "PR", name: "Puerto Rico" },
|
|
38297
|
+
{ code: "RI", name: "Rhode Island" },
|
|
38298
|
+
{ code: "SC", name: "South Carolina" },
|
|
38299
|
+
{ code: "SD", name: "South Dakota" },
|
|
38300
|
+
{ code: "TN", name: "Tennessee" },
|
|
38301
|
+
{ code: "TX", name: "Texas" },
|
|
38302
|
+
{ code: "UT", name: "Utah" },
|
|
38303
|
+
{ code: "VT", name: "Vermont" },
|
|
38304
|
+
{ code: "VA", name: "Virginia" },
|
|
38305
|
+
{ code: "VI", name: "U.S. Virgin Islands" },
|
|
38306
|
+
{ code: "WA", name: "Washington" },
|
|
38307
|
+
{ code: "WV", name: "West Virginia" },
|
|
38308
|
+
{ code: "WI", name: "Wisconsin" },
|
|
38309
|
+
{ code: "WY", name: "Wyoming" }
|
|
38310
|
+
];
|
|
38311
|
+
function usStateName(code) {
|
|
38312
|
+
return US_STATES.find((s) => s.code === code)?.name ?? code;
|
|
38313
|
+
}
|
|
38314
|
+
|
|
38315
|
+
// src/lib/countries/flags.tsx
|
|
38316
|
+
import { getIconUrlWithCdn as getIconUrlWithCdn2 } from "@unifold/core";
|
|
38317
|
+
import { jsx as jsx84 } from "react/jsx-runtime";
|
|
38318
|
+
function countryFlagIconPath(alpha2) {
|
|
38319
|
+
return `/icons/countries/svg/${alpha2.toLowerCase()}.svg`;
|
|
38320
|
+
}
|
|
38321
|
+
function countryFlagPngPath(alpha2) {
|
|
38322
|
+
return `/icons/countries/png/${alpha2.toLowerCase()}.png`;
|
|
38323
|
+
}
|
|
38324
|
+
function countryFlag(code) {
|
|
38325
|
+
const upper = toAlpha2(code) ?? "";
|
|
38326
|
+
if (!/^[A-Z]{2}$/.test(upper)) return "";
|
|
38327
|
+
const REGIONAL_INDICATOR_A = 127462;
|
|
38328
|
+
return String.fromCodePoint(
|
|
38329
|
+
...[...upper].map((char) => REGIONAL_INDICATOR_A + char.charCodeAt(0) - "A".charCodeAt(0))
|
|
38330
|
+
);
|
|
38331
|
+
}
|
|
38332
|
+
function CountryFlag({
|
|
38333
|
+
code,
|
|
38334
|
+
assetCdnUrl,
|
|
38335
|
+
size = 20,
|
|
38336
|
+
className
|
|
38337
|
+
}) {
|
|
38338
|
+
const alpha2 = toAlpha2(code);
|
|
38339
|
+
if (!alpha2) return null;
|
|
38340
|
+
return /* @__PURE__ */ jsx84(
|
|
38341
|
+
"img",
|
|
38342
|
+
{
|
|
38343
|
+
src: getIconUrlWithCdn2(countryFlagIconPath(alpha2), assetCdnUrl),
|
|
38344
|
+
alt: "",
|
|
38345
|
+
"aria-hidden": true,
|
|
38346
|
+
loading: "lazy",
|
|
38347
|
+
width: size,
|
|
38348
|
+
height: Math.round(size * 0.7),
|
|
38349
|
+
className: className ?? "uf-rounded-sm uf-flex-shrink-0",
|
|
38350
|
+
style: { width: size, height: "auto" },
|
|
38351
|
+
onError: (e) => {
|
|
38352
|
+
e.currentTarget.style.visibility = "hidden";
|
|
38353
|
+
}
|
|
38354
|
+
}
|
|
38355
|
+
);
|
|
38356
|
+
}
|
|
38357
|
+
|
|
38358
|
+
// src/components/shared/region-picker/RegionSelectorSheet.tsx
|
|
38359
|
+
import { useEffect as useEffect48, useMemo as useMemo26, useRef as useRef21, useState as useState51 } from "react";
|
|
38360
|
+
import { createPortal } from "react-dom";
|
|
38361
|
+
import { X as X6 } from "lucide-react";
|
|
38362
|
+
import { Fragment as Fragment22, jsx as jsx85, jsxs as jsxs73 } from "react/jsx-runtime";
|
|
38363
|
+
var REGION_SHEET_ANCHOR_ATTR = "data-uf-sheet-anchor";
|
|
38364
|
+
var REGION_LIST_MAX_HEIGHT = 350;
|
|
38365
|
+
var MODAL_GUTTER = "1.5rem";
|
|
38366
|
+
var ROW_STYLE = {
|
|
38367
|
+
paddingTop: "0.875rem",
|
|
38368
|
+
paddingBottom: "0.875rem",
|
|
38369
|
+
paddingLeft: "0.75rem",
|
|
38370
|
+
paddingRight: "0.75rem"
|
|
38371
|
+
};
|
|
38372
|
+
var ROW_NAME_FONT_SIZE = "1rem";
|
|
38373
|
+
var ROW_CODE_FONT_SIZE = "0.875rem";
|
|
38374
|
+
var ROW_FLAG_SIZE = 24;
|
|
38375
|
+
function filterRegions(options, query, matchDialCode = false) {
|
|
38376
|
+
const q = query.trim().toLowerCase().replace(/^\+/, "");
|
|
38377
|
+
if (!q) return [...options];
|
|
38378
|
+
const numeric = matchDialCode && /^\d+$/.test(q);
|
|
38379
|
+
return options.filter((c) => {
|
|
38380
|
+
if (c.name.toLowerCase().includes(q)) return true;
|
|
38381
|
+
if (c.code.toLowerCase().startsWith(q)) return true;
|
|
38382
|
+
if (!numeric) return false;
|
|
38383
|
+
const dial = dialCode(c.flagCode ?? c.code);
|
|
38384
|
+
return !!dial && dial.startsWith(q);
|
|
38385
|
+
});
|
|
38386
|
+
}
|
|
38387
|
+
function RegionSelectorSheet({
|
|
38388
|
+
open,
|
|
38389
|
+
onOpenChange,
|
|
38390
|
+
options,
|
|
38391
|
+
selectedCode,
|
|
38392
|
+
onSelect,
|
|
38393
|
+
title,
|
|
38394
|
+
showDialCode,
|
|
38395
|
+
showFlags = true,
|
|
38396
|
+
assetCdnUrl
|
|
38397
|
+
}) {
|
|
38398
|
+
const { colors: colors2, fonts, components } = useTheme();
|
|
38399
|
+
const { t: strings } = useI18n();
|
|
38400
|
+
const [query, setQuery] = useState51("");
|
|
38401
|
+
const [hovered, setHovered] = useState51(null);
|
|
38402
|
+
const searchRef = useRef21(null);
|
|
38403
|
+
const probeRef = useRef21(null);
|
|
38404
|
+
const [anchor, setAnchor] = useState51(void 0);
|
|
38405
|
+
useEffect48(() => {
|
|
38406
|
+
if (!open) {
|
|
38407
|
+
setAnchor(void 0);
|
|
38408
|
+
setQuery("");
|
|
38409
|
+
return;
|
|
38410
|
+
}
|
|
38411
|
+
setAnchor(probeRef.current?.closest(`[${REGION_SHEET_ANCHOR_ATTR}]`) ?? null);
|
|
38412
|
+
}, [open]);
|
|
38413
|
+
useEffect48(() => {
|
|
38414
|
+
if (!open || anchor === void 0) return;
|
|
38415
|
+
searchRef.current?.focus({ preventScroll: true });
|
|
38416
|
+
}, [open, anchor]);
|
|
38417
|
+
const filtered = useMemo26(
|
|
38418
|
+
() => filterRegions(options, query, showDialCode),
|
|
38419
|
+
[options, query, showDialCode]
|
|
38420
|
+
);
|
|
38421
|
+
useEffect48(() => {
|
|
38422
|
+
if (!open) return;
|
|
38423
|
+
const onKeyDown = (event) => {
|
|
38424
|
+
if (event.key !== "Escape") return;
|
|
38425
|
+
event.preventDefault();
|
|
38426
|
+
event.stopPropagation();
|
|
38427
|
+
onOpenChange(false);
|
|
38428
|
+
};
|
|
38429
|
+
window.addEventListener("keydown", onKeyDown, true);
|
|
38430
|
+
return () => window.removeEventListener("keydown", onKeyDown, true);
|
|
38431
|
+
}, [open, onOpenChange]);
|
|
38432
|
+
if (!open) return null;
|
|
38433
|
+
const close = () => {
|
|
38434
|
+
onOpenChange(false);
|
|
38435
|
+
};
|
|
38436
|
+
const pick = (code) => {
|
|
38437
|
+
onSelect(code);
|
|
38438
|
+
close();
|
|
38439
|
+
};
|
|
38440
|
+
const panel = (
|
|
38441
|
+
// Absolutely positioned so it covers the whole modal body including the
|
|
38442
|
+
// "Powered by" footer, which is a sibling of this flow and so can't be
|
|
38443
|
+
// covered from normal flow. `absolute` rather than `fixed` because the modal
|
|
38444
|
+
// can be portaled into a host container, which a fixed layer would escape.
|
|
38445
|
+
// The anchor is the positioned wrapper in DepositModal.
|
|
38446
|
+
/* @__PURE__ */ jsxs73(
|
|
38447
|
+
"div",
|
|
38448
|
+
{
|
|
38449
|
+
style: {
|
|
38450
|
+
position: "absolute",
|
|
38451
|
+
top: 0,
|
|
38452
|
+
bottom: 0,
|
|
38453
|
+
// Reaches past the gutter DialogContent puts around the modal body so
|
|
38454
|
+
// the sheet meets the modal's edges.
|
|
38455
|
+
left: `-${MODAL_GUTTER}`,
|
|
38456
|
+
right: `-${MODAL_GUTTER}`,
|
|
38457
|
+
zIndex: 20,
|
|
38458
|
+
display: "flex",
|
|
38459
|
+
flexDirection: "column",
|
|
38460
|
+
justifyContent: "flex-end",
|
|
38461
|
+
overflow: "hidden"
|
|
38462
|
+
},
|
|
38463
|
+
children: [
|
|
38464
|
+
/* @__PURE__ */ jsx85(
|
|
38465
|
+
"style",
|
|
38466
|
+
{
|
|
38467
|
+
dangerouslySetInnerHTML: {
|
|
38468
|
+
__html: `
|
|
38469
|
+
.uf-region-sheet-search::placeholder { color: ${components.search.placeholderColor}; }
|
|
38470
|
+
.uf-region-sheet-list::-webkit-scrollbar { display: none; }
|
|
38471
|
+
@keyframes uf-region-sheet-rise {
|
|
38472
|
+
from { transform: translateY(100%); }
|
|
38473
|
+
to { transform: translateY(0); }
|
|
38474
|
+
}
|
|
38475
|
+
.uf-region-sheet-panel {
|
|
38476
|
+
animation: uf-region-sheet-rise 260ms cubic-bezier(0.32, 0.72, 0, 1) both;
|
|
38477
|
+
}
|
|
38478
|
+
@media (prefers-reduced-motion: reduce) {
|
|
38479
|
+
.uf-region-sheet-panel { animation: none; }
|
|
38480
|
+
}
|
|
38481
|
+
`
|
|
38482
|
+
}
|
|
38483
|
+
}
|
|
38484
|
+
),
|
|
38485
|
+
/* @__PURE__ */ jsx85(
|
|
38486
|
+
"div",
|
|
38487
|
+
{
|
|
38488
|
+
role: "presentation",
|
|
38489
|
+
onClick: close,
|
|
38490
|
+
style: { position: "absolute", inset: 0, backgroundColor: "rgba(0, 0, 0, 0.45)" }
|
|
38491
|
+
}
|
|
38492
|
+
),
|
|
38493
|
+
/* @__PURE__ */ jsxs73(
|
|
38494
|
+
"div",
|
|
38495
|
+
{
|
|
38496
|
+
role: "dialog",
|
|
38497
|
+
"aria-modal": "true",
|
|
38498
|
+
"aria-label": title,
|
|
38499
|
+
onClick: (event) => event.stopPropagation(),
|
|
38500
|
+
className: "uf-region-sheet-panel uf-flex uf-flex-col",
|
|
38501
|
+
style: {
|
|
38502
|
+
position: "relative",
|
|
38503
|
+
// Never taller than the area it covers: the list shrinks rather than
|
|
38504
|
+
// the panel spilling out over the modal header.
|
|
38505
|
+
maxHeight: "100%",
|
|
38506
|
+
// Restores the gutter the wrapper cancelled, so content keeps its
|
|
38507
|
+
// alignment with the rest of the modal while the sheet spans the edges.
|
|
38508
|
+
padding: `0.75rem ${MODAL_GUTTER}`,
|
|
38509
|
+
// Same surface as the modal it sits in, rather than the card tone.
|
|
38510
|
+
backgroundColor: colors2.background,
|
|
38511
|
+
// Docked to the bottom edge to edge, so only the top corners are
|
|
38512
|
+
// rounded and only the top edge is drawn — side borders against the
|
|
38513
|
+
// modal's own edges would read as a seam.
|
|
38514
|
+
borderTop: `${components.card.borderWidth}px solid ${components.card.borderColor}`,
|
|
38515
|
+
borderTopLeftRadius: components.card.borderRadius,
|
|
38516
|
+
borderTopRightRadius: components.card.borderRadius,
|
|
38517
|
+
boxShadow: "0 -8px 28px rgba(0, 0, 0, 0.32)"
|
|
38518
|
+
},
|
|
38519
|
+
children: [
|
|
38520
|
+
/* @__PURE__ */ jsxs73("div", { className: "uf-relative", children: [
|
|
38521
|
+
/* @__PURE__ */ jsx85(
|
|
38522
|
+
"h3",
|
|
38523
|
+
{
|
|
38524
|
+
className: "uf-text-center",
|
|
38525
|
+
style: {
|
|
38526
|
+
color: components.container.titleColor,
|
|
38527
|
+
fontFamily: fonts.medium,
|
|
38528
|
+
fontSize: "1rem"
|
|
38529
|
+
},
|
|
38530
|
+
children: title
|
|
38531
|
+
}
|
|
38532
|
+
),
|
|
38533
|
+
/* @__PURE__ */ jsxs73(
|
|
38534
|
+
"button",
|
|
38535
|
+
{
|
|
38536
|
+
type: "button",
|
|
38537
|
+
onClick: close,
|
|
38538
|
+
className: "uf-opacity-70 uf-transition-opacity hover:uf-opacity-100",
|
|
38539
|
+
style: {
|
|
38540
|
+
position: "absolute",
|
|
38541
|
+
// Padded out to a finger-sized target, then pulled back into the
|
|
38542
|
+
// gutter by the same amount so the glyph still lines up with the
|
|
38543
|
+
// right edge of the rows below.
|
|
38544
|
+
padding: "0.5rem",
|
|
38545
|
+
right: "-0.5rem",
|
|
38546
|
+
top: "50%",
|
|
38547
|
+
transform: "translateY(-50%)",
|
|
38548
|
+
// Centres the glyph in its box rather than on the text baseline.
|
|
38549
|
+
lineHeight: 0,
|
|
38550
|
+
color: components.container.titleColor
|
|
38551
|
+
},
|
|
38552
|
+
children: [
|
|
38553
|
+
/* @__PURE__ */ jsx85(X6, { style: { width: "1.25rem", height: "1.25rem" } }),
|
|
38554
|
+
/* @__PURE__ */ jsx85("span", { className: "uf-sr-only", children: strings.common.close })
|
|
38555
|
+
]
|
|
38556
|
+
}
|
|
38557
|
+
)
|
|
38558
|
+
] }),
|
|
38559
|
+
/* @__PURE__ */ jsx85("div", { className: "uf-pt-3 uf-pb-3", children: /* @__PURE__ */ jsx85(
|
|
38560
|
+
"input",
|
|
38561
|
+
{
|
|
38562
|
+
ref: searchRef,
|
|
38563
|
+
type: "text",
|
|
38564
|
+
value: query,
|
|
38565
|
+
onChange: (e) => setQuery(e.target.value),
|
|
38566
|
+
onKeyDown: (e) => {
|
|
38567
|
+
if (e.key !== "Enter") return;
|
|
38568
|
+
e.preventDefault();
|
|
38569
|
+
if (filtered[0]) pick(filtered[0].code);
|
|
38570
|
+
},
|
|
38571
|
+
placeholder: strings.common.search,
|
|
38572
|
+
className: "uf-region-sheet-search uf-w-full uf-px-4 uf-py-3 uf-outline-none",
|
|
38573
|
+
style: {
|
|
38574
|
+
backgroundColor: components.search.backgroundColor,
|
|
38575
|
+
color: components.search.inputColor,
|
|
38576
|
+
fontFamily: fonts.regular,
|
|
38577
|
+
// 16px: anything smaller makes iOS Safari zoom the page on focus.
|
|
38578
|
+
fontSize: "1rem",
|
|
38579
|
+
borderRadius: components.input.borderRadius,
|
|
38580
|
+
border: `${components.input.borderWidth}px solid ${components.input.borderColor}`
|
|
38581
|
+
}
|
|
38582
|
+
}
|
|
38583
|
+
) }),
|
|
38584
|
+
/* @__PURE__ */ jsx85(
|
|
38585
|
+
"div",
|
|
38586
|
+
{
|
|
38587
|
+
className: "uf-region-sheet-list",
|
|
38588
|
+
style: {
|
|
38589
|
+
maxHeight: REGION_LIST_MAX_HEIGHT,
|
|
38590
|
+
minHeight: 0,
|
|
38591
|
+
overflowY: "auto",
|
|
38592
|
+
scrollbarWidth: "none",
|
|
38593
|
+
msOverflowStyle: "none"
|
|
38594
|
+
},
|
|
38595
|
+
children: filtered.length === 0 ? /* @__PURE__ */ jsx85(
|
|
38596
|
+
"p",
|
|
38597
|
+
{
|
|
38598
|
+
className: "uf-text-center uf-py-8",
|
|
38599
|
+
style: {
|
|
38600
|
+
color: components.container.subtitleColor,
|
|
38601
|
+
fontFamily: fonts.regular,
|
|
38602
|
+
fontSize: ROW_NAME_FONT_SIZE
|
|
38603
|
+
},
|
|
38604
|
+
children: strings.common.noResults
|
|
38605
|
+
}
|
|
38606
|
+
) : /* @__PURE__ */ jsx85("div", { className: "uf-flex uf-flex-col uf-gap-1", children: filtered.map((c) => {
|
|
38607
|
+
const isSelected = c.code === selectedCode;
|
|
38608
|
+
const flagCode = c.flagCode ?? c.code;
|
|
38609
|
+
return /* @__PURE__ */ jsxs73(
|
|
38610
|
+
"button",
|
|
38611
|
+
{
|
|
38612
|
+
type: "button",
|
|
38613
|
+
onClick: () => pick(c.code),
|
|
38614
|
+
onMouseEnter: () => setHovered(c.code),
|
|
38615
|
+
onMouseLeave: () => setHovered(null),
|
|
38616
|
+
"aria-current": isSelected,
|
|
38617
|
+
className: "uf-w-full uf-flex uf-items-center uf-gap-3 uf-text-left uf-transition-colors",
|
|
38618
|
+
style: {
|
|
38619
|
+
...ROW_STYLE,
|
|
38620
|
+
borderRadius: components.card.borderRadius,
|
|
38621
|
+
// The selection is carried by a tinted row rather than a
|
|
38622
|
+
// trailing check, so it has to read as clearly distinct from
|
|
38623
|
+
// the plain hover state.
|
|
38624
|
+
backgroundColor: isSelected ? `${colors2.primary}24` : hovered === c.code ? colors2.cardHover : "transparent"
|
|
38625
|
+
},
|
|
38626
|
+
children: [
|
|
38627
|
+
showFlags && /* @__PURE__ */ jsx85(CountryFlag, { code: flagCode, assetCdnUrl, size: ROW_FLAG_SIZE }),
|
|
38628
|
+
/* @__PURE__ */ jsx85(
|
|
38629
|
+
"span",
|
|
38630
|
+
{
|
|
38631
|
+
className: "uf-flex-1 uf-truncate",
|
|
38632
|
+
style: {
|
|
38633
|
+
color: colors2.foreground,
|
|
38634
|
+
fontFamily: isSelected ? fonts.medium : fonts.regular,
|
|
38635
|
+
fontSize: ROW_NAME_FONT_SIZE
|
|
38636
|
+
},
|
|
38637
|
+
children: c.name
|
|
38638
|
+
}
|
|
38639
|
+
),
|
|
38640
|
+
/* @__PURE__ */ jsx85(
|
|
38641
|
+
"span",
|
|
38642
|
+
{
|
|
38643
|
+
className: "uf-shrink-0",
|
|
38644
|
+
style: {
|
|
38645
|
+
color: isSelected ? colors2.primary : components.container.subtitleColor,
|
|
38646
|
+
fontFamily: isSelected ? fonts.medium : fonts.regular,
|
|
38647
|
+
fontSize: ROW_CODE_FONT_SIZE
|
|
38648
|
+
},
|
|
38649
|
+
children: showDialCode ? `+${dialCode(flagCode) ?? ""}` : c.code
|
|
38650
|
+
}
|
|
38651
|
+
)
|
|
38652
|
+
]
|
|
38653
|
+
},
|
|
38654
|
+
c.code
|
|
38655
|
+
);
|
|
38656
|
+
}) })
|
|
38657
|
+
}
|
|
38658
|
+
)
|
|
38659
|
+
]
|
|
38660
|
+
}
|
|
38661
|
+
)
|
|
38662
|
+
]
|
|
38663
|
+
}
|
|
38664
|
+
)
|
|
38665
|
+
);
|
|
38666
|
+
return /* @__PURE__ */ jsxs73(Fragment22, { children: [
|
|
38667
|
+
/* @__PURE__ */ jsx85("span", { ref: probeRef, hidden: true }),
|
|
38668
|
+
anchor === void 0 ? null : anchor ? createPortal(panel, anchor) : panel
|
|
38669
|
+
] });
|
|
38670
|
+
}
|
|
38671
|
+
|
|
38672
|
+
// src/components/shared/region-picker/RegionPickerButton.tsx
|
|
38673
|
+
import { ChevronDown as ChevronDown12 } from "lucide-react";
|
|
38674
|
+
import { Fragment as Fragment23, jsx as jsx86, jsxs as jsxs74 } from "react/jsx-runtime";
|
|
38675
|
+
function RegionPickerButton({
|
|
38676
|
+
label,
|
|
38677
|
+
placeholder,
|
|
38678
|
+
flagCode,
|
|
38679
|
+
assetCdnUrl,
|
|
38680
|
+
onClick,
|
|
38681
|
+
fitContent,
|
|
38682
|
+
dense,
|
|
38683
|
+
locked,
|
|
38684
|
+
style: styleOverride
|
|
38685
|
+
}) {
|
|
38686
|
+
const { colors: colors2, fonts, components } = useTheme();
|
|
38687
|
+
const className = "uf-flex uf-items-center uf-justify-between uf-gap-1 uf-px-3 uf-text-sm uf-transition-colors";
|
|
38688
|
+
const style = {
|
|
38689
|
+
// Inline so it can't be lost to a stale stylesheet, and so it matches the
|
|
38690
|
+
// neighbouring input's padding exactly.
|
|
38691
|
+
paddingTop: dense ? "0.625rem" : "0.75rem",
|
|
38692
|
+
paddingBottom: dense ? "0.625rem" : "0.75rem",
|
|
38693
|
+
width: fitContent ? "auto" : "100%",
|
|
38694
|
+
// A floor so the control doesn't visibly resize as the user switches
|
|
38695
|
+
// between a one- and a three-digit dial code.
|
|
38696
|
+
minWidth: fitContent ? "6rem" : void 0,
|
|
38697
|
+
// Hold that width in the flex row it shares with the phone input, and
|
|
38698
|
+
// let the input give up the space instead.
|
|
38699
|
+
flexShrink: fitContent ? 0 : void 0,
|
|
38700
|
+
color: placeholder ? components.container.subtitleColor : colors2.foreground,
|
|
38701
|
+
backgroundColor: components.input.backgroundColor,
|
|
38702
|
+
borderRadius: components.input.borderRadius,
|
|
38703
|
+
border: `${components.input.borderWidth}px solid ${components.input.borderColor}`,
|
|
38704
|
+
fontFamily: fonts.regular,
|
|
38705
|
+
...styleOverride,
|
|
38706
|
+
// A placeholder stays dimmed even when the override sets a text colour.
|
|
38707
|
+
...placeholder ? { color: components.container.subtitleColor } : {}
|
|
38708
|
+
};
|
|
38709
|
+
const content = /* @__PURE__ */ jsxs74(Fragment23, { children: [
|
|
38710
|
+
/* @__PURE__ */ jsxs74("span", { className: "uf-flex uf-items-center uf-gap-2 uf-min-w-0", children: [
|
|
38711
|
+
flagCode && /* @__PURE__ */ jsx86(CountryFlag, { code: flagCode, assetCdnUrl, size: 20 }),
|
|
38712
|
+
/* @__PURE__ */ jsx86("span", { className: "uf-truncate", children: label })
|
|
38713
|
+
] }),
|
|
38714
|
+
!locked && /* @__PURE__ */ jsx86(
|
|
38715
|
+
ChevronDown12,
|
|
38716
|
+
{
|
|
38717
|
+
className: "uf-w-4 uf-h-4 uf-shrink-0",
|
|
38718
|
+
style: { color: components.container.subtitleColor }
|
|
38719
|
+
}
|
|
38720
|
+
)
|
|
38721
|
+
] });
|
|
38722
|
+
if (locked) {
|
|
38723
|
+
return /* @__PURE__ */ jsx86("div", { className, style, children: content });
|
|
38724
|
+
}
|
|
38725
|
+
return /* @__PURE__ */ jsx86(
|
|
38726
|
+
"button",
|
|
38727
|
+
{
|
|
38728
|
+
type: "button",
|
|
38729
|
+
onClick,
|
|
38730
|
+
className,
|
|
38731
|
+
style,
|
|
38732
|
+
"aria-haspopup": "dialog",
|
|
38733
|
+
children: content
|
|
38734
|
+
}
|
|
38735
|
+
);
|
|
38736
|
+
}
|
|
37467
38737
|
export {
|
|
38738
|
+
ALL_COUNTRIES,
|
|
37468
38739
|
AnalyticsProvider,
|
|
37469
38740
|
BankTransfer,
|
|
37470
38741
|
BankTransferButton,
|
|
@@ -37473,11 +38744,14 @@ export {
|
|
|
37473
38744
|
BuyWithCard,
|
|
37474
38745
|
BuyWithGooglePay,
|
|
37475
38746
|
BuyWithWalletPay,
|
|
38747
|
+
COUNTRIES,
|
|
38748
|
+
COUNTRY_GROUPS,
|
|
37476
38749
|
CheckingForDepositIndicator,
|
|
37477
38750
|
CheckoutModal,
|
|
37478
38751
|
CoinbaseConnect,
|
|
37479
38752
|
ConfirmingView,
|
|
37480
38753
|
ConnectExchangeButton,
|
|
38754
|
+
CountryFlag,
|
|
37481
38755
|
CurrencyListItem,
|
|
37482
38756
|
CurrencyListSection,
|
|
37483
38757
|
CurrencyModal,
|
|
@@ -37505,6 +38779,9 @@ export {
|
|
|
37505
38779
|
ManualDepositButton,
|
|
37506
38780
|
PayWithStripeLink,
|
|
37507
38781
|
QRCodeSkeleton,
|
|
38782
|
+
REGION_SHEET_ANCHOR_ATTR,
|
|
38783
|
+
RegionPickerButton,
|
|
38784
|
+
RegionSelectorSheet,
|
|
37508
38785
|
SUPPORTED_LOCALES,
|
|
37509
38786
|
Select,
|
|
37510
38787
|
SelectContent,
|
|
@@ -37527,6 +38804,7 @@ export {
|
|
|
37527
38804
|
TransferCryptoDoubleInput,
|
|
37528
38805
|
TransferCryptoSingleInput,
|
|
37529
38806
|
TransferQrCode,
|
|
38807
|
+
US_STATES,
|
|
37530
38808
|
WalletPayQrCheckout,
|
|
37531
38809
|
WithdrawConfirmingView,
|
|
37532
38810
|
WithdrawDoubleInput,
|
|
@@ -37541,10 +38819,17 @@ export {
|
|
|
37541
38819
|
cn,
|
|
37542
38820
|
colors,
|
|
37543
38821
|
connectSolanaStandardWallet,
|
|
38822
|
+
countryFlag,
|
|
38823
|
+
countryFlagIconPath,
|
|
38824
|
+
countryFlagPngPath,
|
|
38825
|
+
countryName,
|
|
37544
38826
|
defaultColors,
|
|
37545
38827
|
detectBrowserLocale,
|
|
37546
38828
|
detectBrowserWallet,
|
|
37547
38829
|
detectConnectedBrowserWallet,
|
|
38830
|
+
dialCode,
|
|
38831
|
+
filterRegions,
|
|
38832
|
+
findCountry,
|
|
37548
38833
|
findSolanaStandardWallet,
|
|
37549
38834
|
formatCryptoAmount,
|
|
37550
38835
|
formatFiat,
|
|
@@ -37552,6 +38837,7 @@ export {
|
|
|
37552
38837
|
getActiveStrings,
|
|
37553
38838
|
getAuthorizedSolanaStandardAccounts,
|
|
37554
38839
|
getColors,
|
|
38840
|
+
getKycCountryList,
|
|
37555
38841
|
getSolanaStandardWallets,
|
|
37556
38842
|
getStoredWalletPaySession as getStoredApplePaySession,
|
|
37557
38843
|
getStoredWalletPaySession,
|
|
@@ -37559,6 +38845,7 @@ export {
|
|
|
37559
38845
|
i18n,
|
|
37560
38846
|
interpolate,
|
|
37561
38847
|
isHypercoreChain,
|
|
38848
|
+
isInGroup,
|
|
37562
38849
|
isOnrampTokenFresh,
|
|
37563
38850
|
isSolanaWalletDetectedViaWalletStandard,
|
|
37564
38851
|
mergeColors,
|
|
@@ -37577,7 +38864,9 @@ export {
|
|
|
37577
38864
|
startBrowserWalletDiscovery,
|
|
37578
38865
|
subscribeSolanaStandardAccountChanges,
|
|
37579
38866
|
subscribeSolanaStandardWallets,
|
|
38867
|
+
toAlpha2,
|
|
37580
38868
|
truncateAddress,
|
|
38869
|
+
usStateName,
|
|
37581
38870
|
useAddressBalance,
|
|
37582
38871
|
useAllowedCountry,
|
|
37583
38872
|
useAnalytics,
|