@embarkai/ui-kit 0.4.73 → 0.4.74

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.cjs CHANGED
@@ -5562,6 +5562,12 @@ var init_en = __esm({
5562
5562
  selectNone: "Select None",
5563
5563
  errors: {
5564
5564
  oops: "Oops, something went wrong. Please try again."
5565
+ },
5566
+ onboarding: {
5567
+ tourButton: {
5568
+ title: "Tour Button",
5569
+ description: 'Tours are available under the "?" buttons of embarkAI menus. Click to have menu tour'
5570
+ }
5565
5571
  }
5566
5572
  },
5567
5573
  auth: {
@@ -5614,22 +5620,31 @@ var init_en = __esm({
5614
5620
  actions: {
5615
5621
  send: "SEND",
5616
5622
  confirm: "CONFIRM SEND"
5623
+ },
5624
+ onboarding: {
5625
+ sendMenu: {
5626
+ title: "Send Menu",
5627
+ description: "Select a crypto asset to send and enter the recipient address and amount."
5628
+ },
5629
+ sendCryptoSummary: {
5630
+ title: "Send Summary",
5631
+ description: "Review the details of your crypto transfer before confirming, then confirm the transaction."
5632
+ }
5617
5633
  }
5618
5634
  },
5619
5635
  bridgeMenu: {
5620
- title: "Bridge Asset",
5636
+ title: "Bridge asset",
5621
5637
  labels: {
5622
- sender: "Sender",
5623
5638
  bridgeAsset: "Bridge {{asset}}",
5624
- selectTokenAndRoute: "Select Token & Route",
5625
- selectToken: "Select Asset",
5639
+ selectSender: "Select sender wallet",
5640
+ selectToken: "Select asset for bridging",
5626
5641
  estimations: "Estimations",
5627
5642
  estimatedFee: "Estimated Fee",
5628
- availableChainPairs: "Select Chain Pairs",
5629
- toChain: "To Chain",
5630
- fromChain: "From Chain",
5643
+ availableChainPairs: "Select chain pair",
5644
+ toChain: "To chain",
5645
+ fromChain: "From chain",
5631
5646
  optionalRecipient: "Recipient (optional, if empty - destination chain address = sender address on origin chain)",
5632
- confirm: "Confirm Bridge",
5647
+ confirm: "Confirm bridge",
5633
5648
  bridgeTransactions: "Bridge TXs"
5634
5649
  },
5635
5650
  quote: {
@@ -5646,6 +5661,7 @@ var init_en = __esm({
5646
5661
  },
5647
5662
  actions: {
5648
5663
  connectWallet: "CONNECT WALLET",
5664
+ addExternalWalletProfile: "ADD WALLET PROFILE",
5649
5665
  bridge: "BRIDGE",
5650
5666
  estimateQuote: "ESTIMATE QUOTE",
5651
5667
  bridgeAsset: "BRIDGE {{asset}}",
@@ -5670,7 +5686,37 @@ var init_en = __esm({
5670
5686
  noConnections: "No connections found between {{originChain}} & {{destinationChain}}",
5671
5687
  wrongNetwork: " Please switch embarkAi to origin chain to proceed with bridging",
5672
5688
  noHistory: "No bridge history yet. Bridge your assets to see the history here.",
5673
- unsupportedNetwork: "Briging from {{originChain}} not yet supported by {{sender}}. Swap network pair, or select different token route, or change sender wallet"
5689
+ unsupportedNetwork: 'Bridging from {{originChain}} not yet possible by {{sender}}. Try swapping network pair, or select different token route, or change sender wallet, or if sender is embarkAI make sure it is switched to the corresponding "From Chain" network.'
5690
+ },
5691
+ onboarding: {
5692
+ bridgeMenu: {
5693
+ title: "Bridge Menu",
5694
+ description: "Sending via Bridging provides a way to send crypto assets across different blockchain networks."
5695
+ },
5696
+ bridgeSenderWalletSelector: {
5697
+ title: "Select sender wallet",
5698
+ description: "EmbarkAI can be authenticated by external wallet as auth-profile provider (Settings -> Profiles).\n External wallet profile can be used as sender (tx signer) for bridging crypto into embarkAI.\n Add external wallet profile if not done yet (Settings -> Profiles) and proceed with provided instructions"
5699
+ },
5700
+ bridgeCryptoAssetSelector: {
5701
+ title: "Select asset to bridge",
5702
+ description: "Bridging happens from one blockchain network to another.\n With this selector pick the asset you want to bridge, then pick the chain pair from available for the asset."
5703
+ },
5704
+ bridgeChainPairSwapper: {
5705
+ title: "Set origin & destination chains for bridging",
5706
+ description: 'Bridge route (chain pair) is used to be bidirectional, meaning that the origin and destination chains can be swapped.\n Use the "\u21C4" button to set the origin and destination chains for bridging.'
5707
+ },
5708
+ bridgeAmountRecipientInputs: {
5709
+ title: "Set amount & optional recipient for bridging",
5710
+ description: "Enter the amount you want to bridge and optionally specify a recipient address. If recipient is empty: destination chain address = sender address on origin chain"
5711
+ },
5712
+ bridgeEstimateQuoteButton: {
5713
+ title: "Estimate quote for bridging",
5714
+ description: "'Get an estimation of the bridging transaction before actual bridging. This helps you make an informed decision before proceeding with the bridge.'"
5715
+ },
5716
+ bridgeEstimatedQuoteMenu: {
5717
+ title: "Estimated bridging quote",
5718
+ description: "Make sure to check bridge setup & the estimated quote for bridging, then confirm the transaction."
5719
+ }
5674
5720
  }
5675
5721
  },
5676
5722
  receiveMenu: {
@@ -5719,6 +5765,24 @@ var init_en = __esm({
5719
5765
  inputPlaceholder: {
5720
5766
  selectCurrencies: "Select crypto and fiat",
5721
5767
  providerMin: "{{provider}}: Minimum {{minimum}} {{currency}} required"
5768
+ },
5769
+ onboarding: {
5770
+ buyMenu: {
5771
+ title: "Buy Menu",
5772
+ description: "Here you can make crypto purchases."
5773
+ },
5774
+ providerSelector: {
5775
+ title: "Select a Provider",
5776
+ description: "Cick here to choose a provider for your crypto purchase."
5777
+ },
5778
+ binanceMenu: {
5779
+ title: "Set Purchase Details",
5780
+ description: "Click here to set the details of your crypto purchase."
5781
+ },
5782
+ binanceEstimate: {
5783
+ title: "Confirm your purchase",
5784
+ description: "Review the details of your purchase before confirming."
5785
+ }
5722
5786
  }
5723
5787
  },
5724
5788
  portfolioMenu: {
@@ -5907,6 +5971,12 @@ var init_ru = __esm({
5907
5971
  selectNone: "\u0421\u043D\u044F\u0442\u044C \u0432\u044B\u0431\u043E\u0440",
5908
5972
  errors: {
5909
5973
  oops: "\u0423\u043F\u0441, \u0447\u0442\u043E-\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A. \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430."
5974
+ },
5975
+ onboarding: {
5976
+ tourButton: {
5977
+ title: "\u041A\u043D\u043E\u043F\u043A\u0430 \u0442\u0443\u0440\u0430",
5978
+ description: "\u0422\u0443\u0440\u044B \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B \u043F\u043E\u0434 \u043A\u043D\u043E\u043F\u043A\u0430\u043C\u0438 \xAB?\xBB \u043C\u0435\u043D\u044E embarkAI. \u041D\u0430\u0436\u043C\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u043E\u0439\u0442\u0438 \u0442\u0443\u0440 \u043F\u043E \u043C\u0435\u043D\u044E"
5979
+ }
5910
5980
  }
5911
5981
  },
5912
5982
  auth: {
@@ -5959,14 +6029,23 @@ var init_ru = __esm({
5959
6029
  actions: {
5960
6030
  send: "\u041E\u0422\u041F\u0420\u0410\u0412\u0418\u0422\u042C",
5961
6031
  confirm: "\u041F\u041E\u0414\u0422\u0412\u0415\u0420\u0414\u0418\u0422\u042C \u041E\u0422\u041F\u0420\u0410\u0412\u041A\u0423"
6032
+ },
6033
+ onboarding: {
6034
+ sendMenu: {
6035
+ title: "\u041C\u0435\u043D\u044E \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0438",
6036
+ description: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u0440\u0438\u043F\u0442\u043E\u0430\u043A\u0442\u0438\u0432 \u0434\u043B\u044F \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0438 \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u0435\u043B\u044F \u0438 \u0441\u0443\u043C\u043C\u0443."
6037
+ },
6038
+ sendCryptoSummary: {
6039
+ title: "\u0421\u0432\u043E\u0434\u043A\u0430 \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0438",
6040
+ description: "\u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0434\u0435\u0442\u0430\u043B\u0438 \u043F\u0435\u0440\u0435\u0432\u043E\u0434\u0430 \u043F\u0435\u0440\u0435\u0434 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435\u043C, \u0437\u0430\u0442\u0435\u043C \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u044E."
6041
+ }
5962
6042
  }
5963
6043
  },
5964
6044
  bridgeMenu: {
5965
6045
  title: "\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u0410\u043A\u0442\u0438\u0432",
5966
6046
  labels: {
5967
- sender: "\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044C",
5968
6047
  bridgeAsset: "\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C {{asset}}",
5969
- selectTokenAndRoute: "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0442\u043E\u043A\u0435\u043D \u0438 \u043C\u0430\u0440\u0448\u0440\u0443\u0442",
6048
+ selectSender: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u043E\u0448\u0435\u043B\u0451\u043A-\u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044C",
5970
6049
  selectToken: "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043C\u0430\u0440\u0448\u0440\u0443\u0442 \u0442\u043E\u043A\u0435\u043D\u0430",
5971
6050
  estimations: "\u041E\u0446\u0435\u043D\u043A\u0438",
5972
6051
  estimatedFee: "\u041E\u0436\u0438\u0434\u0430\u0435\u043C\u0430\u044F \u043A\u043E\u043C\u0438\u0441\u0441\u0438\u044F",
@@ -5991,11 +6070,12 @@ var init_ru = __esm({
5991
6070
  },
5992
6071
  actions: {
5993
6072
  connectWallet: "\u041F\u041E\u0414\u041A\u041B\u042E\u0427\u0418\u0422\u042C \u041A\u041E\u0428\u0415\u041B\u0401\u041A",
6073
+ addExternalWalletProfile: "\u0414\u041E\u0411\u0410\u0412\u0418\u0422\u042C \u041F\u0420\u041E\u0424\u0418\u041B\u042C \u041A\u041E\u0428\u0415\u041B\u042C\u041A\u0410",
5994
6074
  bridge: "\u041F\u0415\u0420\u0415\u041C\u0415\u0421\u0422\u0418\u0422\u042C",
5995
6075
  estimateQuote: "\u0420\u0410\u0421\u0421\u0427\u0418\u0422\u0410\u0422\u042C \u0421\u0422\u041E\u0418\u041C\u041E\u0421\u0422\u042C",
5996
6076
  bridgeAsset: "\u041F\u0415\u0420\u0415\u041C\u0415\u0421\u0422\u0418\u0422\u042C {{asset}}",
5997
6077
  selectAsset: "\u0412\u042B\u0411\u0420\u0410\u0422\u042C \u0410\u041A\u0422\u0418\u0412",
5998
- confirmBridge: "\u041F\u041E\u0414\u0422\u0412\u0415\u0420\u0414\u0418\u0422\u042C \u041F\u0415\u0420\u0415\u041C\u0415\u0429\u0415\u041D\u0418\u0415"
6078
+ confirmBridge: "\u042F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435 {{amount}} {{asset}} \u0432 {{destinationChain}}"
5999
6079
  },
6000
6080
  statuses: {
6001
6081
  balanceInsufficient: "\u041D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u0441\u0440\u0435\u0434\u0441\u0442\u0432",
@@ -6015,7 +6095,37 @@ var init_ru = __esm({
6015
6095
  noConnections: "\u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0439 \u043C\u0435\u0436\u0434\u0443 {{originChain}} \u0438 {{destinationChain}} \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E",
6016
6096
  wrongNetwork: " \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u0435 EmbarkAI \u043D\u0430 \u0438\u0441\u0445\u043E\u0434\u043D\u0443\u044E \u0441\u0435\u0442\u044C \u0434\u043B\u044F \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u044F \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F",
6017
6097
  noHistory: "\u0418\u0441\u0442\u043E\u0440\u0438\u044F \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0439 \u043F\u0443\u0441\u0442\u0430. \u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u0435 \u0432\u0430\u0448\u0438 \u0430\u043A\u0442\u0438\u0432\u044B, \u0447\u0442\u043E\u0431\u044B \u0443\u0432\u0438\u0434\u0435\u0442\u044C \u0438\u0441\u0442\u043E\u0440\u0438\u044E \u0437\u0434\u0435\u0441\u044C.",
6018
- unsupportedNetwork: "\u041F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u0438\u0437 \u0441\u0435\u0442\u0438 {{originChain}} \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0434\u043B\u044F {{sender}}. \u041F\u043E\u043C\u0435\u043D\u044F\u0439\u0442\u0435 \u0441\u0435\u0442\u0438 \u043C\u0435\u0441\u0442\u0430\u043C\u0438, \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u043E\u0439 \u043C\u0430\u0440\u0448\u0440\u0443\u0442 \u0442\u043E\u043A\u0435\u043D\u0430 \u0438\u043B\u0438 \u0441\u043C\u0435\u043D\u0438\u0442\u0435 \u043A\u043E\u0448\u0435\u043B\u0451\u043A \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044F"
6098
+ unsupportedNetwork: "\u041F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u0438\u0437 {{originChain}} \u043D\u0435 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0434\u043B\u044F {{sender}}. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0430\u0440\u0443 \u0441\u0435\u0442\u0435\u0439, \u0432\u044B\u0431\u0440\u0430\u0442\u044C \u0434\u0440\u0443\u0433\u043E\u0439 \u043C\u0430\u0440\u0448\u0440\u0443\u0442 \u0442\u043E\u043A\u0435\u043D\u0430, \u0441\u043C\u0435\u043D\u0438\u0442\u044C \u043A\u043E\u0448\u0435\u043B\u0451\u043A \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044F \u0438\u043B\u0438, \u0435\u0441\u043B\u0438 \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044C \u2014 EmbarkAI, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044C, \u0447\u0442\u043E \u043E\u043D \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D \u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044E\u0449\u0443\u044E \u0441\u0435\u0442\u044C \xAB\u0418\u0437 \u0441\u0435\u0442\u0438\xBB."
6099
+ },
6100
+ onboarding: {
6101
+ bridgeMenu: {
6102
+ title: "\u041C\u0435\u043D\u044E \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F",
6103
+ description: "\u041E\u0442\u043F\u0440\u0430\u0432\u043A\u0430 \u0447\u0435\u0440\u0435\u0437 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043F\u043E\u0441\u043E\u0431 \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0438 \u043A\u0440\u0438\u043F\u0442\u043E\u0430\u043A\u0442\u0438\u0432\u043E\u0432 \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437\u043D\u044B\u0435 \u0431\u043B\u043E\u043A\u0447\u0435\u0439\u043D-\u0441\u0435\u0442\u0438."
6104
+ },
6105
+ bridgeSenderWalletSelector: {
6106
+ title: "\u0412\u044B\u0431\u043E\u0440 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430-\u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044F",
6107
+ description: "EmbarkAI \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0430\u0443\u0442\u0435\u043D\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043E\u0432\u0430\u043D \u0432\u043D\u0435\u0448\u043D\u0438\u043C \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u043E\u043C \u043A\u0430\u043A \u043F\u043E\u0441\u0442\u0430\u0432\u0449\u0438\u043A \u043F\u0440\u043E\u0444\u0438\u043B\u044F \u0430\u0443\u0442\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 (\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 -> \u041F\u0440\u043E\u0444\u0438\u043B\u0438).\n \u041F\u0440\u043E\u0444\u0438\u043B\u044C \u0432\u043D\u0435\u0448\u043D\u0435\u0433\u043E \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430 \u043C\u043E\u0436\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043A\u0430\u043A \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044C (\u043F\u043E\u0434\u043F\u0438\u0441\u0430\u043D\u0442 \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u0439) \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u044B \u0432 embarkAI.\n \u0414\u043E\u0431\u0430\u0432\u044C\u0442\u0435 \u043F\u0440\u043E\u0444\u0438\u043B\u044C \u0432\u043D\u0435\u0448\u043D\u0435\u0433\u043E \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430, \u0435\u0441\u043B\u0438 \u044D\u0442\u043E \u0435\u0449\u0451 \u043D\u0435 \u0441\u0434\u0435\u043B\u0430\u043D\u043E (\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 -> \u041F\u0440\u043E\u0444\u0438\u043B\u0438), \u0438 \u0441\u043B\u0435\u0434\u0443\u0439\u0442\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u044F\u043C."
6108
+ },
6109
+ bridgeCryptoAssetSelector: {
6110
+ title: "\u0412\u044B\u0431\u043E\u0440 \u0430\u043A\u0442\u0438\u0432\u0430 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F",
6111
+ description: "\u041F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0438\u0441\u0445\u043E\u0434\u0438\u0442 \u0438\u0437 \u043E\u0434\u043D\u043E\u0439 \u0431\u043B\u043E\u043A\u0447\u0435\u0439\u043D-\u0441\u0435\u0442\u0438 \u0432 \u0434\u0440\u0443\u0433\u0443\u044E.\n \u0421 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u044D\u0442\u043E\u0433\u043E \u0441\u0435\u043B\u0435\u043A\u0442\u043E\u0440\u0430 \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0430\u043A\u0442\u0438\u0432, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u0445\u043E\u0442\u0438\u0442\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C, \u0437\u0430\u0442\u0435\u043C \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0443\u044E \u0434\u043B\u044F \u043D\u0435\u0433\u043E \u043F\u0430\u0440\u0443 \u0441\u0435\u0442\u0435\u0439."
6112
+ },
6113
+ bridgeChainPairSwapper: {
6114
+ title: "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u0439 \u0438 \u0446\u0435\u043B\u0435\u0432\u043E\u0439 \u0441\u0435\u0442\u0438",
6115
+ description: "\u041C\u0430\u0440\u0448\u0440\u0443\u0442 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F (\u043F\u0430\u0440\u0430 \u0441\u0435\u0442\u0435\u0439) \u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0434\u0432\u0443\u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u043C, \u0442\u043E \u0435\u0441\u0442\u044C \u0438\u0441\u0445\u043E\u0434\u043D\u0443\u044E \u0438 \u0446\u0435\u043B\u0435\u0432\u0443\u044E \u0441\u0435\u0442\u0438 \u043C\u043E\u0436\u043D\u043E \u043F\u043E\u043C\u0435\u043D\u044F\u0442\u044C \u043C\u0435\u0441\u0442\u0430\u043C\u0438.\n \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 \xAB\u21C4\xBB \u0434\u043B\u044F \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u0439 \u0438 \u0446\u0435\u043B\u0435\u0432\u043E\u0439 \u0441\u0435\u0442\u0435\u0439."
6116
+ },
6117
+ bridgeAmountRecipientInputs: {
6118
+ title: "\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0441\u0443\u043C\u043C\u044B \u0438 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u0435\u043B\u044F",
6119
+ description: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0443\u043C\u043C\u0443 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F \u0438 \u043F\u0440\u0438 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u0438 \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u0435\u043B\u044F. \u0415\u0441\u043B\u0438 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u0435\u043B\u044C \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D: \u0430\u0434\u0440\u0435\u0441 \u0432 \u0446\u0435\u043B\u0435\u0432\u043E\u0439 \u0441\u0435\u0442\u0438 \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u0435\u0442 \u0441 \u0430\u0434\u0440\u0435\u0441\u043E\u043C \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044F \u0432 \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u0439 \u0441\u0435\u0442\u0438."
6120
+ },
6121
+ bridgeEstimateQuoteButton: {
6122
+ title: "\u041E\u0446\u0435\u043D\u043A\u0430 \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F",
6123
+ description: "\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u0435 \u043F\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043B\u044C\u043D\u0443\u044E \u043E\u0446\u0435\u043D\u043A\u0443 \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F \u0434\u043E \u0444\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F. \u042D\u0442\u043E \u043F\u043E\u043C\u043E\u0436\u0435\u0442 \u043F\u0440\u0438\u043D\u044F\u0442\u044C \u043E\u0431\u043E\u0441\u043D\u043E\u0432\u0430\u043D\u043D\u043E\u0435 \u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043F\u0435\u0440\u0435\u0434 \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u0435\u043C."
6124
+ },
6125
+ bridgeEstimatedQuoteMenu: {
6126
+ title: "\u0420\u0430\u0441\u0447\u0451\u0442\u043D\u0430\u044F \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F",
6127
+ description: "\u041E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E \u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F \u0438 \u0440\u0430\u0441\u0447\u0451\u0442\u043D\u0443\u044E \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C, \u0437\u0430\u0442\u0435\u043C \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u044E."
6128
+ }
6019
6129
  }
6020
6130
  },
6021
6131
  receiveMenu: {
@@ -6025,7 +6135,7 @@ var init_ru = __esm({
6025
6135
  share: "\u041F\u043E\u0434\u0435\u043B\u0438\u0442\u0435\u0441\u044C \u044D\u0442\u0438\u043C \u0430\u0434\u0440\u0435\u0441\u043E\u043C, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0442\u043E\u043A\u0435\u043D\u044B"
6026
6136
  },
6027
6137
  buyMenu: {
6028
- title: "\u041A\u0443\u043F\u0438\u0442\u044C \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u0443",
6138
+ title: "\u041A\u0443\u043F\u0438\u0442\u044C \u043A\u0440\u0438\u043F\u0442\u043E",
6029
6139
  provider: "Onramp-\u0441\u0435\u0440\u0432\u0438\u0441",
6030
6140
  selectProvider: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 Onramp-\u0441\u0435\u0440\u0432\u0438\u0441",
6031
6141
  selectCrypto: "\u041A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u0430",
@@ -6045,7 +6155,12 @@ var init_ru = __esm({
6045
6155
  exchangeRate: "\u041A\u0443\u0440\u0441 \u043E\u0431\u043C\u0435\u043D\u0430",
6046
6156
  networkFee: "\u0421\u0435\u0442\u0435\u0432\u043E\u0439 \u0441\u0431\u043E\u0440",
6047
6157
  serviceFee: "\u0421\u0435\u0440\u0432\u0438\u0441\u043D\u044B\u0439 \u0441\u0431\u043E\u0440",
6048
- paymentMethod: "\u0421\u043F\u043E\u0441\u043E\u0431 \u043E\u043F\u043B\u0430\u0442\u044B"
6158
+ paymentMethod: "\u0421\u043F\u043E\u0441\u043E\u0431 \u043E\u043F\u043B\u0430\u0442\u044B",
6159
+ toAddress: {
6160
+ receiver: "\u0412\u041D\u0418\u041C\u0410\u041D\u0418\u0415! \u0410\u0434\u0440\u0435\u0441 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F",
6161
+ message: "\u0412\u044B \u0441\u043E\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044C \u043A\u0443\u043F\u0438\u0442\u044C \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u0443 \u043D\u0430 \u0432\u043D\u0435\u0448\u043D\u0438\u0439 \u0430\u0434\u0440\u0435\u0441, \u0430 \u043D\u0435 \u043D\u0430 \u0432\u0430\u0448 \u0430\u0434\u0440\u0435\u0441 embarkAI.",
6162
+ suggestion: "\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044C, \u0447\u0442\u043E \u044D\u0442\u043E \u0432\u0430\u0448 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0430\u0434\u0440\u0435\u0441 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430, \u0438\u043D\u0430\u0447\u0435 \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u043F\u043E\u0442\u0435\u0440\u044F\u0442\u044C \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430."
6163
+ }
6049
6164
  },
6050
6165
  transactionHistory: {
6051
6166
  details: "\u0414\u0435\u0442\u0430\u043B\u0438"
@@ -6059,11 +6174,30 @@ var init_ru = __esm({
6059
6174
  inputPlaceholder: {
6060
6175
  selectCurrencies: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u0443 \u0438 \u0444\u0438\u0430\u0442",
6061
6176
  providerMin: "{{provider}}: \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u043C\u0438\u043D\u0438\u043C\u0443\u043C {{minimum}} {{currency}}"
6177
+ },
6178
+ onboarding: {
6179
+ buyMenu: {
6180
+ title: "\u041C\u0435\u043D\u044E \u043F\u043E\u043A\u0443\u043F\u043A\u0438",
6181
+ description: "\u0417\u0434\u0435\u0441\u044C \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0441\u043E\u0432\u0435\u0440\u0448\u0430\u0442\u044C \u043F\u043E\u043A\u0443\u043F\u043A\u0438 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u044B."
6182
+ },
6183
+ providerSelector: {
6184
+ title: "\u0412\u044B\u0431\u043E\u0440 \u043F\u0440\u043E\u0432\u0430\u0439\u0434\u0435\u0440\u0430",
6185
+ description: "\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0437\u0434\u0435\u0441\u044C, \u0447\u0442\u043E\u0431\u044B \u0432\u044B\u0431\u0440\u0430\u0442\u044C \u043F\u0440\u043E\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0434\u043B\u044F \u043F\u043E\u043A\u0443\u043F\u043A\u0438 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u044B."
6186
+ },
6187
+ binanceMenu: {
6188
+ title: "\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0434\u0435\u0442\u0430\u043B\u0435\u0439 \u043F\u043E\u043A\u0443\u043F\u043A\u0438",
6189
+ description: "\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0437\u0434\u0435\u0441\u044C, \u0447\u0442\u043E\u0431\u044B \u0437\u0430\u0434\u0430\u0442\u044C \u0434\u0435\u0442\u0430\u043B\u0438 \u043F\u043E\u043A\u0443\u043F\u043A\u0438 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u044B."
6190
+ },
6191
+ binanceEstimate: {
6192
+ title: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 \u043F\u043E\u043A\u0443\u043F\u043A\u0438",
6193
+ description: "\u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0434\u0435\u0442\u0430\u043B\u0438 \u043F\u043E\u043A\u0443\u043F\u043A\u0438 \u043F\u0435\u0440\u0435\u0434 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435\u043C."
6194
+ }
6062
6195
  }
6063
6196
  },
6064
6197
  portfolioMenu: {
6065
6198
  title: "\u0412\u0430\u0448\u0438 \u0430\u043A\u0442\u0438\u0432\u044B",
6066
- noAssets: "\u0410\u043A\u0442\u0438\u0432\u044B \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B"
6199
+ noAssets: "\u0410\u043A\u0442\u0438\u0432\u044B \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B",
6200
+ noBlockscout: "Blockscout API \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D \u0434\u043B\u044F \u0441\u0435\u0442\u0438: {{chain}}"
6067
6201
  },
6068
6202
  transactionsMenu: {
6069
6203
  title: "\u0418\u0441\u0442\u043E\u0440\u0438\u044F \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u0439",
@@ -6246,6 +6380,12 @@ var init_zh = __esm({
6246
6380
  selectNone: "\u5168\u4E0D\u9009",
6247
6381
  errors: {
6248
6382
  oops: "\u54CE\u5440\uFF0C\u51FA\u4E86\u70B9\u95EE\u9898\u3002\u8BF7\u518D\u8BD5\u4E00\u6B21\u3002"
6383
+ },
6384
+ onboarding: {
6385
+ tourButton: {
6386
+ title: "\u5BFC\u89C8\u6309\u9215",
6387
+ description: "\u5BFC\u89C8\u529F\u80FD\u53EF\u5728 embarkAI \u83DC\u5355\u7684\u201C\uFF1F\u201D\u6309\u9215\u4E0B\u627E\u5230\u3002\u70B9\u51FB\u5373\u53EF\u5F00\u59CB\u83DC\u5355\u5BFC\u89C8"
6388
+ }
6249
6389
  }
6250
6390
  },
6251
6391
  auth: {
@@ -6298,14 +6438,23 @@ var init_zh = __esm({
6298
6438
  actions: {
6299
6439
  send: "\u53D1\u9001",
6300
6440
  confirm: "\u786E\u8BA4\u53D1\u9001"
6441
+ },
6442
+ onboarding: {
6443
+ sendMenu: {
6444
+ title: "\u53D1\u9001\u83DC\u5355",
6445
+ description: "\u9009\u62E9\u8981\u53D1\u9001\u7684\u52A0\u5BC6\u8D44\u4EA7\uFF0C\u7136\u540E\u8F93\u5165\u6536\u6B3E\u5730\u5740\u548C\u91D1\u989D\u3002"
6446
+ },
6447
+ sendCryptoSummary: {
6448
+ title: "\u53D1\u9001\u6458\u8981",
6449
+ description: "\u5728\u786E\u8BA4\u524D\u67E5\u770B\u52A0\u5BC6\u8F6C\u8D26\u8BE6\u60C5\uFF0C\u7136\u540E\u786E\u8BA4\u4EA4\u6613\u3002"
6450
+ }
6301
6451
  }
6302
6452
  },
6303
6453
  bridgeMenu: {
6304
6454
  title: "\u8DE8\u94FE\u8D44\u4EA7",
6305
6455
  labels: {
6306
- sender: "\u53D1\u9001\u65B9",
6307
6456
  bridgeAsset: "\u8DE8\u94FE {{asset}}",
6308
- selectTokenAndRoute: "\u9009\u62E9\u4EE3\u5E01\u548C\u8DEF\u7531",
6457
+ selectSender: "\u9009\u62E9\u53D1\u9001\u65B9\u94B1\u5305",
6309
6458
  selectToken: "\u9009\u62E9\u4EE3\u5E01\u8DEF\u7531",
6310
6459
  estimations: "\u9884\u4F30",
6311
6460
  estimatedFee: "\u9884\u4F30\u624B\u7EED\u8D39",
@@ -6330,11 +6479,12 @@ var init_zh = __esm({
6330
6479
  },
6331
6480
  actions: {
6332
6481
  connectWallet: "\u8FDE\u63A5\u9489\u5305",
6482
+ addExternalWalletProfile: "\u6DFB\u52A0\u5916\u90E8\u94B1\u5305\u914D\u7F6E\u6587\u4EF6",
6333
6483
  bridge: "\u8DE8\u94FE",
6334
6484
  estimateQuote: "\u4F30\u7B97\u62A5\u4EF7",
6335
6485
  bridgeAsset: "\u8DE8\u94FE {{asset}}",
6336
6486
  selectAsset: "\u9009\u62E9\u8D44\u4EA7",
6337
- confirmBridge: "\u786E\u8BA4\u8DE8\u94FE"
6487
+ confirmBridge: "\u6211\u786E\u8BA4\u5C06 {{amount}} {{asset}} \u8DE8\u94FE\u5230 {{destinationChain}}"
6338
6488
  },
6339
6489
  statuses: {
6340
6490
  balanceInsufficient: "\u4F59\u989D\u4E0D\u8DB3",
@@ -6355,6 +6505,36 @@ var init_zh = __esm({
6355
6505
  wrongNetwork: " \u8BF7\u5C06 EmbarkAI \u5207\u6362\u81F3\u6E90\u94FE\u4EE5\u7EE7\u7EED\u8DE8\u94FE\u64CD\u4F5C",
6356
6506
  noHistory: "\u6682\u65E0\u8DE8\u94FE\u8BB0\u5F55\u3002\u8DE8\u94FE\u60A8\u7684\u8D44\u4EA7\u540E\uFF0C\u5386\u53F2\u8BB0\u5F55\u5C06\u663E\u793A\u5728\u6B64\u5904\u3002",
6357
6507
  unsupportedNetwork: "{{sender}} \u5C1A\u4E0D\u652F\u6301\u4ECE {{originChain}} \u8DE8\u94FE\u3002\u8BF7\u5207\u6362\u7F51\u7EDC\u5BF9\u3001\u9009\u62E9\u4E0D\u540C\u7684\u4EE3\u5E01\u8DEF\u7531\u6216\u66F4\u6362\u53D1\u9001\u9489\u5305"
6508
+ },
6509
+ onboarding: {
6510
+ bridgeMenu: {
6511
+ title: "\u8DE8\u94FE\u83DC\u5355",
6512
+ description: "\u901A\u8FC7\u8DE8\u94FE\u53D1\u9001\u53EF\u4EE5\u5728\u4E0D\u540C\u533A\u5757\u94FE\u7F51\u7EDC\u4E4B\u95F4\u8F6C\u79FB\u52A0\u5BC6\u8D44\u4EA7\u3002"
6513
+ },
6514
+ bridgeSenderWalletSelector: {
6515
+ title: "\u9009\u62E9\u53D1\u9001\u65B9\u9489\u5305",
6516
+ description: "EmbarkAI \u53EF\u4EE5\u901A\u8FC7\u5916\u90E8\u9489\u5305\u8FDB\u884C\u8EAB\u4EFD\u9A8C\u8BC1\uFF0C\u4F5C\u4E3A\u8EAB\u4EFD\u9A8C\u8BC1\u914D\u7F6E\u6587\u4EF6\u63D0\u4F9B\u5546\uFF08\u8BBE\u7F6E -> \u914D\u7F6E\u6587\u4EF6\uFF09\u3002\n \u5916\u90E8\u9489\u5305\u914D\u7F6E\u6587\u4EF6\u53EF\u7528\u4F5C\u8DE8\u94FE\u52A0\u5BC6\u8D44\u4EA7\u5230 embarkAI \u7684\u53D1\u9001\u65B9\uFF08\u4EA4\u6613\u7B7E\u540D\u8005\uFF09\u3002\n \u5982\u5C1A\u672A\u6DFB\u52A0\u5916\u90E8\u9489\u5305\u914D\u7F6E\u6587\u4EF6\uFF0C\u8BF7\u524D\u5F80\uFF08\u8BBE\u7F6E -> \u914D\u7F6E\u6587\u4EF6\uFF09\u6DFB\u52A0\u5E76\u6309\u7167\u63D0\u793A\u64CD\u4F5C\u3002"
6517
+ },
6518
+ bridgeCryptoAssetSelector: {
6519
+ title: "\u9009\u62E9\u8DE8\u94FE\u8D44\u4EA7",
6520
+ description: "\u8DE8\u94FE\u64CD\u4F5C\u53D1\u751F\u5728\u4E00\u4E2A\u533A\u5757\u94FE\u7F51\u7EDC\u5230\u53E6\u4E00\u4E2A\u4E4B\u95F4\u3002\n \u4F7F\u7528\u6B64\u9009\u62E9\u5668\u9009\u62E9\u8981\u8DE8\u94FE\u7684\u8D44\u4EA7\uFF0C\u7136\u540E\u4ECE\u8BE5\u8D44\u4EA7\u53EF\u7528\u7684\u94FE\u5BF9\u4E2D\u8FDB\u884C\u9009\u62E9\u3002"
6521
+ },
6522
+ bridgeChainPairSwapper: {
6523
+ title: "\u8BBE\u7F6E\u6E90\u94FE\u548C\u76EE\u6807\u94FE",
6524
+ description: "\u8DE8\u94FE\u8DEF\u7531\uFF08\u94FE\u5BF9\uFF09\u662F\u53CC\u5411\u7684\uFF0C\u5373\u6E90\u94FE\u548C\u76EE\u6807\u94FE\u53EF\u4EE5\u4E92\u6362\u3002\n \u4F7F\u7528\u201C\u21C4\u201D\u6309\u9215\u8BBE\u7F6E\u6E90\u94FE\u548C\u76EE\u6807\u94FE\u3002"
6525
+ },
6526
+ bridgeAmountRecipientInputs: {
6527
+ title: "\u8BBE\u7F6E\u91D1\u989D\u548C\u53EF\u9009\u6536\u6B3E\u4EBA",
6528
+ description: "\u8F93\u5165\u8981\u8DE8\u94FE\u7684\u91D1\u989D\uFF0C\u5E76\u53EF\u9009\u62E9\u6027\u5730\u6307\u5B9A\u6536\u6B3E\u4EBA\u5730\u5740\u3002\u82E5\u6536\u6B3E\u4EBA\u4E3A\u7A7A\uFF1A\u76EE\u6807\u94FE\u5730\u5740\u7B49\u4E8E\u6E90\u94FE\u4E0A\u7684\u53D1\u9001\u65B9\u5730\u5740\u3002"
6529
+ },
6530
+ bridgeEstimateQuoteButton: {
6531
+ title: "\u4F30\u7B97\u8DE8\u94FE\u8D39\u7528",
6532
+ description: "\u5728\u5B9E\u9645\u6267\u884C\u8DE8\u94FE\u524D\u83B7\u53D6\u9884\u4F30\u62A5\u4EF7\uFF0C\u5E2E\u52A9\u60A8\u5728\u7EE7\u7EED\u524D\u505A\u51FA\u660E\u667A\u51B3\u7B56\u3002"
6533
+ },
6534
+ bridgeEstimatedQuoteMenu: {
6535
+ title: "\u4F30\u7B97\u8DE8\u94FE\u62A5\u4EF7",
6536
+ description: "\u8BF7\u52A1\u5FC5\u68C0\u67E5\u8DE8\u94FE\u8BBE\u7F6E\u548C\u9884\u4F30\u62A5\u4EF7\uFF0C\u7136\u540E\u786E\u8BA4\u4EA4\u6613\u3002"
6537
+ }
6358
6538
  }
6359
6539
  },
6360
6540
  receiveMenu: {
@@ -6384,7 +6564,12 @@ var init_zh = __esm({
6384
6564
  exchangeRate: "\u6C47\u7387",
6385
6565
  networkFee: "\u7F51\u7EDC\u8D39\u7528",
6386
6566
  serviceFee: "\u670D\u52A1\u8D39",
6387
- paymentMethod: "\u4ED8\u6B3E\u65B9\u5F0F"
6567
+ paymentMethod: "\u4ED8\u6B3E\u65B9\u5F0F",
6568
+ toAddress: {
6569
+ receiver: "\u6CE8\u610F\uFF01\u6536\u6B3E\u5730\u5740",
6570
+ message: "\u60A8\u5373\u5C06\u5411\u5916\u90E8\u5730\u5740\u8D2D\u4E70\u52A0\u5BC6\u8D27\u5E01\uFF0C\u800C\u975E\u60A8\u7684 embarkAI \u5730\u5740\u3002",
6571
+ suggestion: "\u8BF7\u786E\u8BA4\u8FD9\u662F\u60A8\u6B63\u786E\u7684\u9489\u5305\u5730\u5740\uFF0C\u5426\u5219\u60A8\u7684\u8D44\u91D1\u53EF\u80FD\u4E22\u5931\u3002"
6572
+ }
6388
6573
  },
6389
6574
  transactionHistory: {
6390
6575
  details: "\u8BE6\u60C5"
@@ -6398,11 +6583,30 @@ var init_zh = __esm({
6398
6583
  inputPlaceholder: {
6399
6584
  selectCurrencies: "\u9009\u62E9\u52A0\u5BC6\u8D27\u5E01\u548C\u6CD5\u5E01",
6400
6585
  providerMin: "{{provider}}\uFF1A\u6700\u4F4E\u9700\u8981 {{minimum}} {{currency}}"
6586
+ },
6587
+ onboarding: {
6588
+ buyMenu: {
6589
+ title: "\u8D2D\u4E70\u83DC\u5355",
6590
+ description: "\u5728\u8FD9\u91CC\u60A8\u53EF\u4EE5\u8D2D\u4E70\u52A0\u5BC6\u8D27\u5E01\u3002"
6591
+ },
6592
+ providerSelector: {
6593
+ title: "\u9009\u62E9\u670D\u52A1\u5546",
6594
+ description: "\u70B9\u51FB\u6B64\u5904\u9009\u62E9\u60A8\u8D2D\u4E70\u52A0\u5BC6\u8D27\u5E01\u7684\u670D\u52A1\u5546\u3002"
6595
+ },
6596
+ binanceMenu: {
6597
+ title: "\u8BBE\u7F6E\u8D2D\u4E70\u8BE6\u60C5",
6598
+ description: "\u70B9\u51FB\u6B64\u5904\u8BBE\u7F6E\u52A0\u5BC6\u8D27\u5E01\u8D2D\u4E70\u7684\u8BE6\u60C5\u3002"
6599
+ },
6600
+ binanceEstimate: {
6601
+ title: "\u786E\u8BA4\u8D2D\u4E70",
6602
+ description: "\u5728\u786E\u8BA4\u524D\u67E5\u770B\u8D2D\u4E70\u8BE6\u60C5\u3002"
6603
+ }
6401
6604
  }
6402
6605
  },
6403
6606
  portfolioMenu: {
6404
6607
  title: "\u60A8\u7684\u8D44\u4EA7",
6405
- noAssets: "\u672A\u627E\u5230\u8D44\u4EA7"
6608
+ noAssets: "\u672A\u627E\u5230\u8D44\u4EA7",
6609
+ noBlockscout: "\u672A\u627E\u5230\u94FE {{chain}} \u7684 Blockscout API"
6406
6610
  },
6407
6611
  transactionsMenu: {
6408
6612
  title: "\u4EA4\u6613\u8BB0\u5F55",
@@ -8490,7 +8694,9 @@ var init_onboarder = __esm({
8490
8694
  tooltip: { title: "", description: "" },
8491
8695
  setFrame: (tooltipStore) => set(tooltipStore),
8492
8696
  mountIntoNode: document.body,
8493
- setMountIntoNode: (mountIntoNode) => set({ mountIntoNode })
8697
+ setMountIntoNode: (mountIntoNode) => set({ mountIntoNode }),
8698
+ waitSecs: null,
8699
+ setWaitSecs: (waitSecs) => set({ waitSecs })
8494
8700
  }));
8495
8701
  Onboarder = class {
8496
8702
  tour = null;
@@ -8538,9 +8744,12 @@ var init_onboarder = __esm({
8538
8744
  useLayoutDataStore.getInitialState().setIsOnboarding(true);
8539
8745
  useLayoutStore.getInitialState().setIsDialogForced(true);
8540
8746
  const startElRef = this.elements.get(tour[0].elId)?.deref();
8541
- this.domObserver.observe(startElRef, { childList: true, subtree: true });
8542
- this.resizeObserver.observe(startElRef);
8543
- this.resizeObserver.observe(document.body);
8747
+ if (!!startElRef) {
8748
+ this.domObserver.observe(startElRef, { childList: true, subtree: true });
8749
+ this.resizeObserver.observe(startElRef);
8750
+ this.resizeObserver.observe(document.body);
8751
+ }
8752
+ useOnboardingStore.getState().setWaitSecs(tour[0].waitSecs || null);
8544
8753
  }
8545
8754
  endTour() {
8546
8755
  this.tour = null;
@@ -8573,6 +8782,7 @@ var init_onboarder = __esm({
8573
8782
  this.resizeObserver.observe(nextElRef);
8574
8783
  this.resizeObserver.observe(document.body);
8575
8784
  }
8785
+ useOnboardingStore.getState().setWaitSecs(nextStep.waitSecs || null);
8576
8786
  }, 200);
8577
8787
  }
8578
8788
  /**
@@ -8584,6 +8794,10 @@ var init_onboarder = __esm({
8584
8794
  if (!onboardingElementId || !elementRef) return;
8585
8795
  this.elements.set(onboardingElementId, new WeakRef(elementRef));
8586
8796
  }
8797
+ getCurrentStep() {
8798
+ if (!this.tour) return null;
8799
+ return this.tour[this.tourPointer];
8800
+ }
8587
8801
  };
8588
8802
  onboarder = new Onboarder();
8589
8803
  }
@@ -8639,16 +8853,16 @@ function OnboardingOverlay() {
8639
8853
  const colorMode = useLayoutStore((st) => st.colorMode);
8640
8854
  const toolipElementRef = (0, import_react20.useRef)(null);
8641
8855
  const {
8856
+ waitSecs,
8642
8857
  elRect,
8643
8858
  tooltip,
8644
8859
  /** if embark is opened, onboard overlay has to be portaled into embark's dialog node to keep layers & pointer-events normal structure */
8645
- mountIntoNode,
8646
- setMountIntoNode
8860
+ mountIntoNode
8647
8861
  } = useOnboardingStore();
8648
8862
  (0, import_react20.useEffect)(() => {
8649
8863
  setTimeout(() => {
8650
8864
  if (!page) {
8651
- setMountIntoNode(document.body);
8865
+ useOnboardingStore.getState().setMountIntoNode(document.body);
8652
8866
  return;
8653
8867
  }
8654
8868
  const lastMountIntoNode = useOnboardingStore.getState().mountIntoNode;
@@ -8656,7 +8870,7 @@ function OnboardingOverlay() {
8656
8870
  return;
8657
8871
  }
8658
8872
  const embarkUIContainer = document.querySelector('[data-purpose="embarkai-ui-container"]');
8659
- setMountIntoNode(embarkUIContainer);
8873
+ useOnboardingStore.getState().setMountIntoNode(embarkUIContainer);
8660
8874
  }, 0);
8661
8875
  }, [page]);
8662
8876
  const [continueCountdown, setContinueCountdown] = (0, import_react20.useState)(null);
@@ -8670,16 +8884,13 @@ function OnboardingOverlay() {
8670
8884
  const tt = {
8671
8885
  ...getTooltipXPos({ ...elRect, isMobileView, expandValue }),
8672
8886
  ...getTooltipYPos({ ...elRect, isMobileView, expandValue, ttCurrentHeight: toolipElementRef.current?.clientHeight })
8673
- // y: isMobileView
8674
- // ? elRect.y - expandValue * 2 - toolipElementRef.current?.clientHeight
8675
- // : elRect.y + elRect.height + expandValue
8676
8887
  };
8677
8888
  (0, import_react20.useEffect)(() => {
8678
- setContinueCountdown(NEXT_COUNTDOWN);
8889
+ if (!waitSecs) return;
8890
+ setContinueCountdown(waitSecs);
8679
8891
  const countdownInterval = setInterval(() => {
8680
8892
  setContinueCountdown((prev) => {
8681
- if (prev === null) return null;
8682
- if (prev <= 1) {
8893
+ if (prev <= 1 || prev === null) {
8683
8894
  clearInterval(countdownInterval);
8684
8895
  return null;
8685
8896
  }
@@ -8687,8 +8898,9 @@ function OnboardingOverlay() {
8687
8898
  });
8688
8899
  }, 1e3);
8689
8900
  return () => clearInterval(countdownInterval);
8690
- }, [tooltip.title]);
8901
+ }, [waitSecs]);
8691
8902
  if (!mountIntoNode) return null;
8903
+ const tourStepActions = onboarder.getCurrentStep()?.actions;
8692
8904
  return (0, import_react_dom.createPortal)(
8693
8905
  /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
8694
8906
  "div",
@@ -8756,9 +8968,32 @@ function OnboardingOverlay() {
8756
8968
  borderRadius: isMobileView || tt.isOverflowX ? "var(--ui-kit-bdrs)" : "0 0 var(--ui-kit-bdrs) var(--ui-kit-bdrs)"
8757
8969
  },
8758
8970
  children: [
8759
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { className: " font-bold", children: tooltip.title }),
8760
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { children: tooltip.description }),
8761
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
8971
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", {
8972
+ className: "font-bold",
8973
+ //@ts-expect-error i18n dynamic key typing
8974
+ children: t(tooltip.title)
8975
+ }),
8976
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", {
8977
+ className: "whitespace-pre-line",
8978
+ //@ts-expect-error i18n dynamic key typing
8979
+ children: t(tooltip.description)
8980
+ }),
8981
+ !!tourStepActions?.length ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "flex grid grid-cols-2 gap-[var(--ui-kit-gap)]", children: tourStepActions.map(({ caption, onClick }, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
8982
+ Button,
8983
+ {
8984
+ variant: "default",
8985
+ size: "medium",
8986
+ className: "w-full",
8987
+ onClick,
8988
+ disabled: continueCountdown !== null,
8989
+ children: [
8990
+ continueCountdown !== null ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react9.LoaderIcon, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react9.ChevronRightIcon, { className: "h-4 w-4" }),
8991
+ // @ts-expect-error i18n dynamic key typing
8992
+ t(caption)
8993
+ ]
8994
+ },
8995
+ index
8996
+ )) }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
8762
8997
  Button,
8763
8998
  {
8764
8999
  variant: "default-glow",
@@ -8768,7 +9003,7 @@ function OnboardingOverlay() {
8768
9003
  disabled: continueCountdown !== null,
8769
9004
  children: [
8770
9005
  continueCountdown !== null ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react9.LoaderIcon, { className: "h-4 w-4 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react9.ChevronRightIcon, { className: "h-4 w-4" }),
8771
- String(t("passport:common.next")).toUpperCase(),
9006
+ String(t("passport:common.continue")).toUpperCase(),
8772
9007
  " ",
8773
9008
  continueCountdown !== null && continueCountdown
8774
9009
  ]
@@ -8784,7 +9019,7 @@ function OnboardingOverlay() {
8784
9019
  mountIntoNode
8785
9020
  );
8786
9021
  }
8787
- var import_lucide_react9, import_react20, import_react_dom, import_jsx_runtime21, EXPAND, NEXT_COUNTDOWN, TOOLTIP_MIN_WIDTH;
9022
+ var import_lucide_react9, import_react20, import_react_dom, import_jsx_runtime21, EXPAND, TOOLTIP_MIN_WIDTH;
8788
9023
  var init_OnboardingOverlay = __esm({
8789
9024
  "src/internal/components/Onboarding/OnboardingOverlay.tsx"() {
8790
9025
  init_i18n();
@@ -8798,7 +9033,6 @@ var init_OnboardingOverlay = __esm({
8798
9033
  init_onboarder();
8799
9034
  import_jsx_runtime21 = require("react/jsx-runtime");
8800
9035
  EXPAND = 16;
8801
- NEXT_COUNTDOWN = 4;
8802
9036
  TOOLTIP_MIN_WIDTH = 256;
8803
9037
  }
8804
9038
  });
@@ -9863,8 +10097,9 @@ var init_onboarding_setup = __esm({
9863
10097
  BUY_MENU_BINANCE_TOUR = [
9864
10098
  {
9865
10099
  elId: "buymenu-page" /* buymenu */,
9866
- title: "Buy Menu",
9867
- description: "Here you can make crypto purchases.",
10100
+ title: "passport:buyMenu.onboarding.buyMenu.title",
10101
+ description: "passport:buyMenu.onboarding.buyMenu.description",
10102
+ waitSecs: 6,
9868
10103
  onNext: () => {
9869
10104
  const { setRampProvider, rampProvider } = useBuyMenuStore.getState();
9870
10105
  if (rampProvider !== "binance") setRampProvider("binance");
@@ -9872,15 +10107,13 @@ var init_onboarding_setup = __esm({
9872
10107
  },
9873
10108
  {
9874
10109
  elId: "buymenu-provider-selector" /* providerSelector */,
9875
- title: "Select a Provider",
9876
- description: "Cick here to choose a provider for your crypto purchase.",
9877
- onNext: () => {
9878
- }
10110
+ title: "passport:buyMenu.onboarding.providerSelector.title",
10111
+ description: "passport:buyMenu.onboarding.providerSelector.description"
9879
10112
  },
9880
10113
  {
9881
10114
  elId: "buymenu-binance-menu" /* binanceMenu */,
9882
- title: "Set Purchase Details",
9883
- description: "Click here to set the details of your crypto purchase.",
10115
+ title: "passport:buyMenu.onboarding.binanceMenu.title",
10116
+ description: "passport:buyMenu.onboarding.binanceMenu.description",
9884
10117
  onNext: () => {
9885
10118
  useBinanceStore.getState().setQuoteData({
9886
10119
  totalAmount: "0.12345678",
@@ -9896,8 +10129,8 @@ var init_onboarding_setup = __esm({
9896
10129
  },
9897
10130
  {
9898
10131
  elId: "buymenu-binance-estimate" /* binanceEstimate */,
9899
- title: "Confirm your purchase",
9900
- description: "Review the details of your purchase before confirming.",
10132
+ title: "passport:buyMenu.onboarding.binanceEstimate.title",
10133
+ description: "passport:buyMenu.onboarding.binanceEstimate.description",
9901
10134
  onNext: () => {
9902
10135
  useBuyMenuStore.getState().setIsProviderSummary(false);
9903
10136
  useBinanceStore.getState().setQuoteData(null);
@@ -9905,10 +10138,8 @@ var init_onboarding_setup = __esm({
9905
10138
  },
9906
10139
  {
9907
10140
  elId: "buymenu-tour-button" /* tourButton */,
9908
- title: "Tour Button",
9909
- description: 'Tours are available under the "Info" buttons of embarkAI menus. Click to have menu tour',
9910
- onNext: () => {
9911
- }
10141
+ title: "passport:common.onboarding.tourButton.title",
10142
+ description: "passport:common.onboarding.tourButton.description"
9912
10143
  }
9913
10144
  ];
9914
10145
  }
@@ -11790,7 +12021,7 @@ function BuyMenu() {
11790
12021
  size: "icon",
11791
12022
  className: "flex-none",
11792
12023
  onClick: () => onboarder.startTour(BUY_MENU_BINANCE_TOUR),
11793
- children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react19.InfoIcon, { className: "h-4 w-4" })
12024
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react19.CircleQuestionMarkIcon, { className: "h-4 w-4" })
11794
12025
  }
11795
12026
  ),
11796
12027
  /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
@@ -20116,6 +20347,7 @@ function SenderSelector(props) {
20116
20347
  pendingWalletRef.current = null;
20117
20348
  loginDirectWallet(pendingProfile);
20118
20349
  }, [directWalletIsConnected, directWalletAddress]);
20350
+ const isWalletProfileAvailable = !!directWalletProfile?.meta?.walletName && !!directWalletProfile?.externalId;
20119
20351
  return /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: [
20120
20352
  bridgeSenders.map((sender) => /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(
20121
20353
  Button,
@@ -20159,6 +20391,21 @@ function SenderSelector(props) {
20159
20391
  },
20160
20392
  `sender-${sender.address}`
20161
20393
  )),
20394
+ !isWalletProfileAvailable && /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Highlight, { type: "info", className: "flex flex-col w-full gap-[var(--ui-kit-gap)]", children: [
20395
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("span", { className: "whitespace-pre-line", children: t("passport:bridgeMenu.onboarding.bridgeSenderWalletSelector.description") }),
20396
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
20397
+ Button,
20398
+ {
20399
+ variant: "default",
20400
+ size: "large",
20401
+ className: "w-full",
20402
+ onClick: () => {
20403
+ useLayoutDataStore.getState().setPage("manage-wallet" /* MANAGE_WALLET */);
20404
+ },
20405
+ children: t("passport:bridgeMenu.actions.addExternalWalletProfile")
20406
+ }
20407
+ )
20408
+ ] }),
20162
20409
  walletMessage && /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Highlight, { type: "info", className: "flex flex-col w-full gap-[var(--ui-kit-gap)]", children: [
20163
20410
  /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("span", { children: walletMessage }),
20164
20411
  /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
@@ -20647,12 +20894,14 @@ function getAssetBalance(asset) {
20647
20894
  return Number((0, import_viem13.formatUnits)(BigInt(asset.balance || "0"), asset.decimals || 18));
20648
20895
  }
20649
20896
  function isOririnChainEmbarkSupported(originChain) {
20897
+ const activeChainId = useSession.getState().activeChainId;
20650
20898
  const supportedChain = [...import_read20.SUPPORTED_CHAINS].map(([chainId]) => chainId);
20651
- return supportedChain.includes(CHAINS_UI_META[originChain].chainID);
20899
+ return supportedChain.includes(CHAINS_UI_META[originChain].chainID) && activeChainId === CHAINS_UI_META[originChain].chainID;
20652
20900
  }
20653
20901
  var import_read20, import_viem13;
20654
20902
  var init_utils9 = __esm({
20655
20903
  "src/internal/components/SendMenu/hyperbridge/utils.ts"() {
20904
+ init_SessionContext();
20656
20905
  import_read20 = require("@embarkai/core/read");
20657
20906
  import_viem13 = require("viem");
20658
20907
  init_chains();
@@ -21000,7 +21249,7 @@ function useMenuTitle(warpRoutes) {
21000
21249
  const updateMenuTitle = useFlowSelectorStore.getState().setMenuTitle;
21001
21250
  switch (true) {
21002
21251
  case bridgeStep === "sender-selector":
21003
- updateMenuTitle(t("passport:bridgeMenu.labels.sender"));
21252
+ updateMenuTitle(t("passport:bridgeMenu.labels.selectSender"));
21004
21253
  break;
21005
21254
  case bridgeStep === "select-token":
21006
21255
  updateMenuTitle(t("passport:bridgeMenu.labels.selectToken"));
@@ -21034,6 +21283,161 @@ var init_useMenuTitle = __esm({
21034
21283
  }
21035
21284
  });
21036
21285
 
21286
+ // src/internal/components/SendMenu/send/useSendStore.ts
21287
+ var import_zustand15, useSendStore;
21288
+ var init_useSendStore = __esm({
21289
+ "src/internal/components/SendMenu/send/useSendStore.ts"() {
21290
+ import_zustand15 = require("zustand");
21291
+ init_useFlowSelector();
21292
+ useSendStore = (0, import_zustand15.create)((set) => ({
21293
+ recipient: "",
21294
+ //
21295
+ amount: "",
21296
+ selectedAsset: null,
21297
+ //
21298
+ txStep: "input",
21299
+ //
21300
+ // sendError: null,
21301
+ //
21302
+ setRecipient: (recipient) => {
21303
+ useFlowSelectorStore.getState().setError(null);
21304
+ set({ recipient });
21305
+ },
21306
+ //
21307
+ setAmount: (amount) => {
21308
+ useFlowSelectorStore.getState().setError(null);
21309
+ set({ amount });
21310
+ },
21311
+ setSelectedAsset: (selectedAsset) => {
21312
+ useFlowSelectorStore.getState().setError(null);
21313
+ set({ selectedAsset });
21314
+ },
21315
+ //
21316
+ setTxStep: (txStep) => {
21317
+ useFlowSelectorStore.getState().setError(null);
21318
+ useFlowSelectorStore.getState().setRenderKey(`send-${txStep}-${Date.now()}`);
21319
+ set({ txStep });
21320
+ }
21321
+ }));
21322
+ }
21323
+ });
21324
+
21325
+ // src/internal/components/SendMenu/onboarding.setup.ts
21326
+ var TOUR_SEND_ASSET, TOUR_BRIDGE_QUOTE, SEND_MENU_TOUR, BRIDGE_MENU_TOUR;
21327
+ var init_onboarding_setup2 = __esm({
21328
+ "src/internal/components/SendMenu/onboarding.setup.ts"() {
21329
+ init_useBridgeStore();
21330
+ init_useSendStore();
21331
+ TOUR_SEND_ASSET = {
21332
+ name: "USDT",
21333
+ symbol: "USDT",
21334
+ address: "0xee7Fc418f5659a366b548b4E205d374C1F0B46e7",
21335
+ balance: "1000",
21336
+ formattedBalance: "1000",
21337
+ type: "erc20"
21338
+ };
21339
+ TOUR_BRIDGE_QUOTE = {
21340
+ amount: "123",
21341
+ igpFee: "0.123",
21342
+ localFee: "0.456",
21343
+ igpSymbol: "USDT",
21344
+ localSymbol: "USDT"
21345
+ };
21346
+ SEND_MENU_TOUR = [
21347
+ {
21348
+ elId: "sendmenu-page" /* sendMenu */,
21349
+ title: "passport:sendMenu.onboarding.sendMenu.title",
21350
+ description: "passport:sendMenu.onboarding.sendMenu.description",
21351
+ waitSecs: 4,
21352
+ onNext: () => {
21353
+ const { setAmount, setRecipient, setSelectedAsset, setTxStep } = useSendStore.getState();
21354
+ setSelectedAsset(TOUR_SEND_ASSET);
21355
+ setAmount("123");
21356
+ setRecipient("0x1234567890123456789012345678901234567890");
21357
+ setTxStep("confirm");
21358
+ }
21359
+ },
21360
+ {
21361
+ elId: "sendmenu-crypto-summary" /* sendCryptoSummary */,
21362
+ title: "passport:sendMenu.onboarding.sendCryptoSummary.title",
21363
+ description: "passport:sendMenu.onboarding.sendCryptoSummary.description",
21364
+ onNext: () => {
21365
+ const { setAmount, setRecipient, setSelectedAsset, setTxStep } = useSendStore.getState();
21366
+ setTxStep("input");
21367
+ setRecipient("");
21368
+ setAmount("");
21369
+ setSelectedAsset(null);
21370
+ }
21371
+ },
21372
+ {
21373
+ elId: "sendmenu-tour-button" /* tourButton */,
21374
+ title: "passport:common.onboarding.tourButton.title",
21375
+ description: "passport:common.onboarding.tourButton.description"
21376
+ }
21377
+ ];
21378
+ BRIDGE_MENU_TOUR = [
21379
+ {
21380
+ elId: "sendmenu-page" /* sendMenu */,
21381
+ title: "passport:bridgeMenu.onboarding.bridgeMenu.title",
21382
+ description: "passport:bridgeMenu.onboarding.bridgeMenu.description",
21383
+ waitSecs: 5,
21384
+ onNext: () => {
21385
+ const { setHyperRoute, setBridgeAssetSymbol, setOriginChain, setDestinationChain } = useBridgeStore.getState();
21386
+ setHyperRoute("USDT/ethereum-lumiaprism");
21387
+ setBridgeAssetSymbol("USDT");
21388
+ setOriginChain("lumiaprism");
21389
+ setDestinationChain("ethereum");
21390
+ }
21391
+ },
21392
+ {
21393
+ elId: "bridgemenu-sender-wallet-selector" /* bridgeSenderWalletSelector */,
21394
+ title: "passport:bridgeMenu.onboarding.bridgeSenderWalletSelector.title",
21395
+ description: "passport:bridgeMenu.onboarding.bridgeSenderWalletSelector.description"
21396
+ },
21397
+ {
21398
+ elId: "bridgemenu-crypto-menu-asset-selector" /* bridgeCryptoAssetSelector */,
21399
+ title: "passport:bridgeMenu.onboarding.bridgeCryptoAssetSelector.title",
21400
+ description: "passport:bridgeMenu.onboarding.bridgeCryptoAssetSelector.description"
21401
+ },
21402
+ {
21403
+ elId: "bridgemenu-crypto-menu-chain-pair-swapper" /* bridgeChainPairSwapper */,
21404
+ title: "passport:bridgeMenu.onboarding.bridgeChainPairSwapper.title",
21405
+ description: "passport:bridgeMenu.onboarding.bridgeChainPairSwapper.description"
21406
+ },
21407
+ {
21408
+ elId: "bridgemenu-crypto-menu-amount-recipient-inputs" /* bridgeAmountRecipientInputs */,
21409
+ title: "passport:bridgeMenu.onboarding.bridgeAmountRecipientInputs.title",
21410
+ description: "passport:bridgeMenu.onboarding.bridgeAmountRecipientInputs.description"
21411
+ },
21412
+ {
21413
+ elId: "bridgemenu-crypto-menu-estimate-quote-button" /* bridgeEstimateQuoteButton */,
21414
+ title: "passport:bridgeMenu.onboarding.bridgeEstimateQuoteButton.title",
21415
+ description: "passport:bridgeMenu.onboarding.bridgeEstimateQuoteButton.description",
21416
+ onNext: () => {
21417
+ const { setQuote, setBridgeStep } = useBridgeStore.getState();
21418
+ setQuote(TOUR_BRIDGE_QUOTE);
21419
+ setBridgeStep("confirm");
21420
+ }
21421
+ },
21422
+ {
21423
+ elId: "bridgemenu-crypto-menu-estimate-details-menu" /* bridgeEstimatedQuoteMenu */,
21424
+ title: "passport:bridgeMenu.onboarding.bridgeEstimatedQuoteMenu.title",
21425
+ description: "passport:bridgeMenu.onboarding.bridgeEstimatedQuoteMenu.description",
21426
+ onNext: () => {
21427
+ const { setQuote, setBridgeStep } = useBridgeStore.getState();
21428
+ setQuote(null);
21429
+ setBridgeStep("select");
21430
+ }
21431
+ },
21432
+ {
21433
+ elId: "sendmenu-tour-button" /* tourButton */,
21434
+ title: "passport:common.onboarding.tourButton.title",
21435
+ description: "passport:common.onboarding.tourButton.description"
21436
+ }
21437
+ ];
21438
+ }
21439
+ });
21440
+
21037
21441
  // src/internal/components/SendMenu/hyperbridge/components/ResolveChainIcon.tsx
21038
21442
  function ResolveChainIcon(props) {
21039
21443
  const Icon2 = CHAINS_UI_META[props.chainName]?.Icon || TOKENS_ICONS.EMBARKAI;
@@ -21053,6 +21457,7 @@ function useBridgeBalance(hyperlaneWarpRoutes) {
21053
21457
  const qc = (0, import_react_query49.useQueryClient)();
21054
21458
  const { t } = useT();
21055
21459
  const address = useSession((st) => st.address);
21460
+ const activeChainId = useSession((st) => st.activeChainId);
21056
21461
  const directWalletAddress = useExternalWalletStore((st) => st.externalAddress);
21057
21462
  const directWalletChainId = useExternalWalletStore((st) => st.externalChainId);
21058
21463
  const { switchChainAsync } = (0, import_wagmi5.useSwitchChain)();
@@ -21175,7 +21580,7 @@ function useBridgeBalance(hyperlaneWarpRoutes) {
21175
21580
  break;
21176
21581
  }
21177
21582
  }, [bridgeSender, originChain, directWalletChainId, switchChainAsync]);
21178
- const embarkBalance = embarkTokenBalanace ? getAssetBalance(embarkTokenBalanace) : 0;
21583
+ const embarkBalance = CHAINS_UI_META[originChain].chainID === activeChainId && embarkTokenBalanace ? getAssetBalance(embarkTokenBalanace) : 0;
21179
21584
  const externalWalletBalance = isSelectedTokenNative ? (0, import_viem14.formatUnits)(externalNativeBalanceData?.value || BigInt(0), externalNativeBalanceData?.decimals || 18) : (0, import_viem14.formatUnits)(externalBalanceData?.value || BigInt(0), externalBalanceData?.decimals || 18);
21180
21585
  return {
21181
21586
  routeTokenBalance: isEmbarkSender ? embarkBalance : externalWalletBalance,
@@ -21235,83 +21640,91 @@ function SelectStep(props) {
21235
21640
  const isQuoteEstimationDisabled = isQuoteEstimating || !hyperlaneWarpRoutes.length || !selectedSender || !originChain || !destinationChain || !hyperRoute || isFalsyAmount || isBalanceInsufficient;
21236
21641
  return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "w-full flex flex-col gap-[var(--ui-kit-gap)] items-center", children: [
21237
21642
  /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: [
21238
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
21239
- "div",
21240
- {
21241
- className: cn(
21242
- "flex items-center justify-between gap-[var(--ui-kit-gap)]",
21243
- "text-[10px] text-[var(--ui-kit-fg-muted)] leading-4"
21244
- ),
21245
- children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "block text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:bridgeMenu.labels.sender") })
21246
- }
21247
- ),
21248
21643
  /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
21249
- Button,
21644
+ "div",
21250
21645
  {
21251
- disabled: !hyperlaneWarpRoutes.length || isQuoteEstimating,
21252
- variant: "secondary",
21253
- className: "w-full justify-between",
21254
- onClick: () => {
21255
- useFlowSelectorStore.getState().setError(null);
21256
- useBridgeStore.getState().setBridgeStep("sender-selector");
21257
- },
21646
+ ref: (inst) => onboarder.registerElement("bridgemenu-sender-wallet-selector" /* bridgeSenderWalletSelector */, inst),
21647
+ className: "flex flex-col gap-[var(--ui-kit-gap)]",
21258
21648
  children: [
21259
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-[var(--ui-kit-gap)]", children: [
21260
- selectedSender?.Icon && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(selectedSender.Icon, { className: "w-6 h-6" }),
21261
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: selectedSender?.name || "N / A" })
21262
- ] }),
21263
- selectedSender?.address && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: "block text-[10px] font-mono!", children: [
21264
- selectedSender.address.slice(0, 6),
21265
- "...",
21266
- selectedSender.address.slice(-4)
21267
- ] })
21649
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "block text-[10px] text-[var(--ui-kit-fg-muted)] leading-4", children: t("passport:bridgeMenu.labels.selectSender") }),
21650
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
21651
+ Button,
21652
+ {
21653
+ disabled: !hyperlaneWarpRoutes.length || isQuoteEstimating,
21654
+ variant: "secondary",
21655
+ className: "w-full justify-between",
21656
+ onClick: () => {
21657
+ useFlowSelectorStore.getState().setError(null);
21658
+ useBridgeStore.getState().setBridgeStep("sender-selector");
21659
+ },
21660
+ children: [
21661
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-[var(--ui-kit-gap)]", children: [
21662
+ selectedSender?.Icon && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(selectedSender.Icon, { className: "w-6 h-6" }),
21663
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: selectedSender?.name || "N / A" })
21664
+ ] }),
21665
+ selectedSender?.address && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: "block text-[10px] font-mono!", children: [
21666
+ selectedSender.address.slice(0, 6),
21667
+ "...",
21668
+ selectedSender.address.slice(-4)
21669
+ ] })
21670
+ ]
21671
+ }
21672
+ )
21268
21673
  ]
21269
21674
  }
21270
21675
  ),
21271
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center justify-between gap-[var(--ui-kit-gap)] text-[10px]", children: [
21272
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: t("passport:bridgeMenu.labels.selectToken") }),
21273
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "w-4 h-4" }),
21274
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: "flex items-center gap-[var(--ui-kit-gap)] leading-4", children: [
21275
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: [
21276
- t("passport:common.balance"),
21277
- ": "
21278
- ] }),
21279
- isRouteTokenBalanceLoading && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react59.LoaderIcon, { className: "w-4 h-4 animate-spin text-[var(--ui-kit-fg-muted)]" }),
21280
- !isRouteTokenBalanceLoading && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: cn("font-semibold", { "text-[var(--ui-kit-bg-error)]": isBalanceInsufficient }), children: [
21281
- formatPrice(Number(routeTokenBalance || 0)),
21282
- " ",
21283
- selectedWarpRoute?.symbol
21284
- ] })
21285
- ] })
21286
- ] }),
21287
21676
  /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
21288
- Button,
21677
+ "div",
21289
21678
  {
21290
- disabled: !hyperlaneWarpRoutes.length || isQuoteEstimating,
21291
- variant: "secondary",
21292
- className: "w-full justify-between",
21293
- onClick: () => {
21294
- useFlowSelectorStore.getState().setError(null);
21295
- useBridgeStore.getState().setBridgeStep("select-token");
21296
- },
21679
+ ref: (inst) => onboarder.registerElement("bridgemenu-crypto-menu-asset-selector" /* bridgeCryptoAssetSelector */, inst),
21680
+ className: "flex flex-col gap-[var(--ui-kit-gap)]",
21297
21681
  children: [
21298
- selectedWarpRoute ? /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-[var(--ui-kit-gap)]", children: [
21299
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(SelectedWarpRoteIcon, { className: "w-6 h-6" }),
21300
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: selectedWarpRoute.symbol })
21301
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-[var(--ui-kit-gap)]", children: [
21302
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react59.ArrowLeftRightIcon, { className: "w-6 h-6" }),
21303
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: hyperlaneWarpRoutes.length ? t("passport:bridgeMenu.labels.selectToken") : t("passport:bridgeMenu.errors.noWarpRoutes") })
21682
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center justify-between gap-[var(--ui-kit-gap)] text-[10px] leading-4", children: [
21683
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: t("passport:bridgeMenu.labels.selectToken") }),
21684
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: "flex items-center gap-[var(--ui-kit-gap)]", children: [
21685
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: [
21686
+ t("passport:common.balance"),
21687
+ ": "
21688
+ ] }),
21689
+ isRouteTokenBalanceLoading && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react59.LoaderIcon, { className: "w-4 h-4 animate-spin text-[var(--ui-kit-fg-muted)]" }),
21690
+ !isRouteTokenBalanceLoading && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("span", { className: cn("font-semibold", { "text-[var(--ui-kit-bg-error)]": isBalanceInsufficient }), children: [
21691
+ formatPrice(Number(routeTokenBalance || 0)),
21692
+ " ",
21693
+ selectedWarpRoute?.symbol
21694
+ ] })
21695
+ ] })
21304
21696
  ] }),
21305
- !!selectedWarpRoute?.chainPair && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
21306
- Badge,
21697
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
21698
+ Button,
21307
21699
  {
21308
- variant: "outline",
21309
- size: "medium",
21310
- className: "bg-[var(--ui-kit-bg)] flex items-center gap-[var(--ui-kit-gap)]",
21311
- children: selectedWarpRoute.chainPair.map((chain, chIdx) => /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_react71.Fragment, { children: [
21312
- chIdx > 0 && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react59.ArrowLeftRightIcon, { className: "w-4 h-4 " }),
21313
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(ResolveChainIcon, { chainName: chain.chainName, className: "w-4 h-4" })
21314
- ] }, `${selectedWarpRoute.id}-icon-${chain.chainID}-${chIdx}`))
21700
+ disabled: !hyperlaneWarpRoutes.length || isQuoteEstimating,
21701
+ variant: "secondary",
21702
+ className: "w-full justify-between",
21703
+ onClick: () => {
21704
+ useFlowSelectorStore.getState().setError(null);
21705
+ useBridgeStore.getState().setBridgeStep("select-token");
21706
+ },
21707
+ children: [
21708
+ selectedWarpRoute ? /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-[var(--ui-kit-gap)]", children: [
21709
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(SelectedWarpRoteIcon, { className: "w-6 h-6" }),
21710
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: selectedWarpRoute.symbol })
21711
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "flex items-center gap-[var(--ui-kit-gap)]", children: [
21712
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react59.ArrowLeftRightIcon, { className: "w-6 h-6" }),
21713
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: hyperlaneWarpRoutes.length ? t("passport:bridgeMenu.labels.selectToken") : t("passport:bridgeMenu.errors.noWarpRoutes") })
21714
+ ] }),
21715
+ !!selectedWarpRoute?.chainPair && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
21716
+ Badge,
21717
+ {
21718
+ variant: "outline",
21719
+ size: "medium",
21720
+ className: "bg-[var(--ui-kit-bg)] flex items-center gap-[var(--ui-kit-gap)]",
21721
+ children: selectedWarpRoute.chainPair.map((chain, chIdx) => /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_react71.Fragment, { children: [
21722
+ chIdx > 0 && /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react59.ArrowLeftRightIcon, { className: "w-4 h-4 " }),
21723
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(ResolveChainIcon, { chainName: chain.chainName, className: "w-4 h-4" })
21724
+ ] }, `${selectedWarpRoute.id}-icon-${chain.chainID}-${chIdx}`))
21725
+ }
21726
+ )
21727
+ ]
21315
21728
  }
21316
21729
  )
21317
21730
  ]
@@ -21320,82 +21733,87 @@ function SelectStep(props) {
21320
21733
  /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
21321
21734
  "div",
21322
21735
  {
21323
- className: cn(
21324
- "flex items-center justify-between gap-[var(--ui-kit-gap)]",
21325
- "text-[10px] text-[var(--ui-kit-fg-muted)] leading-4"
21326
- ),
21736
+ ref: (inst) => onboarder.registerElement("bridgemenu-crypto-menu-chain-pair-swapper" /* bridgeChainPairSwapper */, inst),
21737
+ className: "flex flex-col gap-[var(--ui-kit-gap)]",
21327
21738
  children: [
21328
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "block text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:bridgeMenu.labels.fromChain") }),
21329
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "block text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:bridgeMenu.labels.toChain") })
21739
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
21740
+ "div",
21741
+ {
21742
+ className: cn(
21743
+ "flex items-center justify-between gap-[var(--ui-kit-gap)]",
21744
+ "text-[10px] text-[var(--ui-kit-fg-muted)] leading-4"
21745
+ ),
21746
+ children: [
21747
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "block text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:bridgeMenu.labels.fromChain") }),
21748
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "block text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:bridgeMenu.labels.toChain") })
21749
+ ]
21750
+ }
21751
+ ),
21752
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "w-full flex items-center justify-center", children: [
21753
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Badge, { variant: "outline", size: "large", className: "block flex-1 flex gap-[var(--ui-kit-gap)] justify-center", children: originChain ? /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_jsx_runtime97.Fragment, { children: [
21754
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(ResolveChainIcon, { chainName: originChain, className: "w-6 h-6" }),
21755
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "block max-w-[100px] truncate", children: CHAINS_UI_META[originChain]?.chainLabel })
21756
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: "N/A" }) }),
21757
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
21758
+ Button,
21759
+ {
21760
+ size: "icon",
21761
+ disabled: !hyperlaneWarpRoutes.length || isQuoteEstimating,
21762
+ variant: "ghost",
21763
+ onClick: swapChains,
21764
+ children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react59.ArrowRightLeftIcon, { className: "w-4 h-4 " })
21765
+ }
21766
+ ),
21767
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Badge, { variant: "outline", size: "large", className: "block flex-1 flex gap-[var(--ui-kit-gap)] justify-center", children: destinationChain ? /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_jsx_runtime97.Fragment, { children: [
21768
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(ResolveChainIcon, { chainName: destinationChain, className: "w-6 h-6" }),
21769
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "block max-w-[100px] truncate", children: CHAINS_UI_META[destinationChain]?.chainLabel })
21770
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: "N/A" }) })
21771
+ ] })
21330
21772
  ]
21331
21773
  }
21332
21774
  ),
21333
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)("div", { className: "w-full flex items-center justify-center", children: [
21334
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Badge, { variant: "outline", size: "large", className: "block flex-1 flex gap-[var(--ui-kit-gap)] justify-center", children: originChain ? /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_jsx_runtime97.Fragment, { children: [
21335
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(ResolveChainIcon, { chainName: originChain, className: "w-6 h-6" }),
21336
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "block max-w-[100px] truncate", children: CHAINS_UI_META[originChain]?.chainLabel })
21337
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: "N/A" }) }),
21338
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
21339
- Button,
21340
- {
21341
- size: "icon",
21342
- disabled: !hyperlaneWarpRoutes.length || isQuoteEstimating,
21343
- variant: "ghost",
21344
- onClick: swapChains,
21345
- children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react59.ArrowRightLeftIcon, { className: "w-4 h-4 " })
21346
- }
21347
- ),
21348
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(Badge, { variant: "outline", size: "large", className: "block flex-1 flex gap-[var(--ui-kit-gap)] justify-center", children: destinationChain ? /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(import_jsx_runtime97.Fragment, { children: [
21349
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(ResolveChainIcon, { chainName: destinationChain, className: "w-6 h-6" }),
21350
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "block max-w-[100px] truncate", children: CHAINS_UI_META[destinationChain]?.chainLabel })
21351
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: "N/A" }) })
21352
- ] }),
21353
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)] leading-4", children: t("passport:common.amount") }),
21354
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
21355
- Input,
21775
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
21776
+ "div",
21356
21777
  {
21357
- type: "text",
21358
- disabled: isQuoteEstimating || !originChain || !destinationChain || !hyperRoute,
21359
- placeholder: t("passport:common.amount"),
21360
- onChange: (e) => {
21361
- useFlowSelectorStore.getState().setError(null);
21362
- let { value } = e.target;
21363
- const regex = /^(0|[1-9]\d*)(\.\d{0,5})?$/;
21364
- if (value.length > 1 && value.startsWith("0") && !value.startsWith("0.")) {
21365
- value = value.slice(1);
21366
- }
21367
- if (regex.test(value) || value === "") {
21368
- if (value === "") {
21369
- useBridgeStore.getState().setAmount("0");
21370
- } else {
21371
- useBridgeStore.getState().setAmount(value);
21372
- }
21373
- }
21374
- },
21375
- value: amount,
21376
- element: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
21377
- Button,
21378
- {
21379
- size: "small",
21380
- variant: "ghost",
21381
- disabled: isBalanceInsufficient,
21382
- onClick: () => useBridgeStore.getState().setAmount(Number(routeTokenBalance || 0).toString()),
21383
- children: String(t("passport:common.max")).toUpperCase()
21384
- }
21385
- )
21386
- }
21387
- ),
21388
- /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
21389
- "div",
21390
- {
21391
- className: cn(
21392
- //
21393
- "w-full flex flex-col",
21394
- "text-[10px]",
21395
- "gap-[var(--ui-kit-gap)] pb-[var(--ui-kit-pd)]"
21396
- ),
21778
+ ref: (inst) => onboarder.registerElement("bridgemenu-crypto-menu-amount-recipient-inputs" /* bridgeAmountRecipientInputs */, inst),
21779
+ className: "flex flex-col gap-[var(--ui-kit-gap)]",
21397
21780
  children: [
21398
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)] leading-4", children: t("passport:bridgeMenu.labels.optionalRecipient") }),
21781
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)] text-[10px] leading-4", children: t("passport:common.amount") }),
21782
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
21783
+ Input,
21784
+ {
21785
+ type: "text",
21786
+ disabled: isQuoteEstimating || !originChain || !destinationChain || !hyperRoute,
21787
+ placeholder: t("passport:common.amount"),
21788
+ onChange: (e) => {
21789
+ useFlowSelectorStore.getState().setError(null);
21790
+ let { value } = e.target;
21791
+ const regex = /^(0|[1-9]\d*)(\.\d{0,5})?$/;
21792
+ if (value.length > 1 && value.startsWith("0") && !value.startsWith("0.")) {
21793
+ value = value.slice(1);
21794
+ }
21795
+ if (regex.test(value) || value === "") {
21796
+ if (value === "") {
21797
+ useBridgeStore.getState().setAmount("0");
21798
+ } else {
21799
+ useBridgeStore.getState().setAmount(value);
21800
+ }
21801
+ }
21802
+ },
21803
+ value: amount,
21804
+ element: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
21805
+ Button,
21806
+ {
21807
+ size: "small",
21808
+ variant: "ghost",
21809
+ disabled: isBalanceInsufficient,
21810
+ onClick: () => useBridgeStore.getState().setAmount(Number(routeTokenBalance || 0).toString()),
21811
+ children: String(t("passport:common.max")).toUpperCase()
21812
+ }
21813
+ )
21814
+ }
21815
+ ),
21816
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)] text-[10px] leading-4", children: t("passport:bridgeMenu.labels.optionalRecipient") }),
21399
21817
  /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
21400
21818
  Input,
21401
21819
  {
@@ -21430,6 +21848,7 @@ function SelectStep(props) {
21430
21848
  !isError && /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
21431
21849
  Button,
21432
21850
  {
21851
+ ref: (inst) => onboarder.registerElement("bridgemenu-crypto-menu-estimate-quote-button" /* bridgeEstimateQuoteButton */, inst),
21433
21852
  size: "large",
21434
21853
  variant: "default",
21435
21854
  className: "w-full",
@@ -21452,6 +21871,7 @@ var init_SelectStep = __esm({
21452
21871
  import_react71 = require("react");
21453
21872
  init_priceFormatter();
21454
21873
  init_utils2();
21874
+ init_Onboarding();
21455
21875
  init_badge();
21456
21876
  init_button();
21457
21877
  init_input();
@@ -21515,97 +21935,104 @@ function ConfirmStep(props) {
21515
21935
  return routeId === hyperRoute && chainPairNames.includes(originChain) && chainPairNames.includes(destinationChain);
21516
21936
  });
21517
21937
  const isConfirmationDisabled = !quote || isAssetBridging || !userConsent;
21518
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "flex flex-col gap-[var(--ui-kit-gap)] w-full", children: [
21519
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Highlight, { type: "info", className: "flex flex-col gap-[var(--ui-kit-gap)] w-full", children: [
21520
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: P_CN, children: [
21521
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:common.asset") }),
21522
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: selectedWarpRoute.symbol })
21523
- ] }),
21524
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: P_CN, children: [
21525
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.quote.sender") }),
21526
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: bridgeSender.name + " (" + (bridgeSender?.address || "").slice(0, 6) + "..." + (bridgeSender?.address || "").slice(-4) + ")" })
21527
- ] }),
21528
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: P_CN, children: [
21529
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.labels.fromChain") }),
21530
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: CHAINS_UI_META[originChain].chainLabel })
21531
- ] }),
21532
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: P_CN, children: [
21533
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.labels.toChain") }),
21534
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: CHAINS_UI_META[destinationChain].chainLabel })
21535
- ] }),
21536
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: P_CN, children: [
21537
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.quote.amount") }),
21538
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: formatPrice(Number(quote.amount)) })
21539
- ] }),
21540
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: "flex-1 flex items-center justify-between gap-[var(--ui-kit-gap)]", children: [
21541
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.quote.igpFee") }),
21542
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("strong", { children: [
21543
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: formatPrice(Number(quote.igpFee)) }),
21544
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { children: [
21545
- " ",
21546
- quote.igpSymbol
21547
- ] })
21548
- ] })
21549
- ] }),
21550
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: "flex-1 flex items-center justify-between gap-[var(--ui-kit-gap)]", children: [
21551
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.quote.localFee") }),
21552
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("strong", { children: [
21553
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: formatPrice(Number(quote.localFee)) }),
21554
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { children: [
21555
- " ",
21556
- quote.localSymbol
21938
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
21939
+ "div",
21940
+ {
21941
+ ref: (inst) => onboarder.registerElement("bridgemenu-crypto-menu-estimate-details-menu" /* bridgeEstimatedQuoteMenu */, inst),
21942
+ className: "flex flex-col gap-[var(--ui-kit-gap)] w-full",
21943
+ children: [
21944
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Highlight, { type: "info", className: "flex flex-col gap-[var(--ui-kit-gap)] w-full", children: [
21945
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: P_CN, children: [
21946
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:common.asset") }),
21947
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: selectedWarpRoute.symbol })
21948
+ ] }),
21949
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: P_CN, children: [
21950
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.quote.sender") }),
21951
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: bridgeSender.name + " (" + (bridgeSender?.address || "").slice(0, 6) + "..." + (bridgeSender?.address || "").slice(-4) + ")" })
21952
+ ] }),
21953
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: P_CN, children: [
21954
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.labels.fromChain") }),
21955
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: CHAINS_UI_META[originChain].chainLabel })
21956
+ ] }),
21957
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: P_CN, children: [
21958
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.labels.toChain") }),
21959
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: CHAINS_UI_META[destinationChain].chainLabel })
21960
+ ] }),
21961
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: P_CN, children: [
21962
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.quote.amount") }),
21963
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: formatPrice(Number(quote.amount)) })
21964
+ ] }),
21965
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: "flex-1 flex items-center justify-between gap-[var(--ui-kit-gap)]", children: [
21966
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.quote.igpFee") }),
21967
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("strong", { children: [
21968
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: formatPrice(Number(quote.igpFee)) }),
21969
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { children: [
21970
+ " ",
21971
+ quote.igpSymbol
21972
+ ] })
21973
+ ] })
21974
+ ] }),
21975
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: "flex-1 flex items-center justify-between gap-[var(--ui-kit-gap)]", children: [
21976
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.quote.localFee") }),
21977
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("strong", { children: [
21978
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: formatPrice(Number(quote.localFee)) }),
21979
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { children: [
21980
+ " ",
21981
+ quote.localSymbol
21982
+ ] })
21983
+ ] })
21984
+ ] }),
21985
+ quote.tokenFee && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: P_CN, children: [
21986
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.quote.tokenFee") }),
21987
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: formatPrice(Number(quote.tokenFee)) })
21557
21988
  ] })
21558
- ] })
21559
- ] }),
21560
- quote.tokenFee && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: P_CN, children: [
21561
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: t("passport:bridgeMenu.quote.tokenFee") }),
21562
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: formatPrice(Number(quote.tokenFee)) })
21563
- ] })
21564
- ] }),
21565
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Highlight, { type: "warning", className: "flex flex-col gap-[var(--ui-kit-gap)] w-full", children: [
21566
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "text-xs", children: t("passport:bridgeMenu.quote.recipient") }),
21567
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21568
- "span",
21569
- {
21570
- className: cn(
21571
- "w-full flex items-center justify-center h-8",
21572
- "px-[var(--ui-kit-pd)]",
21573
- "bg-[var(--ui-kit-bg)] text-[var(--ui-kit-fg)]",
21574
- "rounded-[var(--ui-kit-el-bdrs)]"
21989
+ ] }),
21990
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Highlight, { type: "warning", className: "flex flex-col gap-[var(--ui-kit-gap)] w-full", children: [
21991
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "text-xs", children: t("passport:bridgeMenu.quote.recipient") }),
21992
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21993
+ "span",
21994
+ {
21995
+ className: cn(
21996
+ "w-full flex items-center justify-center h-8",
21997
+ "px-[var(--ui-kit-pd)]",
21998
+ "bg-[var(--ui-kit-bg)] text-[var(--ui-kit-fg)]",
21999
+ "rounded-[var(--ui-kit-el-bdrs)]"
22000
+ ),
22001
+ children: (recipient || address).slice(0, 10) + "..." + (recipient || address).slice(-8)
22002
+ }
21575
22003
  ),
21576
- children: (recipient || address).slice(0, 10) + "..." + (recipient || address).slice(-8)
21577
- }
21578
- ),
21579
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "text-xs", children: t("passport:bridgeMenu.consent.recipient", {
21580
- address: (recipient || address).slice(0, 6) + "..." + (recipient || address).slice(-4),
21581
- destinationChain: CHAINS_UI_META[destinationChain].chainLabel,
21582
- asset: selectedWarpRoute.symbol
21583
- }) }),
21584
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "text-xs text-[var(--ui-kit-bg-error)]", children: t("passport:bridgeMenu.consent.lostFunds") }),
21585
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("label", { className: "flex items-center gap-[var(--ui-kit-gap)] text-xs cursor-pointer", children: [
21586
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Checkbox, { checked: userConsent, onCheckedChange: () => setUserConsent((prev) => !prev) }),
21587
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: t("passport:bridgeMenu.actions.confirmBridge", {
21588
- amount: quote.amount,
21589
- asset: selectedWarpRoute.symbol,
21590
- destinationChain: CHAINS_UI_META[destinationChain].chainLabel
21591
- }) })
21592
- ] })
21593
- ] }),
21594
- !isError && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
21595
- Button,
21596
- {
21597
- size: "large",
21598
- variant: "default",
21599
- disabled: isConfirmationDisabled,
21600
- onClick: () => bridgeAsset(),
21601
- className: "w-full",
21602
- children: [
21603
- isAssetBridging && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react61.LoaderIcon, { className: "h-4 w-4 animate-spin" }),
21604
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: (bridgeTxStatus || t("passport:common.continue")).toUpperCase() })
21605
- ]
21606
- }
21607
- )
21608
- ] });
22004
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "text-xs", children: t("passport:bridgeMenu.consent.recipient", {
22005
+ address: (recipient || address).slice(0, 6) + "..." + (recipient || address).slice(-4),
22006
+ destinationChain: CHAINS_UI_META[destinationChain].chainLabel,
22007
+ asset: selectedWarpRoute.symbol
22008
+ }) }),
22009
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "text-xs text-[var(--ui-kit-bg-error)]", children: t("passport:bridgeMenu.consent.lostFunds") }),
22010
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("label", { className: "flex items-center gap-[var(--ui-kit-gap)] text-xs cursor-pointer", children: [
22011
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Checkbox, { checked: userConsent, onCheckedChange: () => setUserConsent((prev) => !prev) }),
22012
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: t("passport:bridgeMenu.actions.confirmBridge", {
22013
+ amount: quote.amount,
22014
+ asset: selectedWarpRoute.symbol,
22015
+ destinationChain: CHAINS_UI_META[destinationChain].chainLabel
22016
+ }) })
22017
+ ] })
22018
+ ] }),
22019
+ !isError && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
22020
+ Button,
22021
+ {
22022
+ size: "large",
22023
+ variant: "default",
22024
+ disabled: isConfirmationDisabled,
22025
+ onClick: () => bridgeAsset(),
22026
+ className: "w-full",
22027
+ children: [
22028
+ isAssetBridging && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_lucide_react61.LoaderIcon, { className: "h-4 w-4 animate-spin" }),
22029
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: (bridgeTxStatus || t("passport:common.continue")).toUpperCase() })
22030
+ ]
22031
+ }
22032
+ )
22033
+ ]
22034
+ }
22035
+ );
21609
22036
  }
21610
22037
  var import_lucide_react61, import_react72, import_jsx_runtime99, P_CN;
21611
22038
  var init_ConfirmStep = __esm({
@@ -21616,6 +22043,7 @@ var init_ConfirmStep = __esm({
21616
22043
  import_react72 = require("react");
21617
22044
  init_priceFormatter();
21618
22045
  init_utils2();
22046
+ init_Onboarding();
21619
22047
  init_button();
21620
22048
  init_checkbox();
21621
22049
  init_highlight();
@@ -21988,7 +22416,6 @@ var init_HistoryStep = __esm({
21988
22416
  function SelectAssetRoute(props) {
21989
22417
  const { hyperlaneWarpRoutes } = props;
21990
22418
  const { t } = useT();
21991
- const [isTokenSymbolSelector, setIsTokenSymbolSelector] = (0, import_react73.useState)(false);
21992
22419
  const selectedAssetSymbol = useBridgeStore((st) => st.bridgeAssetSymbol);
21993
22420
  const tokenList = (0, import_react73.useMemo)(() => {
21994
22421
  const tokens = hyperlaneWarpRoutes.map((route) => route.symbol);
@@ -21998,47 +22425,30 @@ function SelectAssetRoute(props) {
21998
22425
  Icon: TOKENS_ICONS[symbol.toUpperCase()] || TOKENS_ICONS.EMBARKAI
21999
22426
  }));
22000
22427
  }, [hyperlaneWarpRoutes]);
22001
- if (isTokenSymbolSelector) {
22002
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "w-full grid grid-cols-1 gap-[var(--ui-kit-gap)]", children: tokenList.map((asset, assetIdx) => /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
22003
- Button,
22004
- {
22005
- variant: selectedAssetSymbol === asset.symbol ? "default" : "outline",
22006
- className: "w-full justify-start",
22007
- onClick: () => {
22008
- useBridgeStore.getState().setBridgeAssetSymbol(asset.symbol);
22009
- setIsTokenSymbolSelector(false);
22010
- useFlowSelectorStore.getState().setRenderKey(`hyperlane-route-token-${asset.symbol}-${Date.now()}`);
22011
- },
22012
- children: [
22013
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(asset.Icon, { className: "w-6 h-6" }),
22014
- asset.symbol
22015
- ]
22016
- },
22017
- `hyperlane-route-token-${asset.symbol}-${assetIdx}`
22018
- )) });
22019
- }
22020
- const selectedAsset = tokenList.find((t2) => t2.symbol === selectedAssetSymbol);
22021
22428
  const availableChainPairs = hyperlaneWarpRoutes.filter((route) => route.symbol.toUpperCase() === selectedAssetSymbol).map((route) => route.chainPair);
22022
22429
  return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: [
22023
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("span", { className: "block text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:bridgeMenu.labels.selectToken") }),
22024
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
22025
- Button,
22026
- {
22027
- variant: "secondary",
22028
- className: "w-full",
22029
- onClick: () => {
22030
- setIsTokenSymbolSelector(true);
22031
- useFlowSelectorStore.getState().setRenderKey(`hyperlane-route-asset-selector-${Date.now()}`);
22430
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: [
22431
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("span", { className: "block text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:bridgeMenu.labels.selectToken") }),
22432
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "w-full grid grid-cols-2 gap-[var(--ui-kit-gap)]", children: tokenList.map((asset, assetIdx) => /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
22433
+ Button,
22434
+ {
22435
+ variant: selectedAssetSymbol === asset.symbol ? "default" : "outline",
22436
+ className: "w-full justify-start",
22437
+ onClick: () => {
22438
+ useBridgeStore.getState().setBridgeAssetSymbol(asset.symbol);
22439
+ useFlowSelectorStore.getState().setRenderKey(`hyperlane-route-token-${asset.symbol}-${Date.now()}`);
22440
+ },
22441
+ children: [
22442
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(asset.Icon, { className: "w-6 h-6" }),
22443
+ asset.symbol
22444
+ ]
22032
22445
  },
22033
- children: selectedAsset ? /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_jsx_runtime102.Fragment, { children: [
22034
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(selectedAsset.Icon, { className: "w-6 h-6" }),
22035
- selectedAsset.symbol
22036
- ] }) : t("passport:bridgeMenu.actions.selectAsset")
22037
- }
22038
- ),
22039
- availableChainPairs.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_jsx_runtime102.Fragment, { children: [
22446
+ `hyperlane-route-token-${asset.symbol}-${assetIdx}`
22447
+ )) })
22448
+ ] }),
22449
+ availableChainPairs.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("div", { className: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: [
22040
22450
  /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("span", { className: "block text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:bridgeMenu.labels.availableChainPairs") }),
22041
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: availableChainPairs.map(([fromChain, toChain]) => /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
22451
+ availableChainPairs.map(([fromChain, toChain]) => /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
22042
22452
  Button,
22043
22453
  {
22044
22454
  variant: "secondary",
@@ -22083,7 +22493,7 @@ function SelectAssetRoute(props) {
22083
22493
  ]
22084
22494
  },
22085
22495
  `hyperlane-route-chain-pair-${fromChain.chainName}-${toChain.chainName}`
22086
- )) })
22496
+ ))
22087
22497
  ] })
22088
22498
  ] });
22089
22499
  }
@@ -22126,7 +22536,7 @@ function HyperlaneBridge() {
22126
22536
  useBridgeStore.getState().resetSelections();
22127
22537
  };
22128
22538
  }, []);
22129
- return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(import_jsx_runtime103.Fragment, { children: [
22539
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)("div", { className: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: [
22130
22540
  bridgeStep === "sender-selector" && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(SenderSelector, { directWalletProfile }),
22131
22541
  bridgeStep === "select" && /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
22132
22542
  SelectStep,
@@ -22653,45 +23063,6 @@ var init_NftDisplayCard = __esm({
22653
23063
  }
22654
23064
  });
22655
23065
 
22656
- // src/internal/components/SendMenu/send/useSendStore.ts
22657
- var import_zustand15, useSendStore;
22658
- var init_useSendStore = __esm({
22659
- "src/internal/components/SendMenu/send/useSendStore.ts"() {
22660
- import_zustand15 = require("zustand");
22661
- init_useFlowSelector();
22662
- useSendStore = (0, import_zustand15.create)((set) => ({
22663
- recipient: "",
22664
- //
22665
- amount: "",
22666
- selectedAsset: null,
22667
- //
22668
- txStep: "input",
22669
- //
22670
- // sendError: null,
22671
- //
22672
- setRecipient: (recipient) => {
22673
- useFlowSelectorStore.getState().setError(null);
22674
- set({ recipient });
22675
- },
22676
- //
22677
- setAmount: (amount) => {
22678
- useFlowSelectorStore.getState().setError(null);
22679
- set({ amount });
22680
- },
22681
- setSelectedAsset: (selectedAsset) => {
22682
- useFlowSelectorStore.getState().setError(null);
22683
- set({ selectedAsset });
22684
- },
22685
- //
22686
- setTxStep: (txStep) => {
22687
- useFlowSelectorStore.getState().setError(null);
22688
- useFlowSelectorStore.getState().setRenderKey(`send-${txStep}-${Date.now()}`);
22689
- set({ txStep });
22690
- }
22691
- }));
22692
- }
22693
- });
22694
-
22695
23066
  // src/internal/components/SendMenu/send/components/AssetList.tsx
22696
23067
  function getAssetBalance3(asset) {
22697
23068
  if (isNftAsset3(asset)) return "1";
@@ -23069,7 +23440,7 @@ function InputSendStep(props) {
23069
23440
  setError(null);
23070
23441
  return true;
23071
23442
  };
23072
- return /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_jsx_runtime109.Fragment, { children: [
23443
+ return /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "flex flex-col gap-[var(--ui-kit-gap)]", children: [
23073
23444
  /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("span", { className: "block text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:sendMenu.selectAsset") }),
23074
23445
  /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(
23075
23446
  Button,
@@ -23217,134 +23588,141 @@ function ConfirmSendStep(props) {
23217
23588
  useFlowSelectorStore.getState().setError(error?.message || "Transaction failed");
23218
23589
  }
23219
23590
  });
23220
- return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_jsx_runtime110.Fragment, { children: [
23221
- isNicknameInput && isFrozen && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(Highlight, { type: "warning", className: "flex gap-[var(--ui-kit-gap)]", children: [
23222
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react68.AlertTriangle, { className: "h-4 w-4" }),
23223
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: "This handle is frozen. Proceed with caution." })
23224
- ] }),
23225
- isSecurity && erc3643CanTransfer && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(Highlight, { type: "success", className: "flex gap-[var(--ui-kit-gap)]", children: [
23226
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react68.Shield, { className: "h-4 w-4 flex-shrink-0" }),
23227
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: "Security token compliance verified" })
23228
- ] }),
23229
- !isNft && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between leading-5", children: [
23230
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { className: "text-[10px] text-[var(--ui-kit-fg-muted)]", children: [
23231
- selectedAsset.symbol,
23232
- " Balance"
23233
- ] }),
23234
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { className: "text-sm font-bold", children: [
23235
- formatPrice(balance),
23236
- " ",
23237
- selectedAsset.symbol
23238
- ] })
23239
- ] }),
23240
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Highlight, { type: "info", className: "flex flex-col gap-[var(--ui-kit-gap)]", children: isNicknameInput && nicknameData ? /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_jsx_runtime110.Fragment, { children: [
23241
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex items-start gap-[var(--ui-kit-gap)]", children: [
23242
- nicknameData.avatarSvg ? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
23243
- "img",
23244
- {
23245
- src: nicknameData.avatarSvg,
23246
- alt: nicknameData.handle,
23247
- className: "w-12 h-12 rounded-full object-cover flex-shrink-0"
23248
- }
23249
- ) : /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: "w-12 h-12 rounded-full bg-[var(--ui-kit-secondary)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react68.AtSign, { className: "w-6 h-6" }) }),
23250
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex flex-1 flex-col gap-1", children: [
23251
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "font-medium text-[14px] leading-4 truncate", children: nicknameData.handle }),
23252
- nicknameData.fingerprint && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
23253
- "span",
23254
- {
23255
- className: cn(
23256
- "flex items-center gap-[var(--ui-kit-gap)] text-[10px]",
23257
- isFingerprintVerified ? "text-[var(--ui-kit-bg-success)]" : "text-[var(--ui-kit-bg-error)]"
23591
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
23592
+ "div",
23593
+ {
23594
+ ref: (inst) => onboarder.registerElement("sendmenu-crypto-summary" /* sendCryptoSummary */, inst),
23595
+ className: "flex flex-col gap-[var(--ui-kit-gap)]",
23596
+ children: [
23597
+ isNicknameInput && isFrozen && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(Highlight, { type: "warning", className: "flex gap-[var(--ui-kit-gap)]", children: [
23598
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react68.AlertTriangle, { className: "h-4 w-4" }),
23599
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: "This handle is frozen. Proceed with caution." })
23600
+ ] }),
23601
+ isSecurity && erc3643CanTransfer && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(Highlight, { type: "success", className: "flex gap-[var(--ui-kit-gap)]", children: [
23602
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react68.Shield, { className: "h-4 w-4 flex-shrink-0" }),
23603
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: "Security token compliance verified" })
23604
+ ] }),
23605
+ !isNft && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between leading-5", children: [
23606
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { className: "text-[10px] text-[var(--ui-kit-fg-muted)]", children: [
23607
+ selectedAsset.symbol,
23608
+ " Balance"
23609
+ ] }),
23610
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { className: "text-sm font-bold", children: [
23611
+ formatPrice(balance),
23612
+ " ",
23613
+ selectedAsset.symbol
23614
+ ] })
23615
+ ] }),
23616
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Highlight, { type: "info", className: "flex flex-col gap-[var(--ui-kit-gap)]", children: isNicknameInput && nicknameData ? /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_jsx_runtime110.Fragment, { children: [
23617
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex items-start gap-[var(--ui-kit-gap)]", children: [
23618
+ nicknameData.avatarSvg ? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
23619
+ "img",
23620
+ {
23621
+ src: nicknameData.avatarSvg,
23622
+ alt: nicknameData.handle,
23623
+ className: "w-12 h-12 rounded-full object-cover flex-shrink-0"
23624
+ }
23625
+ ) : /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { className: "w-12 h-12 rounded-full bg-[var(--ui-kit-secondary)] flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react68.AtSign, { className: "w-6 h-6" }) }),
23626
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex flex-1 flex-col gap-1", children: [
23627
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "font-medium text-[14px] leading-4 truncate", children: nicknameData.handle }),
23628
+ nicknameData.fingerprint && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
23629
+ "span",
23630
+ {
23631
+ className: cn(
23632
+ "flex items-center gap-[var(--ui-kit-gap)] text-[10px]",
23633
+ isFingerprintVerified ? "text-[var(--ui-kit-bg-success)]" : "text-[var(--ui-kit-bg-error)]"
23634
+ ),
23635
+ children: [
23636
+ isFingerprintVerified ? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react68.ShieldCheck, { className: "w-4 h-4 flex-shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react68.ShieldAlert, { className: "w-4 h-4 flex-shrink-0" }),
23637
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { children: [
23638
+ "Fingerprint: ",
23639
+ nicknameData.fingerprint
23640
+ ] }),
23641
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: isFingerprintVerified ? "Verified" : "FAILED" })
23642
+ ]
23643
+ }
23258
23644
  ),
23259
- children: [
23260
- isFingerprintVerified ? /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react68.ShieldCheck, { className: "w-4 h-4 flex-shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react68.ShieldAlert, { className: "w-4 h-4 flex-shrink-0" }),
23261
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { children: [
23262
- "Fingerprint: ",
23263
- nicknameData.fingerprint
23264
- ] }),
23265
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: isFingerprintVerified ? "Verified" : "FAILED" })
23266
- ]
23267
- }
23268
- ),
23269
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[10px] text-[var(--ui-kit-fg-muted)]", children: `${resolvedAddress.slice(0, 6)}...${resolvedAddress.slice(-4)} : ` })
23270
- ] })
23271
- ] }),
23272
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "border-t border-[var(--ui-kit-bd)] py-[var(--ui-kit-pd)] text-[10px]", children: [
23273
- isNft ? /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between items-start", children: [
23274
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: "NFT:" }),
23275
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "text-right", children: [
23276
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "font-semibold block", children: selectedAsset.nftMetadata?.name || selectedAsset.name }),
23277
- selectedAsset.tokenId && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { className: "text-[10px] text-[var(--ui-kit-fg-muted)]", children: [
23278
- "#",
23279
- selectedAsset.tokenId.length > 10 ? `${selectedAsset.tokenId.slice(0, 8)}...` : selectedAsset.tokenId
23645
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[10px] text-[var(--ui-kit-fg-muted)]", children: `${resolvedAddress.slice(0, 6)}...${resolvedAddress.slice(-4)} : ` })
23280
23646
  ] })
23281
- ] })
23282
- ] }) : (
23283
- // Fungible token details
23284
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between leading-5 gap-[var(--ui-kit-gap)]", children: [
23285
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:common.amount") }),
23286
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { className: "text-sm font-bold", children: [
23287
- amount,
23288
- " ",
23289
- selectedAsset.symbol
23647
+ ] }),
23648
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "border-t border-[var(--ui-kit-bd)] py-[var(--ui-kit-pd)] text-[10px]", children: [
23649
+ isNft ? /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between items-start", children: [
23650
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: "NFT:" }),
23651
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "text-right", children: [
23652
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "font-semibold block", children: selectedAsset.nftMetadata?.name || selectedAsset.name }),
23653
+ selectedAsset.tokenId && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { className: "text-[10px] text-[var(--ui-kit-fg-muted)]", children: [
23654
+ "#",
23655
+ selectedAsset.tokenId.length > 10 ? `${selectedAsset.tokenId.slice(0, 8)}...` : selectedAsset.tokenId
23656
+ ] })
23657
+ ] })
23658
+ ] }) : (
23659
+ // Fungible token details
23660
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between leading-5 gap-[var(--ui-kit-gap)]", children: [
23661
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:common.amount") }),
23662
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { className: "text-sm font-bold", children: [
23663
+ amount,
23664
+ " ",
23665
+ selectedAsset.symbol
23666
+ ] })
23667
+ ] })
23668
+ ),
23669
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between leading-5 gap-[var(--ui-kit-gap)]", children: [
23670
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:common.network") }),
23671
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-sm font-bold", children: chainConfig.name })
23290
23672
  ] })
23291
23673
  ] })
23292
- ),
23293
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between leading-5 gap-[var(--ui-kit-gap)]", children: [
23294
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[10px] text-[var(--ui-kit-fg-muted)]", children: t("passport:common.network") }),
23295
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-sm font-bold", children: chainConfig.name })
23296
- ] })
23297
- ] })
23298
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_jsx_runtime110.Fragment, { children: [
23299
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("h3", { className: "font-medium mb-3 text-[var(--ui-kit-fg)]", children: "Transaction Details" }),
23300
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "space-y-2 text-sm text-[var(--ui-kit-fg)]", children: [
23301
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between", children: [
23302
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: "To:" }),
23303
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "font-mono text-xs", children: `${effectiveAddress.slice(0, 6)}...${effectiveAddress.slice(-4)}` })
23304
- ] }),
23305
- isNft ? (
23306
- // NFT details
23307
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_jsx_runtime110.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between items-start", children: [
23308
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: "NFT:" }),
23309
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "text-right", children: [
23310
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "font-semibold block", children: selectedAsset.nftMetadata?.name || selectedAsset.name }),
23311
- selectedAsset.tokenId && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { className: "text-xs text-[var(--ui-kit-fg-muted)]", children: [
23312
- "#",
23313
- selectedAsset.tokenId.length > 10 ? `${selectedAsset.tokenId.slice(0, 8)}...` : selectedAsset.tokenId
23674
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(import_jsx_runtime110.Fragment, { children: [
23675
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("h3", { className: "font-medium mb-3 text-[var(--ui-kit-fg)]", children: "Transaction Details" }),
23676
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "space-y-2 text-sm text-[var(--ui-kit-fg)]", children: [
23677
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between", children: [
23678
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: "To:" }),
23679
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "font-mono text-xs", children: `${effectiveAddress.slice(0, 6)}...${effectiveAddress.slice(-4)}` })
23680
+ ] }),
23681
+ isNft ? (
23682
+ // NFT details
23683
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_jsx_runtime110.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between items-start", children: [
23684
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: "NFT:" }),
23685
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "text-right", children: [
23686
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "font-semibold block", children: selectedAsset.nftMetadata?.name || selectedAsset.name }),
23687
+ selectedAsset.tokenId && /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { className: "text-xs text-[var(--ui-kit-fg-muted)]", children: [
23688
+ "#",
23689
+ selectedAsset.tokenId.length > 10 ? `${selectedAsset.tokenId.slice(0, 8)}...` : selectedAsset.tokenId
23690
+ ] })
23691
+ ] })
23692
+ ] }) })
23693
+ ) : (
23694
+ // Fungible token details
23695
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between leading-5 gap-[var(--ui-kit-gap)]", children: [
23696
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: t("passport:common.amount") }),
23697
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { className: "font-semibold", children: [
23698
+ amount,
23699
+ " ",
23700
+ selectedAsset.symbol
23701
+ ] })
23314
23702
  ] })
23315
- ] })
23316
- ] }) })
23317
- ) : (
23318
- // Fungible token details
23319
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between leading-5 gap-[var(--ui-kit-gap)]", children: [
23320
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: t("passport:common.amount") }),
23321
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("span", { className: "font-semibold", children: [
23322
- amount,
23323
- " ",
23324
- selectedAsset.symbol
23703
+ ),
23704
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between leading-5 gap-[var(--ui-kit-gap)]", children: [
23705
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: t("passport:common.network") }),
23706
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: chainConfig.name })
23325
23707
  ] })
23326
23708
  ] })
23327
- ),
23328
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)("div", { className: "flex justify-between leading-5 gap-[var(--ui-kit-gap)]", children: [
23329
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { className: "text-[var(--ui-kit-fg-muted)]", children: t("passport:common.network") }),
23330
- /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("span", { children: chainConfig.name })
23331
- ] })
23332
- ] })
23333
- ] }) }),
23334
- /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
23335
- Button,
23336
- {
23337
- onClick: () => handleConfirm(),
23338
- disabled: isTransactionPending,
23339
- className: "w-full",
23340
- size: "large",
23341
- children: [
23342
- isTransactionPending && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react68.Loader, { className: "h-4 w-4 animate-spin" }),
23343
- t("passport:common.confirm")
23344
- ]
23345
- }
23346
- )
23347
- ] });
23709
+ ] }) }),
23710
+ /* @__PURE__ */ (0, import_jsx_runtime110.jsxs)(
23711
+ Button,
23712
+ {
23713
+ onClick: () => handleConfirm(),
23714
+ disabled: isTransactionPending,
23715
+ className: "w-full",
23716
+ size: "large",
23717
+ children: [
23718
+ isTransactionPending && /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_lucide_react68.Loader, { className: "h-4 w-4 animate-spin" }),
23719
+ t("passport:common.confirm")
23720
+ ]
23721
+ }
23722
+ )
23723
+ ]
23724
+ }
23725
+ );
23348
23726
  }
23349
23727
  var import_react_query53, import_lucide_react68, import_jsx_runtime110;
23350
23728
  var init_ConfirmSendStep = __esm({
@@ -23355,6 +23733,7 @@ var init_ConfirmSendStep = __esm({
23355
23733
  import_lucide_react68 = require("lucide-react");
23356
23734
  init_priceFormatter();
23357
23735
  init_utils2();
23736
+ init_Onboarding();
23358
23737
  init_button();
23359
23738
  init_highlight();
23360
23739
  init_useFlowSelector();
@@ -23549,14 +23928,61 @@ var init_send = __esm({
23549
23928
  }
23550
23929
  });
23551
23930
 
23931
+ // src/internal/components/SendMenu/useSendMenuParams.ts
23932
+ function useSendMenuParams() {
23933
+ (0, import_react81.useEffect)(() => {
23934
+ const { pageParams, setPageParams } = useLayoutDataStore.getState();
23935
+ if (!pageParams || !(0, import_lodash_es13.keys)(pageParams).length) return;
23936
+ console.log("[SEND PARAMS]", pageParams);
23937
+ const { sendFlow, asset, to, amount } = pageParams || {};
23938
+ const {
23939
+ setAmount: setSendAmount,
23940
+ setRecipient: setSendRecipient,
23941
+ setSelectedAsset: setSendSelectedAsset
23942
+ } = useSendStore.getState();
23943
+ const { setAmount: setBridgeAmount } = useBridgeStore.getState();
23944
+ useFlowSelectorStore.getState().setFlow(sendFlow);
23945
+ switch (sendFlow) {
23946
+ //
23947
+ case "send":
23948
+ switch (true) {
23949
+ case !!asset:
23950
+ setSendAmount(String(amount));
23951
+ case !!to:
23952
+ setSendRecipient(to);
23953
+ case !!amount:
23954
+ setSendSelectedAsset(asset);
23955
+ }
23956
+ break;
23957
+ //
23958
+ case "bridge":
23959
+ switch (true) {
23960
+ case !!amount:
23961
+ setBridgeAmount(String(amount));
23962
+ }
23963
+ break;
23964
+ default:
23965
+ return setPageParams(null);
23966
+ }
23967
+ setPageParams(null);
23968
+ }, []);
23969
+ }
23970
+ var import_lodash_es13, import_react81;
23971
+ var init_useSendMenuParams = __esm({
23972
+ "src/internal/components/SendMenu/useSendMenuParams.ts"() {
23973
+ import_lodash_es13 = require("lodash-es");
23974
+ import_react81 = require("react");
23975
+ init_useLayoutDataStore();
23976
+ init_useBridgeStore();
23977
+ init_useSendStore();
23978
+ init_useFlowSelector();
23979
+ }
23980
+ });
23981
+
23552
23982
  // src/internal/components/SendMenu/SendFlowSelector.tsx
23553
23983
  function SelectorFlowButtons() {
23554
23984
  const { t } = useT();
23555
23985
  const selectorFlow = useFlowSelectorStore((st) => st.flow);
23556
- const sendStep = useSendStore((st) => st.txStep);
23557
- const bridgeStep = useBridgeStore((st) => st.bridgeStep);
23558
- const isButtonsShown = selectorFlow === "send" && sendStep === "input" || selectorFlow === "bridge" && bridgeStep === "select";
23559
- if (!isButtonsShown) return null;
23560
23986
  return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(
23561
23987
  "div",
23562
23988
  {
@@ -23604,6 +24030,7 @@ function SelectorFlowButtons() {
23604
24030
  }
23605
24031
  function SendFlowSelector() {
23606
24032
  const { t } = useT();
24033
+ useSendMenuParams();
23607
24034
  const setPage = useLayoutDataStore((st) => st.setPage);
23608
24035
  const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
23609
24036
  const isUiLocked = useFlowSelectorStore((st) => st.isUiLocked);
@@ -23611,15 +24038,19 @@ function SendFlowSelector() {
23611
24038
  const error = useFlowSelectorStore((st) => st.error);
23612
24039
  const menuTitle = useFlowSelectorStore((st) => st.menuTitle);
23613
24040
  const selectorFlow = useFlowSelectorStore((st) => st.flow);
23614
- (0, import_react81.useEffect)(
24041
+ const sendStep = useSendStore((st) => st.txStep);
24042
+ const bridgeStep = useBridgeStore((st) => st.bridgeStep);
24043
+ (0, import_react82.useEffect)(
23615
24044
  () => () => {
23616
24045
  useFlowSelectorStore.getState().setError(null);
23617
24046
  },
23618
24047
  []
23619
24048
  );
24049
+ const isSendFlowInitialState = selectorFlow === "send" && sendStep === "input" || selectorFlow === "bridge" && bridgeStep === "select";
23620
24050
  return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
23621
24051
  "div",
23622
24052
  {
24053
+ ref: (inst) => onboarder.registerElement("sendmenu-page" /* sendMenu */, inst),
23623
24054
  style: {
23624
24055
  "--ui-kit-scrollbar-mah": `${maxScrollHeight}px`,
23625
24056
  "--ui-kit-list-scrollbar-pd-r": "var(--ui-kit-pd)"
@@ -23637,8 +24068,8 @@ function SendFlowSelector() {
23637
24068
  onClick: () => {
23638
24069
  useFlowSelectorStore.getState().setError(null);
23639
24070
  if (selectorFlow === "bridge") {
23640
- const { bridgeStep, setBridgeStep } = useBridgeStore.getState();
23641
- switch (bridgeStep) {
24071
+ const { bridgeStep: bridgeStep2, setBridgeStep } = useBridgeStore.getState();
24072
+ switch (bridgeStep2) {
23642
24073
  case "select":
23643
24074
  return setPage("main-menu" /* MAIN_MENU */);
23644
24075
  // case ''
@@ -23663,9 +24094,31 @@ function SendFlowSelector() {
23663
24094
  ),
23664
24095
  /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("span", { className: "text-xl font-semibold", children: menuTitle })
23665
24096
  ] }),
23666
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(BridgeHistorySwitch, {})
24097
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "flex items-center gap-[var(--ui-kit-gap)]", children: [
24098
+ isSendFlowInitialState && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(
24099
+ Button,
24100
+ {
24101
+ ref: (inst) => onboarder.registerElement("sendmenu-tour-button" /* tourButton */, inst),
24102
+ variant: "ghost",
24103
+ size: "icon",
24104
+ className: "flex-none",
24105
+ onClick: () => {
24106
+ switch (selectorFlow) {
24107
+ case "send":
24108
+ onboarder.startTour(SEND_MENU_TOUR);
24109
+ break;
24110
+ case "bridge":
24111
+ onboarder.startTour(BRIDGE_MENU_TOUR);
24112
+ break;
24113
+ }
24114
+ },
24115
+ children: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(import_lucide_react70.CircleQuestionMarkIcon, { className: "h-4 w-4" })
24116
+ }
24117
+ ),
24118
+ /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(BridgeHistorySwitch, {})
24119
+ ] })
23667
24120
  ] }),
23668
- /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(SelectorFlowButtons, {}),
24121
+ isSendFlowInitialState && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(SelectorFlowButtons, {}),
23669
24122
  SELECTOR_FLOW[selectorFlow],
23670
24123
  error && /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)(Highlight, { type: "error", className: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: [
23671
24124
  /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { className: "w-full flex gap-[var(--ui-kit-gap)]", children: [
@@ -23688,21 +24141,24 @@ function SendFlowSelector() {
23688
24141
  }
23689
24142
  );
23690
24143
  }
23691
- var import_lucide_react70, import_react81, import_jsx_runtime112, SELECTOR_FLOW;
24144
+ var import_lucide_react70, import_react82, import_jsx_runtime112, SELECTOR_FLOW;
23692
24145
  var init_SendFlowSelector = __esm({
23693
24146
  "src/internal/components/SendMenu/SendFlowSelector.tsx"() {
23694
24147
  init_i18n();
23695
24148
  import_lucide_react70 = require("lucide-react");
23696
- import_react81 = require("react");
24149
+ import_react82 = require("react");
23697
24150
  init_useLayoutDataStore();
23698
24151
  init_useLayoutStore();
23699
24152
  init_utils2();
23700
24153
  init_Expandable2();
24154
+ init_Onboarding();
23701
24155
  init_button();
23702
24156
  init_highlight();
23703
24157
  init_hyperbridge();
24158
+ init_onboarding_setup2();
23704
24159
  init_send();
23705
24160
  init_useFlowSelector();
24161
+ init_useSendMenuParams();
23706
24162
  import_jsx_runtime112 = require("react/jsx-runtime");
23707
24163
  SELECTOR_FLOW = {
23708
24164
  send: /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(SendMenu, {}),
@@ -23715,6 +24171,7 @@ var init_SendFlowSelector = __esm({
23715
24171
  var init_SendMenu2 = __esm({
23716
24172
  "src/internal/components/SendMenu/index.ts"() {
23717
24173
  init_SendFlowSelector();
24174
+ init_onboarding_setup2();
23718
24175
  }
23719
24176
  });
23720
24177
 
@@ -23748,12 +24205,12 @@ function getServerSnapshot() {
23748
24205
  return false;
23749
24206
  }
23750
24207
  function useProMode() {
23751
- return (0, import_react82.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
24208
+ return (0, import_react83.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
23752
24209
  }
23753
- var import_react82, STORAGE_KEY, EVENT_NAME;
24210
+ var import_react83, STORAGE_KEY, EVENT_NAME;
23754
24211
  var init_pro_mode = __esm({
23755
24212
  "src/internal/lib/pro-mode.ts"() {
23756
- import_react82 = require("react");
24213
+ import_react83 = require("react");
23757
24214
  STORAGE_KEY = "embarkai_pro_mode";
23758
24215
  EVENT_NAME = "embarkai-pro-mode-changed";
23759
24216
  }
@@ -23795,7 +24252,7 @@ function useSettingsButtons() {
23795
24252
  if (proMode) {
23796
24253
  settingsButtons.push({ id: "devices" /* DEVICES */, name: "Guardians", Icon: import_lucide_react72.HardDrive });
23797
24254
  }
23798
- (0, import_react83.useEffect)(() => {
24255
+ (0, import_react84.useEffect)(() => {
23799
24256
  const cssvEl = document.querySelector(".embarkai-ui-scope");
23800
24257
  if (!cssvEl || !window?.getComputedStyle) {
23801
24258
  return;
@@ -23859,7 +24316,7 @@ function SettingsMenu() {
23859
24316
  }
23860
24317
  );
23861
24318
  }
23862
- var import_react_query54, import_lucide_react72, import_react83, import_jsx_runtime113;
24319
+ var import_react_query54, import_lucide_react72, import_react84, import_jsx_runtime113;
23863
24320
  var init_SettingsMenu = __esm({
23864
24321
  "src/internal/components/SettingsMenu/SettingsMenu.tsx"() {
23865
24322
  init_ProviderContext();
@@ -23867,7 +24324,7 @@ var init_SettingsMenu = __esm({
23867
24324
  init_i18n();
23868
24325
  import_react_query54 = require("@tanstack/react-query");
23869
24326
  import_lucide_react72 = require("lucide-react");
23870
- import_react83 = require("react");
24327
+ import_react84 = require("react");
23871
24328
  init_nickname();
23872
24329
  init_profile();
23873
24330
  init_useLayoutDataStore();
@@ -24739,7 +25196,7 @@ function TransactionsMenu() {
24739
25196
  const { t } = useT();
24740
25197
  const setPage = useLayoutDataStore((st) => st.setPage);
24741
25198
  const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
24742
- const [expandedGroups, setExpandedGroups] = (0, import_react84.useState)({});
25199
+ const [expandedGroups, setExpandedGroups] = (0, import_react85.useState)({});
24743
25200
  const historySupported = isTransactionHistorySupported(chainConfig?.id);
24744
25201
  const {
24745
25202
  data: txHistoryGroups = [],
@@ -24752,7 +25209,7 @@ function TransactionsMenu() {
24752
25209
  queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, chainConfig.id, address],
24753
25210
  queryFn: () => getTransactionsListQuery({ address, chainConfig })
24754
25211
  });
24755
- const refreshTxHistory = (0, import_react84.useCallback)(
25212
+ const refreshTxHistory = (0, import_react85.useCallback)(
24756
25213
  () => qc.invalidateQueries({ queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, chainConfig.id, address] }),
24757
25214
  [qc, chainConfig.id, address]
24758
25215
  );
@@ -24801,14 +25258,14 @@ function TransactionsMenu() {
24801
25258
  }
24802
25259
  );
24803
25260
  }
24804
- var import_react_query55, import_lucide_react75, import_react84, import_jsx_runtime116;
25261
+ var import_react_query55, import_lucide_react75, import_react85, import_jsx_runtime116;
24805
25262
  var init_TransactionsMenu = __esm({
24806
25263
  "src/internal/components/TransactionsMenu/TransactionsMenu.tsx"() {
24807
25264
  init_SessionContext();
24808
25265
  init_i18n();
24809
25266
  import_react_query55 = require("@tanstack/react-query");
24810
25267
  import_lucide_react75 = require("lucide-react");
24811
- import_react84 = require("react");
25268
+ import_react85 = require("react");
24812
25269
  init_useLayoutDataStore();
24813
25270
  init_useLayoutStore();
24814
25271
  init_Expandable2();
@@ -25006,7 +25463,7 @@ function usePageMapper() {
25006
25463
  setIsDialogOpen,
25007
25464
  setIsDialogClosing
25008
25465
  } = useLayoutStore();
25009
- const closeDialog = (0, import_react85.useCallback)(() => {
25466
+ const closeDialog = (0, import_react86.useCallback)(() => {
25010
25467
  setIsDialogClosing(true);
25011
25468
  setTimeout(() => {
25012
25469
  setDialogContent(null);
@@ -25017,7 +25474,7 @@ function usePageMapper() {
25017
25474
  setIsDialogOpen(false);
25018
25475
  }, CLEAR_DIALOG_TIMEOUT);
25019
25476
  }, [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogForced, setIsDialogOpen, setIsDialogClosing]);
25020
- const openDialog = (0, import_react85.useCallback)(
25477
+ const openDialog = (0, import_react86.useCallback)(
25021
25478
  (pageItem) => {
25022
25479
  const PageContentComponent = pageItem.component;
25023
25480
  setDialogTitle(pageItem.title);
@@ -25027,7 +25484,7 @@ function usePageMapper() {
25027
25484
  },
25028
25485
  [setDialogContent, setDialogDescription, setDialogTitle, setIsDialogOpen]
25029
25486
  );
25030
- (0, import_react85.useEffect)(() => {
25487
+ (0, import_react86.useEffect)(() => {
25031
25488
  if (page === null) return closeDialog();
25032
25489
  const pageItem = PAGE_MAP[page];
25033
25490
  if (!pageItem) {
@@ -25038,10 +25495,10 @@ function usePageMapper() {
25038
25495
  openDialog(pageItem);
25039
25496
  }, [page, closeDialog, openDialog]);
25040
25497
  }
25041
- var import_react85, import_jsx_runtime117, CLEAR_DIALOG_TIMEOUT;
25498
+ var import_react86, import_jsx_runtime117, CLEAR_DIALOG_TIMEOUT;
25042
25499
  var init_usePageMapper = __esm({
25043
25500
  "src/internal/hooks/usePageMapper.tsx"() {
25044
- import_react85 = require("react");
25501
+ import_react86 = require("react");
25045
25502
  init_PageMap();
25046
25503
  init_constants();
25047
25504
  init_useLayoutDataStore();
@@ -25057,24 +25514,24 @@ function useSettingsNotifications() {
25057
25514
  const providers = import_auth23.jwtTokenManager.getProviders();
25058
25515
  const hasEmail = providers.includes("email");
25059
25516
  const { data: userProfile = null } = useUserProfile();
25060
- (0, import_react86.useEffect)(() => {
25517
+ (0, import_react87.useEffect)(() => {
25061
25518
  const isKYCVerified = userProfile?.kycDetails?.kycStatus === "verified";
25062
25519
  setSettingsNotifications({
25063
25520
  ...COMPLETE_KYC_PROGRESS,
25064
25521
  status: isKYCVerified ? "resolved" : "active"
25065
25522
  });
25066
25523
  }, [userProfile, setSettingsNotifications]);
25067
- (0, import_react86.useEffect)(() => {
25524
+ (0, import_react87.useEffect)(() => {
25068
25525
  setSettingsNotifications({
25069
25526
  ...EMAIL_NOT_CONNECTED_NOTIFICATION,
25070
25527
  status: hasEmail ? "resolved" : "active"
25071
25528
  });
25072
25529
  }, [hasEmail, setSettingsNotifications]);
25073
25530
  }
25074
- var import_react86, EMAIL_NOT_CONNECTED_NOTIFICATION, COMPLETE_KYC_PROGRESS;
25531
+ var import_react87, EMAIL_NOT_CONNECTED_NOTIFICATION, COMPLETE_KYC_PROGRESS;
25075
25532
  var init_useSettingsNotifications = __esm({
25076
25533
  "src/internal/hooks/useSettingsNotifications.ts"() {
25077
- import_react86 = require("react");
25534
+ import_react87 = require("react");
25078
25535
  init_auth();
25079
25536
  init_useLayoutDataStore();
25080
25537
  init_useUserProfile();
@@ -25097,7 +25554,7 @@ var init_package = __esm({
25097
25554
  "package.json"() {
25098
25555
  package_default = {
25099
25556
  name: "@embarkai/ui-kit",
25100
- version: "0.4.73",
25557
+ version: "0.4.74",
25101
25558
  description: "React UI components and hooks for EmbarkAI authentication and Account Abstraction",
25102
25559
  type: "module",
25103
25560
  main: "./dist/index.cjs",
@@ -25350,11 +25807,11 @@ function Header() {
25350
25807
  const chainConfig = useSession((st) => st.chainConfig);
25351
25808
  const { t } = useT();
25352
25809
  const proMode = useProMode();
25353
- const [proToast, setProToast] = (0, import_react87.useState)(false);
25354
- const [copied, setCopied] = (0, import_react87.useState)(false);
25355
- const clickCountRef = (0, import_react87.useRef)(0);
25356
- const clickTimerRef = (0, import_react87.useRef)(null);
25357
- const handleAvatarClick = (0, import_react87.useCallback)(() => {
25810
+ const [proToast, setProToast] = (0, import_react88.useState)(false);
25811
+ const [copied, setCopied] = (0, import_react88.useState)(false);
25812
+ const clickCountRef = (0, import_react88.useRef)(0);
25813
+ const clickTimerRef = (0, import_react88.useRef)(null);
25814
+ const handleAvatarClick = (0, import_react88.useCallback)(() => {
25358
25815
  clickCountRef.current += 1;
25359
25816
  if (clickTimerRef.current) {
25360
25817
  clearTimeout(clickTimerRef.current);
@@ -25449,7 +25906,7 @@ function Header() {
25449
25906
  }
25450
25907
  );
25451
25908
  }
25452
- var import_lucide_react77, import_react87, import_jsx_runtime119;
25909
+ var import_lucide_react77, import_react88, import_jsx_runtime119;
25453
25910
  var init_Header = __esm({
25454
25911
  "src/internal/components/Header/Header.tsx"() {
25455
25912
  init_lumia2();
@@ -25458,7 +25915,7 @@ var init_Header = __esm({
25458
25915
  init_SessionContext();
25459
25916
  init_useT();
25460
25917
  import_lucide_react77 = require("lucide-react");
25461
- import_react87 = require("react");
25918
+ import_react88 = require("react");
25462
25919
  init_icons();
25463
25920
  init_auth();
25464
25921
  init_useUserProfile();
@@ -25486,26 +25943,26 @@ function useDecideContentStyles() {
25486
25943
  return {
25487
25944
  isClosing,
25488
25945
  isMobileView,
25489
- style: (0, import_lodash_es13.merge)({}, mobileStyles)
25946
+ style: (0, import_lodash_es14.merge)({}, mobileStyles)
25490
25947
  };
25491
25948
  }
25492
- var DialogPrimitive, import_lodash_es13, import_lucide_react78, import_react88, import_jsx_runtime120, Dialog, DialogPortal, DialogOverlay, CONTENT_BG_SETUP, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription;
25949
+ var DialogPrimitive, import_lodash_es14, import_lucide_react78, import_react89, import_jsx_runtime120, Dialog, DialogPortal, DialogOverlay, CONTENT_BG_SETUP, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription;
25493
25950
  var init_dialog = __esm({
25494
25951
  "src/internal/components/ui/dialog.tsx"() {
25495
25952
  init_utils2();
25496
25953
  init_SessionContext();
25497
25954
  init_i18n();
25498
25955
  DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
25499
- import_lodash_es13 = require("lodash-es");
25956
+ import_lodash_es14 = require("lodash-es");
25500
25957
  import_lucide_react78 = require("lucide-react");
25501
- import_react88 = require("react");
25958
+ import_react89 = require("react");
25502
25959
  init_useLayoutDataStore();
25503
25960
  init_useLayoutStore();
25504
25961
  init_button();
25505
25962
  import_jsx_runtime120 = require("react/jsx-runtime");
25506
25963
  Dialog = DialogPrimitive.Root;
25507
25964
  DialogPortal = DialogPrimitive.Portal;
25508
- DialogOverlay = (0, import_react88.forwardRef)(
25965
+ DialogOverlay = (0, import_react89.forwardRef)(
25509
25966
  ({ className, closing, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
25510
25967
  DialogPrimitive.Overlay,
25511
25968
  {
@@ -25527,7 +25984,7 @@ var init_dialog = __esm({
25527
25984
  border: "1px solid var(--ui-kit-bd)",
25528
25985
  boxShadow: "var(--ui-kit-shadow, 0px 4px 10px var(--ui-kit-shadow-c, rgba(0, 0, 0, 0.1)))"
25529
25986
  };
25530
- DialogContent = (0, import_react88.forwardRef)(
25987
+ DialogContent = (0, import_react89.forwardRef)(
25531
25988
  ({ className, children, colorMode, ...props }, ref) => {
25532
25989
  const { t, i18n } = useT();
25533
25990
  const isSessionLoading = useSession((st) => st.isLoading);
@@ -25639,7 +26096,7 @@ var init_dialog = __esm({
25639
26096
  DialogHeader.displayName = "DialogHeader";
25640
26097
  DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
25641
26098
  DialogFooter.displayName = "DialogFooter";
25642
- DialogTitle = (0, import_react88.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
26099
+ DialogTitle = (0, import_react89.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
25643
26100
  DialogPrimitive.Title,
25644
26101
  {
25645
26102
  ref,
@@ -25648,7 +26105,7 @@ var init_dialog = __esm({
25648
26105
  }
25649
26106
  ));
25650
26107
  DialogTitle.displayName = DialogPrimitive.Title.displayName;
25651
- DialogDescription = (0, import_react88.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(DialogPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
26108
+ DialogDescription = (0, import_react89.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(DialogPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
25652
26109
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
25653
26110
  }
25654
26111
  });
@@ -25673,7 +26130,7 @@ function Dialog2() {
25673
26130
  const isWalletLinking = useLayoutDataStore((st) => st.isWalletLinking);
25674
26131
  const setPage = useLayoutDataStore((st) => st.setPage);
25675
26132
  const { colorMode, isDialogOpen, dialogTitle, dialogDescription, dialogContent, isDialogForced, setIsSettings } = useLayoutStore();
25676
- (0, import_react89.useEffect)(() => setIsSettings(!!session), [session, setIsSettings]);
26133
+ (0, import_react90.useEffect)(() => setIsSettings(!!session), [session, setIsSettings]);
25677
26134
  usePageMapper();
25678
26135
  useAutoConnect();
25679
26136
  useBackupStatusChanges();
@@ -25711,13 +26168,13 @@ function Dialog2() {
25711
26168
  }
25712
26169
  );
25713
26170
  }
25714
- var import_framer_motion, import_react89, import_jsx_runtime122;
26171
+ var import_framer_motion, import_react90, import_jsx_runtime122;
25715
26172
  var init_Dialog = __esm({
25716
26173
  "src/internal/components/Dialog/Dialog.tsx"() {
25717
26174
  init_ProviderContext();
25718
26175
  init_SessionContext();
25719
26176
  import_framer_motion = require("framer-motion");
25720
- import_react89 = require("react");
26177
+ import_react90 = require("react");
25721
26178
  init_constants();
25722
26179
  init_useAutoConnect();
25723
26180
  init_useBackupStatusChanges();
@@ -25753,13 +26210,13 @@ function DirectWalletHandler() {
25753
26210
  const setExternalChainId = useExternalWalletStore((st) => st.setExternalChainId);
25754
26211
  const setConfigMode = useExternalWalletStore((st) => st.setConfigMode);
25755
26212
  const setActiveMode = useExternalWalletStore((st) => st.setActiveMode);
25756
- (0, import_react90.useEffect)(() => {
26213
+ (0, import_react91.useEffect)(() => {
25757
26214
  setConfigMode(walletMode);
25758
26215
  if (walletMode !== "both") {
25759
26216
  setActiveMode(walletMode);
25760
26217
  }
25761
26218
  }, [walletMode, setConfigMode, setActiveMode]);
25762
- (0, import_react90.useEffect)(() => {
26219
+ (0, import_react91.useEffect)(() => {
25763
26220
  if (isConnected && address && !isExternalConnected && connector && chain?.id) {
25764
26221
  setExternalWallet({
25765
26222
  address,
@@ -25768,17 +26225,17 @@ function DirectWalletHandler() {
25768
26225
  });
25769
26226
  }
25770
26227
  }, [isConnected, address, isExternalConnected, connector, chain?.id, setExternalWallet]);
25771
- (0, import_react90.useEffect)(() => {
26228
+ (0, import_react91.useEffect)(() => {
25772
26229
  if (isExternalConnected && !isConnected) {
25773
26230
  clearExternalWallet();
25774
26231
  }
25775
26232
  }, [isConnected, isExternalConnected, clearExternalWallet]);
25776
- (0, import_react90.useEffect)(() => {
26233
+ (0, import_react91.useEffect)(() => {
25777
26234
  if (isExternalConnected && isConnected && chain?.id) {
25778
26235
  setExternalChainId(chain.id);
25779
26236
  }
25780
26237
  }, [chain?.id, isConnected, isExternalConnected, setExternalChainId]);
25781
- (0, import_react90.useEffect)(() => {
26238
+ (0, import_react91.useEffect)(() => {
25782
26239
  if (isExternalConnected && isConnected && address && address !== externalAddress && connector && chain?.id) {
25783
26240
  setExternalWallet({
25784
26241
  address,
@@ -25789,10 +26246,10 @@ function DirectWalletHandler() {
25789
26246
  }, [address, isConnected, isExternalConnected, externalAddress, chain?.id, connector, setExternalWallet]);
25790
26247
  return null;
25791
26248
  }
25792
- var import_react90, import_wagmi8;
26249
+ var import_react91, import_wagmi8;
25793
26250
  var init_DirectWalletHandler = __esm({
25794
26251
  "src/internal/components/DirectWalletHandler.tsx"() {
25795
- import_react90 = require("react");
26252
+ import_react91 = require("react");
25796
26253
  import_wagmi8 = require("wagmi");
25797
26254
  init_ProviderContext();
25798
26255
  init_useExternalWalletStore();
@@ -25800,14 +26257,14 @@ var init_DirectWalletHandler = __esm({
25800
26257
  });
25801
26258
 
25802
26259
  // src/internal/components/TssManager.tsx
25803
- var import_react91, TssManagerWithRef;
26260
+ var import_react92, TssManagerWithRef;
25804
26261
  var init_TssManager = __esm({
25805
26262
  "src/internal/components/TssManager.tsx"() {
25806
26263
  init_SessionContext();
25807
- import_react91 = __toESM(require("react"), 1);
26264
+ import_react92 = __toESM(require("react"), 1);
25808
26265
  init_auth();
25809
26266
  init_clients();
25810
- TssManagerWithRef = import_react91.default.forwardRef((props, ref) => {
26267
+ TssManagerWithRef = import_react92.default.forwardRef((props, ref) => {
25811
26268
  const { mpcPin } = props;
25812
26269
  const usePaymaster = useSession((st) => st.usePaymaster);
25813
26270
  const publicClient = useSession((st) => st.publicClient);
@@ -25815,14 +26272,14 @@ var init_TssManager = __esm({
25815
26272
  const setStatus = useSession((st) => st.setStatus);
25816
26273
  const setSession = useSession((st) => st.setSession);
25817
26274
  const setAddress = useSession((st) => st.setAddress);
25818
- const onSessionCreated = (0, import_react91.useCallback)(
26275
+ const onSessionCreated = (0, import_react92.useCallback)(
25819
26276
  (session, address) => {
25820
26277
  setSession(session);
25821
26278
  setAddress(address);
25822
26279
  },
25823
26280
  [setSession, setAddress]
25824
26281
  );
25825
- const createSessionWithKeyshare = import_react91.default.useCallback(
26282
+ const createSessionWithKeyshare = import_react92.default.useCallback(
25826
26283
  async (userId, hasServerKeyshare, isNewUser) => {
25827
26284
  setStatus("checking key management setup...");
25828
26285
  await ensureKeyshare(userId, hasServerKeyshare, setStatus, isNewUser);
@@ -25847,7 +26304,7 @@ var init_TssManager = __esm({
25847
26304
  },
25848
26305
  [setStatus, usePaymaster, activeChainId, publicClient, mpcPin]
25849
26306
  );
25850
- import_react91.default.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
26307
+ import_react92.default.useImperativeHandle(ref, () => ({ createSessionWithKeyshare }), [createSessionWithKeyshare]);
25851
26308
  return null;
25852
26309
  });
25853
26310
  }
@@ -25875,7 +26332,7 @@ function WalletConnectHandler() {
25875
26332
  const projectId = providerConfig?.projectId;
25876
26333
  const setExternalWallet = useExternalWalletStore((st) => st.setExternalWallet);
25877
26334
  const setPendingWalletLogin = useLayoutDataStore((st) => st.setPendingWalletLogin);
25878
- const onLinkingComplete = (0, import_react92.useCallback)(
26335
+ const onLinkingComplete = (0, import_react93.useCallback)(
25879
26336
  async (success) => {
25880
26337
  setIsWalletLinking(false);
25881
26338
  if (!success && !passportWalletAddress) {
@@ -25904,10 +26361,10 @@ function WalletConnectHandler() {
25904
26361
  },
25905
26362
  [qc, passportWalletAddress, setProviderType, setPage, setIsWalletLinking]
25906
26363
  );
25907
- const [hasStartedLinking, setHasStartedLinking] = import_react92.default.useState(false);
25908
- const [modalWasOpened, setModalWasOpened] = import_react92.default.useState(false);
25909
- const [pendingModalOpen, setPendingModalOpen] = import_react92.default.useState(false);
25910
- (0, import_react92.useEffect)(() => {
26364
+ const [hasStartedLinking, setHasStartedLinking] = import_react93.default.useState(false);
26365
+ const [modalWasOpened, setModalWasOpened] = import_react93.default.useState(false);
26366
+ const [pendingModalOpen, setPendingModalOpen] = import_react93.default.useState(false);
26367
+ (0, import_react93.useEffect)(() => {
25911
26368
  if (isWalletLinking && !hasStartedLinking) {
25912
26369
  console.log("[WalletConnectHandler] Starting wallet link flow:", {
25913
26370
  isConnected,
@@ -25945,18 +26402,18 @@ function WalletConnectHandler() {
25945
26402
  setProviderType,
25946
26403
  walletMode
25947
26404
  ]);
25948
- (0, import_react92.useEffect)(() => {
26405
+ (0, import_react93.useEffect)(() => {
25949
26406
  if (pendingModalOpen && !isConnected && openConnectModal) {
25950
26407
  setPendingModalOpen(false);
25951
26408
  openConnectModal();
25952
26409
  }
25953
26410
  }, [pendingModalOpen, isConnected, openConnectModal]);
25954
- (0, import_react92.useEffect)(() => {
26411
+ (0, import_react93.useEffect)(() => {
25955
26412
  if (connectModalOpen && hasStartedLinking) {
25956
26413
  setModalWasOpened(true);
25957
26414
  }
25958
26415
  }, [connectModalOpen, hasStartedLinking]);
25959
- (0, import_react92.useEffect)(() => {
26416
+ (0, import_react93.useEffect)(() => {
25960
26417
  if (modalWasOpened && !connectModalOpen && !isConnected && isWalletLinking) {
25961
26418
  console.log("[WalletConnectHandler] Modal closed without connecting");
25962
26419
  onLinkingComplete(false);
@@ -25964,7 +26421,7 @@ function WalletConnectHandler() {
25964
26421
  setModalWasOpened(false);
25965
26422
  }
25966
26423
  }, [connectModalOpen, modalWasOpened, isConnected, isWalletLinking]);
25967
- (0, import_react92.useEffect)(() => {
26424
+ (0, import_react93.useEffect)(() => {
25968
26425
  if (isWalletLinking) {
25969
26426
  const timeout = setTimeout(() => {
25970
26427
  console.warn("[WalletConnectHandler] Wallet linking timed out, resetting state");
@@ -26084,7 +26541,7 @@ function WalletConnectHandler() {
26084
26541
  setPage(passportWalletAddress ? "manage-wallet" /* MANAGE_WALLET */ : "auth" /* AUTH */);
26085
26542
  }
26086
26543
  });
26087
- (0, import_react92.useEffect)(() => {
26544
+ (0, import_react93.useEffect)(() => {
26088
26545
  if (!!chain?.id && isConnected && walletAddress && isWalletLinking && hasStartedLinking && modalWasOpened && !pendingModalOpen) {
26089
26546
  console.log("[WalletConnectHandler] handleWalletSign triggered");
26090
26547
  if (!passportWalletAddress) {
@@ -26094,7 +26551,7 @@ function WalletConnectHandler() {
26094
26551
  handleWalletSign({ chainId: chain.id, signingWalletAddress: walletAddress });
26095
26552
  }
26096
26553
  }, [chain, isConnected, walletAddress, isWalletLinking, hasStartedLinking, modalWasOpened, pendingModalOpen]);
26097
- (0, import_react92.useEffect)(() => {
26554
+ (0, import_react93.useEffect)(() => {
26098
26555
  if (isConnected && !chain?.id && isWalletLinking && hasStartedLinking && !connectModalOpen && !isWalletSigning) {
26099
26556
  const timeout = setTimeout(() => {
26100
26557
  console.warn("[WalletConnectHandler] Wallet connected but chain info missing, resetting");
@@ -26116,7 +26573,7 @@ function WalletConnectHandler() {
26116
26573
  ]);
26117
26574
  return null;
26118
26575
  }
26119
- var import_rainbowkit2, import_react_query57, import_react92, import_wagmi9;
26576
+ var import_rainbowkit2, import_react_query57, import_react93, import_wagmi9;
26120
26577
  var init_WalletConnectHandler = __esm({
26121
26578
  "src/internal/components/WalletConnectHandler.tsx"() {
26122
26579
  init_ProviderContext();
@@ -26124,7 +26581,7 @@ var init_WalletConnectHandler = __esm({
26124
26581
  init_linkedProfiles();
26125
26582
  import_rainbowkit2 = require("@rainbow-me/rainbowkit");
26126
26583
  import_react_query57 = require("@tanstack/react-query");
26127
- import_react92 = __toESM(require("react"), 1);
26584
+ import_react93 = __toESM(require("react"), 1);
26128
26585
  import_wagmi9 = require("wagmi");
26129
26586
  init_wallet();
26130
26587
  init_AuthMenu2();
@@ -26152,7 +26609,7 @@ function waitForStoreHydration() {
26152
26609
  }
26153
26610
  function SessionProvider({ children }) {
26154
26611
  const config = useProviderConfig().config;
26155
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_react93.Fragment, { children: [
26612
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_react94.Fragment, { children: [
26156
26613
  children,
26157
26614
  config.current?.wallet?.enabled && /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(WalletConnectHandler, {}),
26158
26615
  config.current?.wallet?.enabled && (config.current?.wallet?.mode === "direct" || config.current?.wallet?.mode === "both") && /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(DirectWalletHandler, {}),
@@ -26168,11 +26625,11 @@ function SessionProvider({ children }) {
26168
26625
  /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(OnboardingOverlay, {})
26169
26626
  ] });
26170
26627
  }
26171
- var import_read22, import_react93, import_zustand16, import_middleware4, import_jsx_runtime123, useSession, requireActiveChainId;
26628
+ var import_read22, import_react94, import_zustand16, import_middleware4, import_jsx_runtime123, useSession, requireActiveChainId;
26172
26629
  var init_SessionContext = __esm({
26173
26630
  "src/context/SessionContext.tsx"() {
26174
26631
  import_read22 = require("@embarkai/core/read");
26175
- import_react93 = require("react");
26632
+ import_react94 = require("react");
26176
26633
  import_zustand16 = require("zustand");
26177
26634
  import_middleware4 = require("zustand/middleware");
26178
26635
  init_BalanceFeedProvider2();
@@ -27152,13 +27609,13 @@ async function clearLocalKeyshare(userId) {
27152
27609
  console.log("[clearLocalKeyshare] Keyshares are now managed by secure iframe");
27153
27610
  console.log("[clearLocalKeyshare] To clear keyshares, user must revoke authorization in iframe");
27154
27611
  if (typeof window !== "undefined" && window.localStorage) {
27155
- const keys2 = [
27612
+ const keys3 = [
27156
27613
  `tss.${userId}.keyshare`,
27157
27614
  `tss.${userId}.ownerAddress`,
27158
27615
  `tss.${userId}.sessionId`,
27159
27616
  ...Object.keys(window.localStorage).filter((key) => key.startsWith(`tss.${userId}.dkg.`))
27160
27617
  ];
27161
- keys2.forEach((key) => window.localStorage.removeItem(key));
27618
+ keys3.forEach((key) => window.localStorage.removeItem(key));
27162
27619
  console.log("[clearLocalKeyshare] Cleared old localStorage keys for migration");
27163
27620
  }
27164
27621
  }
@@ -28853,7 +29310,7 @@ var init_rainbowkit = __esm({
28853
29310
  function RainbowKitProvider({ children }) {
28854
29311
  const config = useProviderConfig().config;
28855
29312
  const colorMode = useLayoutStore((st) => st.colorMode);
28856
- const rainbowConfig = (0, import_react94.useMemo)(
29313
+ const rainbowConfig = (0, import_react95.useMemo)(
28857
29314
  () => createRainbowConfig({
28858
29315
  projectId: config.current?.wallet?.walletConnectProjectId,
28859
29316
  allowedWallets: config.current?.wallet?.allowedWallets,
@@ -28867,7 +29324,7 @@ function RainbowKitProvider({ children }) {
28867
29324
  config.current?.wallet?.walletConnectProjectId
28868
29325
  ]
28869
29326
  );
28870
- const customTheme = (0, import_react94.useMemo)(() => {
29327
+ const customTheme = (0, import_react95.useMemo)(() => {
28871
29328
  if (!config.current?.wallet?.enabled) return {};
28872
29329
  return colorMode === "dark" ? {
28873
29330
  ...(0, import_rainbowkit4.darkTheme)(),
@@ -28884,11 +29341,11 @@ function RainbowKitProvider({ children }) {
28884
29341
  if (!config.current?.wallet?.enabled) return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(import_jsx_runtime124.Fragment, { children });
28885
29342
  return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(import_wagmi11.WagmiProvider, { config: rainbowConfig, children: /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(import_rainbowkit4.RainbowKitProvider, { theme: customTheme, modalSize: "compact", showRecentTransactions: true, children }) });
28886
29343
  }
28887
- var import_rainbowkit4, import_react94, import_wagmi11, import_styles, import_jsx_runtime124;
29344
+ var import_rainbowkit4, import_react95, import_wagmi11, import_styles, import_jsx_runtime124;
28888
29345
  var init_RainbowKitContext = __esm({
28889
29346
  "src/context/RainbowKitContext.tsx"() {
28890
29347
  import_rainbowkit4 = require("@rainbow-me/rainbowkit");
28891
- import_react94 = require("react");
29348
+ import_react95 = require("react");
28892
29349
  import_wagmi11 = require("wagmi");
28893
29350
  init_rainbowkit();
28894
29351
  init_useLayoutStore();
@@ -28944,10 +29401,10 @@ function clearLegacyWagmiStorage() {
28944
29401
  }
28945
29402
  function Provider(props) {
28946
29403
  const { children, projectId, initialConfig = {}, callbacks } = props;
28947
- const callbacksRef = (0, import_react95.useRef)(callbacks);
28948
- (0, import_react95.useEffect)(() => notifyNoProjetctId(projectId), [projectId]);
28949
- const config = (0, import_react95.useRef)((0, import_lodash_es14.merge)({}, DEFAULT_PROVIDER_CONFIG, { projectId }, initialConfig));
28950
- const updateConfig = (0, import_react95.useCallback)((updates) => {
29404
+ const callbacksRef = (0, import_react96.useRef)(callbacks);
29405
+ (0, import_react96.useEffect)(() => notifyNoProjetctId(projectId), [projectId]);
29406
+ const config = (0, import_react96.useRef)((0, import_lodash_es15.merge)({}, DEFAULT_PROVIDER_CONFIG, { projectId }, initialConfig));
29407
+ const updateConfig = (0, import_react96.useCallback)((updates) => {
28951
29408
  const prev = config.current;
28952
29409
  const next = { ...prev };
28953
29410
  if (updates.projectId !== void 0) next.projectId = updates.projectId;
@@ -28981,14 +29438,14 @@ function Provider(props) {
28981
29438
  if (updates.translations) next.translations = { ...next.translations, ...updates.translations };
28982
29439
  config.current = next;
28983
29440
  }, []);
28984
- const updateCallbacks = (0, import_react95.useCallback)((updates) => {
29441
+ const updateCallbacks = (0, import_react96.useCallback)((updates) => {
28985
29442
  const prev = callbacksRef.current;
28986
29443
  const next = updates ? { ...prev, ...updates } : void 0;
28987
29444
  callbacksRef.current = next;
28988
29445
  }, []);
28989
- (0, import_react95.useEffect)(() => {
29446
+ (0, import_react96.useEffect)(() => {
28990
29447
  if (typeof window === "undefined" || !projectId) return;
28991
- const mergedConfig = (0, import_lodash_es14.merge)(DEFAULT_PROVIDER_CONFIG, initialConfig);
29448
+ const mergedConfig = (0, import_lodash_es15.merge)(DEFAULT_PROVIDER_CONFIG, initialConfig);
28992
29449
  updateConfig(mergedConfig);
28993
29450
  if (mergedConfig.wallet?.enabled) {
28994
29451
  clearLegacyWagmiStorage();
@@ -29006,7 +29463,7 @@ function Provider(props) {
29006
29463
  useSession.getState().setActiveChainId(mergedConfig.network.chainId);
29007
29464
  }
29008
29465
  }, [projectId, initialConfig]);
29009
- (0, import_react95.useEffect)(() => {
29466
+ (0, import_react96.useEffect)(() => {
29010
29467
  if (typeof window === "undefined" || !projectId) return;
29011
29468
  try {
29012
29469
  (0, import_error_tracking4.initSdkErrorTracking)();
@@ -29035,7 +29492,7 @@ function Provider(props) {
29035
29492
  console.error("[PROVIDER] Error setting up iframe manager:", error);
29036
29493
  }
29037
29494
  }, [projectId]);
29038
- const contextValue = (0, import_react95.useMemo)(
29495
+ const contextValue = (0, import_react96.useMemo)(
29039
29496
  () => ({
29040
29497
  config,
29041
29498
  updateConfig,
@@ -29056,12 +29513,12 @@ function Provider(props) {
29056
29513
  /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(WagmiProvider2, { children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(UIContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(SessionProvider, { children }) }) })
29057
29514
  );
29058
29515
  }
29059
- var import_error_tracking4, import_lodash_es14, import_react95, import_jsx_runtime126, UIContext, useProviderConfig;
29516
+ var import_error_tracking4, import_lodash_es15, import_react96, import_jsx_runtime126, UIContext, useProviderConfig;
29060
29517
  var init_ProviderContext = __esm({
29061
29518
  "src/context/ProviderContext.tsx"() {
29062
29519
  import_error_tracking4 = require("@embarkai/core/internal/error-tracking");
29063
- import_lodash_es14 = require("lodash-es");
29064
- import_react95 = require("react");
29520
+ import_lodash_es15 = require("lodash-es");
29521
+ import_react96 = require("react");
29065
29522
  init_initial();
29066
29523
  init_iframe_manager();
29067
29524
  init_RainbowKitContext();
@@ -29069,9 +29526,9 @@ var init_ProviderContext = __esm({
29069
29526
  init_utils12();
29070
29527
  init_WagmiContext();
29071
29528
  import_jsx_runtime126 = require("react/jsx-runtime");
29072
- UIContext = (0, import_react95.createContext)(void 0);
29529
+ UIContext = (0, import_react96.createContext)(void 0);
29073
29530
  useProviderConfig = () => {
29074
- const ctx = (0, import_react95.useContext)(UIContext);
29531
+ const ctx = (0, import_react96.useContext)(UIContext);
29075
29532
  if (!ctx) throw new Error("useProviderConfig must be used within a Provider");
29076
29533
  return ctx;
29077
29534
  };
@@ -29083,6 +29540,7 @@ var index_exports = {};
29083
29540
  __export(index_exports, {
29084
29541
  AccountAbstractionError: () => AccountAbstractionError,
29085
29542
  Address: () => Address,
29543
+ BRIDGE_MENU_TOUR: () => BRIDGE_MENU_TOUR,
29086
29544
  BUY_MENU_BINANCE_TOUR: () => BUY_MENU_BINANCE_TOUR,
29087
29545
  ConnectWalletButton: () => ConnectWalletButton,
29088
29546
  ErrorCodes: () => ErrorCodes,
@@ -29094,6 +29552,7 @@ __export(index_exports, {
29094
29552
  PASSPORT_TRANSLATIONS: () => PASSPORT_TRANSLATIONS,
29095
29553
  PageKey: () => PageKey,
29096
29554
  Provider: () => Provider,
29555
+ SEND_MENU_TOUR: () => SEND_MENU_TOUR,
29097
29556
  SessionExpiredError: () => SessionExpiredError,
29098
29557
  TOKENS_ICONS: () => TOKENS_ICONS,
29099
29558
  ThemeToggle: () => ThemeToggle,
@@ -29188,7 +29647,7 @@ init_ProviderContext();
29188
29647
  init_lumia2();
29189
29648
  init_embarkAI2();
29190
29649
  var import_lucide_react79 = require("lucide-react");
29191
- var import_react96 = require("react");
29650
+ var import_react97 = require("react");
29192
29651
  init_SessionContext();
29193
29652
  init_auth();
29194
29653
  init_BalanceView2();
@@ -29221,10 +29680,10 @@ function ConnectWalletButton(props) {
29221
29680
  const colorMode = useLayoutStore((st) => st.colorMode);
29222
29681
  const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useSession();
29223
29682
  const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
29224
- (0, import_react96.useEffect)(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
29683
+ (0, import_react97.useEffect)(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
29225
29684
  const { data: profile, isLoading: isProfileLoading } = useUserProfile();
29226
29685
  const displayName = profile?.nicknameDisplay || profile?.displayName || import_auth23.jwtTokenManager.getDisplayName();
29227
- const indicators = (0, import_react96.useMemo)(() => {
29686
+ const indicators = (0, import_react97.useMemo)(() => {
29228
29687
  const userId = session?.mpcUserId;
29229
29688
  if (!userId) return { server: false, local: false, backup: false };
29230
29689
  const server = import_auth23.jwtTokenManager.getHasKeyshare() ?? false;
@@ -29863,14 +30322,14 @@ var Hash = ({
29863
30322
  };
29864
30323
 
29865
30324
  // src/internal/components/TransactionsMenu/TransactionsList.tsx
29866
- var import_react97 = require("react");
30325
+ var import_react98 = require("react");
29867
30326
  init_base2();
29868
30327
  var import_jsx_runtime133 = require("react/jsx-runtime");
29869
30328
  var TransactionsList = ({ address, itemsCount = 10 }) => {
29870
- const [transactions, setTransactions] = (0, import_react97.useState)([]);
29871
- const [loading, setLoading] = (0, import_react97.useState)(true);
29872
- const [error, setError] = (0, import_react97.useState)(null);
29873
- (0, import_react97.useEffect)(() => {
30329
+ const [transactions, setTransactions] = (0, import_react98.useState)([]);
30330
+ const [loading, setLoading] = (0, import_react98.useState)(true);
30331
+ const [error, setError] = (0, import_react98.useState)(null);
30332
+ (0, import_react98.useEffect)(() => {
29874
30333
  const fetchTransactions2 = async () => {
29875
30334
  try {
29876
30335
  setLoading(true);
@@ -30161,13 +30620,13 @@ function useUserOpStatus(options = {}) {
30161
30620
  init_useErc3643Compliance();
30162
30621
 
30163
30622
  // src/hooks/useWalletMode.ts
30164
- var import_react98 = require("react");
30623
+ var import_react99 = require("react");
30165
30624
  init_useExternalWalletStore();
30166
30625
  function useWalletMode() {
30167
30626
  const configMode = useExternalWalletStore((st) => st.configMode);
30168
30627
  const activeMode = useExternalWalletStore((st) => st.activeMode);
30169
30628
  const setActiveMode = useExternalWalletStore((st) => st.setActiveMode);
30170
- const switchMode = (0, import_react98.useCallback)(
30629
+ const switchMode = (0, import_react99.useCallback)(
30171
30630
  (mode) => {
30172
30631
  if (configMode !== "both") return;
30173
30632
  setActiveMode(mode);
@@ -30183,7 +30642,7 @@ function useWalletMode() {
30183
30642
  }
30184
30643
 
30185
30644
  // src/hooks/useDirectWallet.ts
30186
- var import_react99 = require("react");
30645
+ var import_react100 = require("react");
30187
30646
  var import_rainbowkit6 = require("@rainbow-me/rainbowkit");
30188
30647
  var import_wagmi13 = require("wagmi");
30189
30648
  init_useExternalWalletStore();
@@ -30197,13 +30656,13 @@ function useDirectWallet() {
30197
30656
  const { disconnect: wagmiDisconnect } = (0, import_wagmi13.useDisconnect)();
30198
30657
  const { openConnectModal } = (0, import_rainbowkit6.useConnectModal)();
30199
30658
  const setIsWalletLinking = useLayoutDataStore((st) => st.setIsWalletLinking);
30200
- const connect = (0, import_react99.useCallback)(() => {
30659
+ const connect = (0, import_react100.useCallback)(() => {
30201
30660
  setIsWalletLinking(true);
30202
30661
  }, [setIsWalletLinking]);
30203
- const reconnect = (0, import_react99.useCallback)(() => {
30662
+ const reconnect = (0, import_react100.useCallback)(() => {
30204
30663
  if (openConnectModal) openConnectModal();
30205
30664
  }, [openConnectModal]);
30206
- const disconnect = (0, import_react99.useCallback)(() => {
30665
+ const disconnect = (0, import_react100.useCallback)(() => {
30207
30666
  wagmiDisconnect();
30208
30667
  clearExternalWallet();
30209
30668
  }, [wagmiDisconnect, clearExternalWallet]);
@@ -30219,7 +30678,7 @@ function useDirectWallet() {
30219
30678
  }
30220
30679
 
30221
30680
  // src/hooks/useSendDirectTransaction.ts
30222
- var import_react100 = require("react");
30681
+ var import_react101 = require("react");
30223
30682
  var import_viem22 = require("viem");
30224
30683
  var import_wagmi14 = require("wagmi");
30225
30684
  init_useExternalWalletStore();
@@ -30228,10 +30687,10 @@ function useSendDirectTransaction() {
30228
30687
  const externalChainId = useExternalWalletStore((st) => st.externalChainId);
30229
30688
  const { sendTransactionAsync } = (0, import_wagmi14.useSendTransaction)();
30230
30689
  const { switchChainAsync } = (0, import_wagmi14.useSwitchChain)();
30231
- const [isPending, setIsPending] = (0, import_react100.useState)(false);
30232
- const [error, setError] = (0, import_react100.useState)(null);
30233
- const [txHash, setTxHash] = (0, import_react100.useState)(null);
30234
- const sendTransaction = (0, import_react100.useCallback)(
30690
+ const [isPending, setIsPending] = (0, import_react101.useState)(false);
30691
+ const [error, setError] = (0, import_react101.useState)(null);
30692
+ const [txHash, setTxHash] = (0, import_react101.useState)(null);
30693
+ const sendTransaction = (0, import_react101.useCallback)(
30235
30694
  async (params) => {
30236
30695
  if (!isConnected) {
30237
30696
  setError("No external wallet connected");
@@ -30265,7 +30724,7 @@ function useSendDirectTransaction() {
30265
30724
  },
30266
30725
  [isConnected, externalChainId, sendTransactionAsync, switchChainAsync]
30267
30726
  );
30268
- const reset = (0, import_react100.useCallback)(() => {
30727
+ const reset = (0, import_react101.useCallback)(() => {
30269
30728
  setError(null);
30270
30729
  setTxHash(null);
30271
30730
  setIsPending(false);
@@ -30274,7 +30733,7 @@ function useSendDirectTransaction() {
30274
30733
  }
30275
30734
 
30276
30735
  // src/hooks/useTransferToLinkedWallet.ts
30277
- var import_react101 = require("react");
30736
+ var import_react102 = require("react");
30278
30737
  var import_viem23 = require("viem");
30279
30738
  init_SessionContext();
30280
30739
  init_account2();
@@ -30293,14 +30752,14 @@ var ERC20_TRANSFER_ABI2 = [
30293
30752
  function useTransferToLinkedWallet() {
30294
30753
  const session = useSession((st) => st.session);
30295
30754
  const { profiles } = useLinkedProfiles();
30296
- const [isPending, setIsPending] = (0, import_react101.useState)(false);
30297
- const [error, setError] = (0, import_react101.useState)(null);
30298
- const [userOpHash, setUserOpHash] = (0, import_react101.useState)(null);
30299
- const linkedWallets = (0, import_react101.useMemo)(
30755
+ const [isPending, setIsPending] = (0, import_react102.useState)(false);
30756
+ const [error, setError] = (0, import_react102.useState)(null);
30757
+ const [userOpHash, setUserOpHash] = (0, import_react102.useState)(null);
30758
+ const linkedWallets = (0, import_react102.useMemo)(
30300
30759
  () => (profiles || []).filter((p) => p.provider === "wallet" && p.externalId).map((p) => p.externalId),
30301
30760
  [profiles]
30302
30761
  );
30303
- const transfer = (0, import_react101.useCallback)(
30762
+ const transfer = (0, import_react102.useCallback)(
30304
30763
  async (params) => {
30305
30764
  if (!session) {
30306
30765
  setError("No active session");
@@ -30351,7 +30810,7 @@ function useTransferToLinkedWallet() {
30351
30810
  },
30352
30811
  [session, linkedWallets]
30353
30812
  );
30354
- const reset = (0, import_react101.useCallback)(() => {
30813
+ const reset = (0, import_react102.useCallback)(() => {
30355
30814
  setError(null);
30356
30815
  setUserOpHash(null);
30357
30816
  setIsPending(false);
@@ -30375,7 +30834,7 @@ function useNativeWalletSignature() {
30375
30834
 
30376
30835
  // src/hooks/useLogout.ts
30377
30836
  var import_auth25 = require("@embarkai/core/auth");
30378
- var import_react102 = require("react");
30837
+ var import_react103 = require("react");
30379
30838
  var import_wagmi16 = require("wagmi");
30380
30839
  init_ProviderContext();
30381
30840
  init_SessionContext();
@@ -30395,7 +30854,7 @@ function useLogout() {
30395
30854
  }
30396
30855
  }
30397
30856
  });
30398
- const logout2 = (0, import_react102.useCallback)(async () => {
30857
+ const logout2 = (0, import_react103.useCallback)(async () => {
30399
30858
  const { setSession, setIsLoading, setAddress, setStatus, setError } = useSession.getState();
30400
30859
  const prevAddress = address;
30401
30860
  let userId = null;
@@ -30514,7 +30973,7 @@ function useTransactions() {
30514
30973
 
30515
30974
  // src/modules/assets.ts
30516
30975
  init_SessionContext();
30517
- var import_react103 = __toESM(require("react"), 1);
30976
+ var import_react104 = __toESM(require("react"), 1);
30518
30977
  var import_viem25 = require("viem");
30519
30978
  var import_wagmi18 = require("wagmi");
30520
30979
  var COMMON_TOKENS = [
@@ -30669,7 +31128,7 @@ function useTokenBalance2(tokenAddress, userAddress) {
30669
31128
  }
30670
31129
  });
30671
31130
  const { tokenInfo } = useTokenInfo(tokenAddress);
30672
- const formattedBalance = import_react103.default.useMemo(() => {
31131
+ const formattedBalance = import_react104.default.useMemo(() => {
30673
31132
  if (!balance || !tokenInfo) return "0";
30674
31133
  return (0, import_viem25.formatUnits)(balance, tokenInfo.decimals);
30675
31134
  }, [balance, tokenInfo]);
@@ -30734,6 +31193,7 @@ function useSmartAccountTransactions() {
30734
31193
  init_iframe_manager();
30735
31194
  init_Onboarding();
30736
31195
  init_BuyMenu2();
31196
+ init_SendMenu2();
30737
31197
 
30738
31198
  // src/internal/assets/index.ts
30739
31199
  init_networks2();
@@ -30766,6 +31226,7 @@ autorun();
30766
31226
  0 && (module.exports = {
30767
31227
  AccountAbstractionError,
30768
31228
  Address,
31229
+ BRIDGE_MENU_TOUR,
30769
31230
  BUY_MENU_BINANCE_TOUR,
30770
31231
  ConnectWalletButton,
30771
31232
  ErrorCodes,
@@ -30777,6 +31238,7 @@ autorun();
30777
31238
  PASSPORT_TRANSLATIONS,
30778
31239
  PageKey,
30779
31240
  Provider,
31241
+ SEND_MENU_TOUR,
30780
31242
  SessionExpiredError,
30781
31243
  TOKENS_ICONS,
30782
31244
  ThemeToggle,