@skip-go/widget 3.11.2 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1426,9 +1426,17 @@ const getBrandButtonTextColor = (color) => {
1426
1426
  const typeOfColor = hsp > 127.5 ? "light" : "dark";
1427
1427
  return typeOfColor === "light" ? "black" : "white";
1428
1428
  };
1429
+ const defaultBorderRadius = {
1430
+ main: "25px",
1431
+ selectionButton: "10px",
1432
+ ghostButton: "30px",
1433
+ modalContainer: "20px",
1434
+ rowItem: "12px"
1435
+ };
1429
1436
  const defaultTheme = {
1430
1437
  brandColor: "#ff66ff",
1431
1438
  brandTextColor: void 0,
1439
+ borderRadius: defaultBorderRadius,
1432
1440
  primary: {
1433
1441
  background: {
1434
1442
  normal: "#000000"
@@ -1462,6 +1470,7 @@ const defaultTheme = {
1462
1470
  const lightTheme = {
1463
1471
  brandColor: "#ff66ff",
1464
1472
  brandTextColor: void 0,
1473
+ borderRadius: defaultBorderRadius,
1465
1474
  primary: {
1466
1475
  background: {
1467
1476
  normal: "#ffffff"
@@ -2215,6 +2224,10 @@ const TextButton = dt(Text).attrs({ as: "button" })`
2215
2224
  ${removeButtonStyles}
2216
2225
  cursor: pointer;
2217
2226
  `;
2227
+ const convertToPxValue = (value) => {
2228
+ if (!value) return "0px";
2229
+ return typeof value === "number" ? `${value}px` : value;
2230
+ };
2218
2231
  const ErrorWarningPageContent = ({
2219
2232
  title,
2220
2233
  description: description2,
@@ -2255,7 +2268,10 @@ const ErrorWarningPageContent = ({
2255
2268
  const StyledErrorWarningStateContainer = dt(Column)`
2256
2269
  width: 100%;
2257
2270
  height: 225px;
2258
- border-radius: 25px;
2271
+ border-radius: ${({ theme }) => {
2272
+ var _a;
2273
+ return convertToPxValue((_a = theme.borderRadius) == null ? void 0 : _a.main);
2274
+ }};
2259
2275
  ${({ backgroundColor }) => backgroundColor && `background: ${backgroundColor}`};
2260
2276
  `;
2261
2277
  const StyledErrorWarningTextInnerContainer = dt(Column)`
@@ -2402,7 +2418,10 @@ const MainButtonContainer = dt.div`
2402
2418
  left: 0;
2403
2419
  width: 100%;
2404
2420
  height: 100%;
2405
- border-radius: 25px;
2421
+ border-radius: ${({ theme }) => {
2422
+ var _a;
2423
+ return convertToPxValue((_a = theme.borderRadius) == null ? void 0 : _a.main);
2424
+ }};
2406
2425
  background-color: rgba(255, 255, 255, 0);
2407
2426
  pointer-events: none;
2408
2427
  ${transition(["background-color"], "fast", "easeOut")};
@@ -2420,7 +2439,10 @@ const StyledMainButton = dt(Row).attrs({
2420
2439
  height: 70px;
2421
2440
  padding: 20px;
2422
2441
  width: 100%;
2423
- border-radius: 25px;
2442
+ border-radius: ${({ theme }) => {
2443
+ var _a;
2444
+ return convertToPxValue((_a = theme.borderRadius) == null ? void 0 : _a.main);
2445
+ }};
2424
2446
  overflow: hidden;
2425
2447
 
2426
2448
  &:hover {
@@ -2492,7 +2514,10 @@ const StyledOverlay$1 = dt(Row)`
2492
2514
  left: 2px;
2493
2515
  right: 0;
2494
2516
  width: calc(100% - 4px);
2495
- border-radius: 24px;
2517
+ border-radius: ${({ theme }) => {
2518
+ var _a;
2519
+ return convertToPxValue((_a = theme.borderRadius) == null ? void 0 : _a.main);
2520
+ }};
2496
2521
  background: ${({ theme }) => theme.primary.background.normal};
2497
2522
 
2498
2523
  @media (max-width: 767px) {
@@ -3948,11 +3973,107 @@ const getTruncatedAddress = (address, extraShort) => {
3948
3973
  if (extraShort) return `${address.slice(0, 6)}…${address.slice(-3)}`;
3949
3974
  return `${address.slice(0, 9)}…${address.slice(-5)}`;
3950
3975
  };
3951
- const hasAmountChanged = (newAmount, oldAmount, decimals = DEFAULT_DECIMAL_PLACES) => {
3952
- const newAmountBN = new BigNumber(newAmount).decimalPlaces(decimals, BigNumber.ROUND_DOWN);
3953
- const oldAmountBN = new BigNumber(oldAmount).decimalPlaces(decimals, BigNumber.ROUND_DOWN);
3954
- return !newAmountBN.eq(oldAmountBN);
3976
+ const MAX_CACHE_ENTRIES = 20;
3977
+ const croppedImageCache = /* @__PURE__ */ new Map();
3978
+ const getCache = (url) => {
3979
+ const entry = croppedImageCache.get(url);
3980
+ if (entry) {
3981
+ entry.hits += 1;
3982
+ return entry.value;
3983
+ }
3955
3984
  };
3985
+ const setCache = (url, value) => {
3986
+ if (croppedImageCache.size >= MAX_CACHE_ENTRIES) {
3987
+ let keyToEvict = null;
3988
+ let lowestHits = Infinity;
3989
+ for (const [key, entry] of croppedImageCache.entries()) {
3990
+ if (entry.hits < lowestHits) {
3991
+ lowestHits = entry.hits;
3992
+ keyToEvict = key;
3993
+ }
3994
+ }
3995
+ if (keyToEvict) {
3996
+ croppedImageCache.delete(keyToEvict);
3997
+ }
3998
+ }
3999
+ croppedImageCache.set(url, { value, hits: 1 });
4000
+ };
4001
+ function useCroppedImage(imageUrl) {
4002
+ const [croppedSrc, setCroppedSrc] = useState(void 0);
4003
+ useEffect(() => {
4004
+ if (!imageUrl) {
4005
+ setCroppedSrc(void 0);
4006
+ return;
4007
+ }
4008
+ if (croppedImageCache.has(imageUrl)) {
4009
+ setCroppedSrc(getCache(imageUrl));
4010
+ return;
4011
+ }
4012
+ let isCancelled = false;
4013
+ const loadImage = (url) => new Promise((resolve, reject) => {
4014
+ const img = new Image();
4015
+ img.crossOrigin = "anonymous";
4016
+ img.onload = () => resolve(img);
4017
+ img.onerror = () => reject(new Error("Failed to load image"));
4018
+ img.src = url;
4019
+ });
4020
+ const cropImage = (img) => {
4021
+ const canvas = document.createElement("canvas");
4022
+ const ctx = canvas.getContext("2d");
4023
+ if (!ctx) return null;
4024
+ const { naturalWidth: width, naturalHeight: height } = img;
4025
+ canvas.width = width;
4026
+ canvas.height = height;
4027
+ ctx.drawImage(img, 0, 0);
4028
+ const imageData = ctx.getImageData(0, 0, width, height);
4029
+ const pixels = imageData.data;
4030
+ let top = null;
4031
+ let left = null;
4032
+ let right = null;
4033
+ let bottom = null;
4034
+ for (let y2 = 0; y2 < height; y2++) {
4035
+ for (let x2 = 0; x2 < width; x2++) {
4036
+ const alpha = pixels[(y2 * width + x2) * 4 + 3];
4037
+ if (alpha !== 0) {
4038
+ if (top === null) top = y2;
4039
+ if (left === null || x2 < left) left = x2;
4040
+ if (right === null || x2 > right) right = x2;
4041
+ bottom = y2;
4042
+ }
4043
+ }
4044
+ }
4045
+ if (top === null || left === null || right === null || bottom === null) {
4046
+ console.warn("Image is fully transparent.");
4047
+ return null;
4048
+ }
4049
+ const trimmedWidth = right - left + 1;
4050
+ const trimmedHeight = bottom - top + 1;
4051
+ const trimmed = ctx.getImageData(left, top, trimmedWidth, trimmedHeight);
4052
+ canvas.width = trimmedWidth;
4053
+ canvas.height = trimmedHeight;
4054
+ const newCtx = canvas.getContext("2d");
4055
+ if (!newCtx) return null;
4056
+ newCtx.putImageData(trimmed, 0, 0);
4057
+ return canvas.toDataURL();
4058
+ };
4059
+ setCroppedSrc(void 0);
4060
+ loadImage(imageUrl).then((img) => {
4061
+ if (isCancelled) return;
4062
+ const cropped = cropImage(img) ?? imageUrl;
4063
+ setCache(imageUrl, cropped);
4064
+ setCroppedSrc(cropped);
4065
+ }).catch((err) => {
4066
+ console.error("Image cropping failed:", err);
4067
+ if (!isCancelled) {
4068
+ setCroppedSrc(imageUrl);
4069
+ }
4070
+ });
4071
+ return () => {
4072
+ isCancelled = true;
4073
+ };
4074
+ }, [imageUrl]);
4075
+ return croppedSrc;
4076
+ }
3956
4077
  const useGetAssetDetails = ({
3957
4078
  assetDenom,
3958
4079
  amount,
@@ -3977,6 +4098,7 @@ const useGetAssetDetails = ({
3977
4098
  tokenAmount = convertHumanReadableAmountToCryptoAmount(amount, asset == null ? void 0 : asset.decimals);
3978
4099
  }
3979
4100
  const assetImage = asset == null ? void 0 : asset.logoUri;
4101
+ const croppedImage = useCroppedImage(assetImage);
3980
4102
  const symbol = (asset == null ? void 0 : asset.recommendedSymbol) ?? (asset == null ? void 0 : asset.symbol);
3981
4103
  const chain = chains2 == null ? void 0 : chains2.find((chain2) => {
3982
4104
  if (chainId) {
@@ -4003,7 +4125,7 @@ const useGetAssetDetails = ({
4003
4125
  return {
4004
4126
  asset,
4005
4127
  chain,
4006
- assetImage: assetImage ?? "",
4128
+ assetImage: croppedImage ?? "",
4007
4129
  chainName: chainPrettyName ?? chainName ?? chainId,
4008
4130
  chainImage: chainImage ?? "",
4009
4131
  symbol: symbol ?? "",
@@ -4098,6 +4220,12 @@ function limitDecimalsDisplayed(input, decimalPlaces = DEFAULT_DECIMAL_PLACES) {
4098
4220
  const flooredAndLimitedDecimalPlacesNumber = Math.floor(input * decimalScalingFactor) / decimalScalingFactor;
4099
4221
  return flooredAndLimitedDecimalPlacesNumber.toString();
4100
4222
  }
4223
+ function removeTrailingZeros(input) {
4224
+ if (input == null) return "";
4225
+ const str = input.toString();
4226
+ if (!str.includes(".")) return str;
4227
+ return str.replace(/(\.\d*?[1-9])0+$/g, "$1").replace(/\.0+$/g, "");
4228
+ }
4101
4229
  const GhostButton = dt(SmallText).attrs({
4102
4230
  as: "button"
4103
4231
  })`
@@ -4125,15 +4253,19 @@ const GhostButton = dt(SmallText).attrs({
4125
4253
  `;
4126
4254
  }
4127
4255
  }}
4128
-
4256
+
4129
4257
  padding: 8px 15px;
4130
- border-radius: 90px;
4258
+ border-radius: ${({ theme }) => {
4259
+ var _a;
4260
+ return convertToPxValue((_a = theme.borderRadius) == null ? void 0 : _a.ghostButton);
4261
+ }};
4131
4262
  ${flexProps};
4132
4263
  `;
4133
4264
  const Button = dt.button`
4134
4265
  ${removeButtonStyles}
4135
4266
  line-height: initial;
4136
- ${({ disabled }) => disabled ? lt` &:hover {
4267
+ ${({ disabled }) => disabled ? lt`
4268
+ &:hover {
4137
4269
  cursor: not-allowed;
4138
4270
  }
4139
4271
  ` : lt`
@@ -4154,7 +4286,7 @@ const PillButton = dt(Button)`
4154
4286
  align-items: center;
4155
4287
  justify-content: center;
4156
4288
 
4157
- &:hover{
4289
+ &:hover {
4158
4290
  background: ${({ theme }) => theme.secondary.background.hover};
4159
4291
  }
4160
4292
  `;
@@ -4252,7 +4384,7 @@ const WarningPageBadPrice = ({
4252
4384
  if (hasUsdValues && swapDifferencePercentage) {
4253
4385
  return {
4254
4386
  title: `Warning: Bad trade (-${swapDifferencePercentage})`,
4255
- descriptionContent: /* @__PURE__ */ jsxs(StyledDescriptionContent, { children: [
4387
+ descriptionContent: /* @__PURE__ */ jsxs(StyledDescriptionContent$1, { children: [
4256
4388
  "You will lose ",
4257
4389
  swapDifferencePercentage,
4258
4390
  " of your input value with this trade",
@@ -4356,7 +4488,7 @@ const WarningPageBadPrice = ({
4356
4488
  )
4357
4489
  ] });
4358
4490
  };
4359
- const StyledDescriptionContent = dt.div`
4491
+ const StyledDescriptionContent$1 = dt.div`
4360
4492
  line-height: 1.5;
4361
4493
  `;
4362
4494
  const ExpectedErrorPageAuthFailed = ({ onClickBack }) => {
@@ -4837,7 +4969,7 @@ const useBroadcastedTxsStatus = ({
4837
4969
  setPrevData(resData);
4838
4970
  return resData;
4839
4971
  },
4840
- enabled: txsRequired !== void 0 && txs !== void 0 && !isSettled && (!!txs && txs.length > 0 && enabled !== void 0 ? enabled : true),
4972
+ enabled: txsRequired !== void 0 && txs !== void 0 && txs.length > 0 && !isSettled && (!!txs && txs.length > 0 && enabled !== void 0 ? enabled : true),
4841
4973
  refetchInterval: 500,
4842
4974
  // to make the data persist when query key changed
4843
4975
  initialData: prevData
@@ -5311,16 +5443,6 @@ const _mainnetChains = [
5311
5443
  average: 0.05,
5312
5444
  high: 0.07
5313
5445
  }
5314
- },
5315
- {
5316
- coinDenom: "ist",
5317
- coinMinimalDenom: "uist",
5318
- coinDecimals: 6,
5319
- gasPriceStep: {
5320
- low: 34e-4,
5321
- average: 7e-3,
5322
- high: 0.02
5323
- }
5324
5446
  }
5325
5447
  ],
5326
5448
  stakeCurrency: {
@@ -5753,6 +5875,11 @@ const _mainnetChains = [
5753
5875
  coinDenom: "atone",
5754
5876
  coinMinimalDenom: "uatone",
5755
5877
  coinDecimals: 6
5878
+ },
5879
+ {
5880
+ coinDenom: "photon",
5881
+ coinMinimalDenom: "uphoton",
5882
+ coinDecimals: 6
5756
5883
  }
5757
5884
  ],
5758
5885
  rest: "https://atomone-api.allinbits.com",
@@ -5767,6 +5894,16 @@ const _mainnetChains = [
5767
5894
  },
5768
5895
  chainName: "atomone",
5769
5896
  feeCurrencies: [
5897
+ {
5898
+ coinDenom: "photon",
5899
+ coinMinimalDenom: "uphoton",
5900
+ coinDecimals: 6,
5901
+ gasPriceStep: {
5902
+ low: 0.225,
5903
+ average: 0.3,
5904
+ high: 0.5
5905
+ }
5906
+ },
5770
5907
  {
5771
5908
  coinDenom: "atone",
5772
5909
  coinMinimalDenom: "uatone",
@@ -6408,6 +6545,11 @@ const _mainnetChains = [
6408
6545
  coinDenom: "GGE",
6409
6546
  coinMinimalDenom: "factory/bze12gyp30f29zg26nuqrwdhl26ej4q066pt572fhm/GGE",
6410
6547
  coinDecimals: 6
6548
+ },
6549
+ {
6550
+ coinDenom: "CTL",
6551
+ coinMinimalDenom: "factory/bze1972aqfzdg29ugjln74edx0xvcg4ehvysjptk77/CTL",
6552
+ coinDecimals: 6
6411
6553
  }
6412
6554
  ],
6413
6555
  rest: "https://rest.getbze.com",
@@ -8094,6 +8236,11 @@ const _mainnetChains = [
8094
8236
  coinDenom: "susds",
8095
8237
  coinMinimalDenom: "ibc/B9B561EB378C9EB8C13CAA11FCBC78E6B865A3C65707972F17B1052CFC39F473",
8096
8238
  coinDecimals: 18
8239
+ },
8240
+ {
8241
+ coinDenom: "OPHIR",
8242
+ coinMinimalDenom: "ibc/B26F762ED6D20D0D5305FE1870A476EBCB95127C10199F3CB16E69D893E9F775",
8243
+ coinDecimals: 6
8097
8244
  }
8098
8245
  ],
8099
8246
  rest: "https://cosmoshub.lava.build:443",
@@ -9911,6 +10058,47 @@ const _mainnetChains = [
9911
10058
  coinType: 459
9912
10059
  }
9913
10060
  },
10061
+ {
10062
+ chainId: "hippo-protocol-1",
10063
+ currencies: [
10064
+ {
10065
+ coinDenom: "ahp",
10066
+ coinMinimalDenom: "ahp",
10067
+ coinDecimals: 0
10068
+ }
10069
+ ],
10070
+ rest: "https://api.hippo-protocol.com/",
10071
+ rpc: "https://rpc.hippo-protocol.com/",
10072
+ bech32Config: {
10073
+ bech32PrefixAccAddr: "hippo",
10074
+ bech32PrefixAccPub: "hippopub",
10075
+ bech32PrefixValAddr: "hippovaloper",
10076
+ bech32PrefixValPub: "hippovaloperpub",
10077
+ bech32PrefixConsAddr: "hippovalcons",
10078
+ bech32PrefixConsPub: "hippovalconspub"
10079
+ },
10080
+ chainName: "hippoprotocol",
10081
+ feeCurrencies: [
10082
+ {
10083
+ coinDenom: "ahp",
10084
+ coinMinimalDenom: "ahp",
10085
+ coinDecimals: 0,
10086
+ gasPriceStep: {
10087
+ low: 4e12,
10088
+ average: 5e12,
10089
+ high: 1e13
10090
+ }
10091
+ }
10092
+ ],
10093
+ stakeCurrency: {
10094
+ coinDenom: "ahp",
10095
+ coinMinimalDenom: "ahp",
10096
+ coinDecimals: 0
10097
+ },
10098
+ bip44: {
10099
+ coinType: 118
10100
+ }
10101
+ },
9914
10102
  {
9915
10103
  chainId: "humans_1089-1",
9916
10104
  currencies: [
@@ -10392,6 +10580,11 @@ const _mainnetChains = [
10392
10580
  coinDenom: "sol",
10393
10581
  coinMinimalDenom: "factory/int31zlefkpe3g0vvm9a4h0jf9000lmqutlh99h7fsd/solana-sol",
10394
10582
  coinDecimals: 9
10583
+ },
10584
+ {
10585
+ coinDenom: "xrp",
10586
+ coinMinimalDenom: "factory/int31zlefkpe3g0vvm9a4h0jf9000lmqutlh99h7fsd/xrpl-xrp",
10587
+ coinDecimals: 6
10395
10588
  }
10396
10589
  ],
10397
10590
  rest: "https://api.mainnet.int3face.zone",
@@ -12452,9 +12645,9 @@ const _mainnetChains = [
12452
12645
  coinMinimalDenom: "umfx",
12453
12646
  coinDecimals: 6,
12454
12647
  gasPriceStep: {
12455
- low: 0.5,
12456
- average: 1,
12457
- high: 5
12648
+ low: 1.05,
12649
+ average: 1.1,
12650
+ high: 3
12458
12651
  }
12459
12652
  }
12460
12653
  ],
@@ -17102,6 +17295,11 @@ const _mainnetChains = [
17102
17295
  coinDenom: "sol",
17103
17296
  coinMinimalDenom: "ibc/A1465DD6AF456FCD0D998869608DFEEDA4F4C11EC0A12AF92A994A3F8CBEE546",
17104
17297
  coinDecimals: 9
17298
+ },
17299
+ {
17300
+ coinDenom: "OPHIR",
17301
+ coinMinimalDenom: "ibc/3AF2E322D4B54BB97EEE24760ED25B725842A9B62C759402AB8AADD75915FD14",
17302
+ coinDecimals: 6
17105
17303
  }
17106
17304
  ],
17107
17305
  rest: "https://lcd.osmosis.zone/",
@@ -18471,6 +18669,16 @@ const _mainnetChains = [
18471
18669
  coinMinimalDenom: "p:uatom:31Mar2025",
18472
18670
  coinDecimals: 6
18473
18671
  },
18672
+ {
18673
+ coinDenom: "pATOM30Jun2025",
18674
+ coinMinimalDenom: "p:uatom:30Jun2025",
18675
+ coinDecimals: 6
18676
+ },
18677
+ {
18678
+ coinDenom: "pATOM30Sep2025",
18679
+ coinMinimalDenom: "p:uatom:30Sep2025",
18680
+ coinDecimals: 6
18681
+ },
18474
18682
  {
18475
18683
  coinDenom: "pATOM31Dec2025",
18476
18684
  coinMinimalDenom: "p:uatom:31Dec2025",
@@ -18496,6 +18704,16 @@ const _mainnetChains = [
18496
18704
  coinMinimalDenom: "p:uosmo:31Mar2025",
18497
18705
  coinDecimals: 6
18498
18706
  },
18707
+ {
18708
+ coinDenom: "pOSMO30Jun2025",
18709
+ coinMinimalDenom: "p:uosmo:30Jun2025",
18710
+ coinDecimals: 6
18711
+ },
18712
+ {
18713
+ coinDenom: "pOSMO30Sep2025",
18714
+ coinMinimalDenom: "p:uosmo:30Sep2025",
18715
+ coinDecimals: 6
18716
+ },
18499
18717
  {
18500
18718
  coinDenom: "pOSMO31Dec2025",
18501
18719
  coinMinimalDenom: "p:uosmo:31Dec2025",
@@ -18521,6 +18739,16 @@ const _mainnetChains = [
18521
18739
  coinMinimalDenom: "p:inj:31Mar2025",
18522
18740
  coinDecimals: 18
18523
18741
  },
18742
+ {
18743
+ coinDenom: "pINJ30Jun2025",
18744
+ coinMinimalDenom: "p:inj:30Jun2025",
18745
+ coinDecimals: 18
18746
+ },
18747
+ {
18748
+ coinDenom: "pINJ30Sep2025",
18749
+ coinMinimalDenom: "p:inj:30Sep2025",
18750
+ coinDecimals: 18
18751
+ },
18524
18752
  {
18525
18753
  coinDenom: "pINJ31Dec2025",
18526
18754
  coinMinimalDenom: "p:inj:31Dec2025",
@@ -18546,6 +18774,16 @@ const _mainnetChains = [
18546
18774
  coinMinimalDenom: "p:uluna:31Mar2025",
18547
18775
  coinDecimals: 6
18548
18776
  },
18777
+ {
18778
+ coinDenom: "pLUNA30Jun2025",
18779
+ coinMinimalDenom: "p:uluna:30Jun2025",
18780
+ coinDecimals: 6
18781
+ },
18782
+ {
18783
+ coinDenom: "pLUNA30Sep2025",
18784
+ coinMinimalDenom: "p:uluna:30Sep2025",
18785
+ coinDecimals: 6
18786
+ },
18549
18787
  {
18550
18788
  coinDenom: "pLUNA31Dec2025",
18551
18789
  coinMinimalDenom: "p:uluna:31Dec2025",
@@ -18566,6 +18804,11 @@ const _mainnetChains = [
18566
18804
  coinMinimalDenom: "p:uauuu:31Dec2024",
18567
18805
  coinDecimals: 6
18568
18806
  },
18807
+ {
18808
+ coinDenom: "pAUUU30Jun2025",
18809
+ coinMinimalDenom: "p:uauuu:30Jun2025",
18810
+ coinDecimals: 6
18811
+ },
18569
18812
  {
18570
18813
  coinDenom: "pAUUU31Dec2025",
18571
18814
  coinMinimalDenom: "p:uauuu:31Dec2025",
@@ -18591,6 +18834,11 @@ const _mainnetChains = [
18591
18834
  coinMinimalDenom: "p:stutia:31Mar2025",
18592
18835
  coinDecimals: 6
18593
18836
  },
18837
+ {
18838
+ coinDenom: "pstTIA30Jun2025",
18839
+ coinMinimalDenom: "p:stutia:30Jun2025",
18840
+ coinDecimals: 6
18841
+ },
18594
18842
  {
18595
18843
  coinDenom: "pstTIA31Dec2025",
18596
18844
  coinMinimalDenom: "p:stutia:31Dec2025",
@@ -18616,6 +18864,11 @@ const _mainnetChains = [
18616
18864
  coinMinimalDenom: "p:stadydx:31Mar2025",
18617
18865
  coinDecimals: 18
18618
18866
  },
18867
+ {
18868
+ coinDenom: "pstDYDX30Jun2025",
18869
+ coinMinimalDenom: "p:stadydx:30Jun2025",
18870
+ coinDecimals: 18
18871
+ },
18619
18872
  {
18620
18873
  coinDenom: "pstDYDX31Dec2025",
18621
18874
  coinMinimalDenom: "p:stadydx:31Dec2025",
@@ -18661,6 +18914,16 @@ const _mainnetChains = [
18661
18914
  coinMinimalDenom: "p:utia:31Mar2025",
18662
18915
  coinDecimals: 6
18663
18916
  },
18917
+ {
18918
+ coinDenom: "pTIA30Jun2025",
18919
+ coinMinimalDenom: "p:utia:30Jun2025",
18920
+ coinDecimals: 6
18921
+ },
18922
+ {
18923
+ coinDenom: "pTIA30Sep2025",
18924
+ coinMinimalDenom: "p:utia:30Sep2025",
18925
+ coinDecimals: 6
18926
+ },
18664
18927
  {
18665
18928
  coinDenom: "pTIA31Dec2025",
18666
18929
  coinMinimalDenom: "p:utia:31Dec2025",
@@ -18691,6 +18954,16 @@ const _mainnetChains = [
18691
18954
  coinMinimalDenom: "p:ausdy:31Dec2025",
18692
18955
  coinDecimals: 18
18693
18956
  },
18957
+ {
18958
+ coinDenom: "pUSDY31Mar2026",
18959
+ coinMinimalDenom: "p:ausdy:31Mar2026",
18960
+ coinDecimals: 18
18961
+ },
18962
+ {
18963
+ coinDenom: "pUSDY30Jun2026",
18964
+ coinMinimalDenom: "p:ausdy:30Jun2026",
18965
+ coinDecimals: 18
18966
+ },
18694
18967
  {
18695
18968
  coinDenom: "pPRYZM31Mar2025",
18696
18969
  coinMinimalDenom: "p:upryzm:31Mar2025",
@@ -18711,6 +18984,16 @@ const _mainnetChains = [
18711
18984
  coinMinimalDenom: "p:upryzm:31Dec2025",
18712
18985
  coinDecimals: 6
18713
18986
  },
18987
+ {
18988
+ coinDenom: "pPRYZM31Mar2026",
18989
+ coinMinimalDenom: "p:upryzm:31Mar2026",
18990
+ coinDecimals: 6
18991
+ },
18992
+ {
18993
+ coinDenom: "pPRYZM30Jun2026",
18994
+ coinMinimalDenom: "p:upryzm:30Jun2026",
18995
+ coinDecimals: 6
18996
+ },
18714
18997
  {
18715
18998
  coinDenom: "psUSDS30Jun2025",
18716
18999
  coinMinimalDenom: "p:asusds:30Jun2025",
@@ -18731,6 +19014,11 @@ const _mainnetChains = [
18731
19014
  coinMinimalDenom: "p:asusds:31Mar2026",
18732
19015
  coinDecimals: 18
18733
19016
  },
19017
+ {
19018
+ coinDenom: "psUSDS30Jun2026",
19019
+ coinMinimalDenom: "p:asusds:30Jun2026",
19020
+ coinDecimals: 18
19021
+ },
18734
19022
  {
18735
19023
  coinDenom: "yATOM30Sep2024",
18736
19024
  coinMinimalDenom: "y:uatom:30Sep2024",
@@ -18746,6 +19034,16 @@ const _mainnetChains = [
18746
19034
  coinMinimalDenom: "y:uatom:31Mar2025",
18747
19035
  coinDecimals: 6
18748
19036
  },
19037
+ {
19038
+ coinDenom: "yATOM30Jun2025",
19039
+ coinMinimalDenom: "y:uatom:30Jun2025",
19040
+ coinDecimals: 6
19041
+ },
19042
+ {
19043
+ coinDenom: "yATOM30Sep2025",
19044
+ coinMinimalDenom: "y:uatom:30Sep2025",
19045
+ coinDecimals: 6
19046
+ },
18749
19047
  {
18750
19048
  coinDenom: "yATOM31Dec2025",
18751
19049
  coinMinimalDenom: "y:uatom:31Dec2025",
@@ -18771,6 +19069,16 @@ const _mainnetChains = [
18771
19069
  coinMinimalDenom: "y:uosmo:31Mar2025",
18772
19070
  coinDecimals: 6
18773
19071
  },
19072
+ {
19073
+ coinDenom: "yOSMO30Jun2025",
19074
+ coinMinimalDenom: "y:uosmo:30Jun2025",
19075
+ coinDecimals: 6
19076
+ },
19077
+ {
19078
+ coinDenom: "yOSMO30Sep2025",
19079
+ coinMinimalDenom: "y:uosmo:30Sep2025",
19080
+ coinDecimals: 6
19081
+ },
18774
19082
  {
18775
19083
  coinDenom: "yOSMO31Dec2025",
18776
19084
  coinMinimalDenom: "y:uosmo:31Dec2025",
@@ -18796,6 +19104,16 @@ const _mainnetChains = [
18796
19104
  coinMinimalDenom: "y:inj:31Mar2025",
18797
19105
  coinDecimals: 18
18798
19106
  },
19107
+ {
19108
+ coinDenom: "yINJ30Jun2025",
19109
+ coinMinimalDenom: "y:inj:30Jun2025",
19110
+ coinDecimals: 18
19111
+ },
19112
+ {
19113
+ coinDenom: "yINJ30Sep2025",
19114
+ coinMinimalDenom: "y:inj:30Sep2025",
19115
+ coinDecimals: 18
19116
+ },
18799
19117
  {
18800
19118
  coinDenom: "yINJ31Dec2025",
18801
19119
  coinMinimalDenom: "y:inj:31Dec2025",
@@ -18821,6 +19139,16 @@ const _mainnetChains = [
18821
19139
  coinMinimalDenom: "y:uluna:31Mar2025",
18822
19140
  coinDecimals: 6
18823
19141
  },
19142
+ {
19143
+ coinDenom: "yLUNA30Jun2025",
19144
+ coinMinimalDenom: "y:uluna:30Jun2025",
19145
+ coinDecimals: 6
19146
+ },
19147
+ {
19148
+ coinDenom: "yLUNA30Sep2025",
19149
+ coinMinimalDenom: "y:uluna:30Sep2025",
19150
+ coinDecimals: 6
19151
+ },
18824
19152
  {
18825
19153
  coinDenom: "yLUNA31Dec2025",
18826
19154
  coinMinimalDenom: "y:uluna:31Dec2025",
@@ -18841,6 +19169,11 @@ const _mainnetChains = [
18841
19169
  coinMinimalDenom: "y:uauuu:31Dec2024",
18842
19170
  coinDecimals: 6
18843
19171
  },
19172
+ {
19173
+ coinDenom: "yAUUU30Jun2025",
19174
+ coinMinimalDenom: "y:uauuu:30Jun2025",
19175
+ coinDecimals: 6
19176
+ },
18844
19177
  {
18845
19178
  coinDenom: "yAUUU31Dec2025",
18846
19179
  coinMinimalDenom: "y:uauuu:31Dec2025",
@@ -18866,6 +19199,11 @@ const _mainnetChains = [
18866
19199
  coinMinimalDenom: "y:stutia:31Mar2025",
18867
19200
  coinDecimals: 6
18868
19201
  },
19202
+ {
19203
+ coinDenom: "ystTIA30Jun2025",
19204
+ coinMinimalDenom: "y:stutia:30Jun2025",
19205
+ coinDecimals: 6
19206
+ },
18869
19207
  {
18870
19208
  coinDenom: "ystTIA31Dec2025",
18871
19209
  coinMinimalDenom: "y:stutia:31Dec2025",
@@ -18891,6 +19229,11 @@ const _mainnetChains = [
18891
19229
  coinMinimalDenom: "y:stadydx:31Mar2025",
18892
19230
  coinDecimals: 6
18893
19231
  },
19232
+ {
19233
+ coinDenom: "ystDYDX30Jun2025",
19234
+ coinMinimalDenom: "y:stadydx:30Jun2025",
19235
+ coinDecimals: 6
19236
+ },
18894
19237
  {
18895
19238
  coinDenom: "ystDYDX31Dec2025",
18896
19239
  coinMinimalDenom: "y:stadydx:31Dec2025",
@@ -18936,6 +19279,16 @@ const _mainnetChains = [
18936
19279
  coinMinimalDenom: "y:utia:31Mar2025",
18937
19280
  coinDecimals: 6
18938
19281
  },
19282
+ {
19283
+ coinDenom: "yTIA30Jun2025",
19284
+ coinMinimalDenom: "y:utia:30Jun2025",
19285
+ coinDecimals: 6
19286
+ },
19287
+ {
19288
+ coinDenom: "yTIA30Sep2025",
19289
+ coinMinimalDenom: "y:utia:30Sep2025",
19290
+ coinDecimals: 6
19291
+ },
18939
19292
  {
18940
19293
  coinDenom: "yTIA31Dec2025",
18941
19294
  coinMinimalDenom: "y:utia:31Dec2025",
@@ -18966,6 +19319,16 @@ const _mainnetChains = [
18966
19319
  coinMinimalDenom: "y:ausdy:31Dec2025",
18967
19320
  coinDecimals: 18
18968
19321
  },
19322
+ {
19323
+ coinDenom: "yUSDY31Mar2026",
19324
+ coinMinimalDenom: "y:ausdy:31Mar2026",
19325
+ coinDecimals: 18
19326
+ },
19327
+ {
19328
+ coinDenom: "yUSDY30Jun2026",
19329
+ coinMinimalDenom: "y:ausdy:30Jun2026",
19330
+ coinDecimals: 18
19331
+ },
18969
19332
  {
18970
19333
  coinDenom: "yPRYZM31Mar2025",
18971
19334
  coinMinimalDenom: "y:upryzm:31Mar2025",
@@ -18986,6 +19349,16 @@ const _mainnetChains = [
18986
19349
  coinMinimalDenom: "y:upryzm:31Dec2025",
18987
19350
  coinDecimals: 6
18988
19351
  },
19352
+ {
19353
+ coinDenom: "yPRYZM31Mar2026",
19354
+ coinMinimalDenom: "y:upryzm:31Mar2026",
19355
+ coinDecimals: 6
19356
+ },
19357
+ {
19358
+ coinDenom: "yPRYZM30Jun2026",
19359
+ coinMinimalDenom: "y:upryzm:30Jun2026",
19360
+ coinDecimals: 6
19361
+ },
18989
19362
  {
18990
19363
  coinDenom: "ysUSDS30Jun2025",
18991
19364
  coinMinimalDenom: "y:asusds:30Jun2025",
@@ -19006,6 +19379,11 @@ const _mainnetChains = [
19006
19379
  coinMinimalDenom: "y:asusds:31Mar2026",
19007
19380
  coinDecimals: 18
19008
19381
  },
19382
+ {
19383
+ coinDenom: "ysUSDS30Jun2026",
19384
+ coinMinimalDenom: "y:asusds:30Jun2026",
19385
+ coinDecimals: 18
19386
+ },
19009
19387
  {
19010
19388
  coinDenom: "lp:6:usdc.axl-usdc",
19011
19389
  coinMinimalDenom: "lp:6:uusdc.axl-uusdc",
@@ -22563,6 +22941,11 @@ const _mainnetChains = [
22563
22941
  coinDenom: "cwlunc",
22564
22942
  coinMinimalDenom: "cw20:terra10fusc7487y4ju2v5uavkauf3jdpxx9h8sc7wsqdqg4rne8t4qyrq8385q6",
22565
22943
  coinDecimals: 6
22944
+ },
22945
+ {
22946
+ coinDenom: "usdc",
22947
+ coinMinimalDenom: "ibc/0BB9D8513E8E8E9AE6A9D211D9136E6DA42288DDE6CFAA453A150A4566054DC5",
22948
+ coinDecimals: 6
22566
22949
  }
22567
22950
  ],
22568
22951
  rest: "https://terra-classic-lcd.publicnode.com",
@@ -23173,7 +23556,7 @@ const _mainnetChains = [
23173
23556
  coinDecimals: 18
23174
23557
  },
23175
23558
  {
23176
- coinDenom: "usdc",
23559
+ coinDenom: "usdc.noble",
23177
23560
  coinMinimalDenom: "ibc/8E27BA2D5493AF5636760E354E46004562C46AB7EC0CC4C1CA14E9E20E2545B5",
23178
23561
  coinDecimals: 6
23179
23562
  },
@@ -23191,6 +23574,26 @@ const _mainnetChains = [
23191
23574
  coinDenom: "usdt",
23192
23575
  coinMinimalDenom: "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/usdt",
23193
23576
  coinDecimals: 6
23577
+ },
23578
+ {
23579
+ coinDenom: "usdc",
23580
+ coinMinimalDenom: "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/usdc",
23581
+ coinDecimals: 6
23582
+ },
23583
+ {
23584
+ coinDenom: "sol",
23585
+ coinMinimalDenom: "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/sol",
23586
+ coinDecimals: 9
23587
+ },
23588
+ {
23589
+ coinDenom: "meow",
23590
+ coinMinimalDenom: "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/meow",
23591
+ coinDecimals: 8
23592
+ },
23593
+ {
23594
+ coinDenom: "oracler",
23595
+ coinMinimalDenom: "factory/titan1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucsgehpjy/oracler",
23596
+ coinDecimals: 6
23194
23597
  }
23195
23598
  ],
23196
23599
  rest: "https://titan-lcd.titanlab.io:443",
@@ -27322,9 +27725,9 @@ const _testnetChains = [
27322
27725
  coinMinimalDenom: "umfx",
27323
27726
  coinDecimals: 6,
27324
27727
  gasPriceStep: {
27325
- low: 0.5,
27326
- average: 1,
27327
- high: 5
27728
+ low: 1.05,
27729
+ average: 1.1,
27730
+ high: 3
27328
27731
  }
27329
27732
  }
27330
27733
  ],
@@ -28631,6 +29034,47 @@ const _testnetChains = [
28631
29034
  coinType: 118
28632
29035
  }
28633
29036
  },
29037
+ {
29038
+ chainId: "qubetics_9029-1",
29039
+ currencies: [
29040
+ {
29041
+ coinDenom: "TICS",
29042
+ coinMinimalDenom: "tics",
29043
+ coinDecimals: 18
29044
+ }
29045
+ ],
29046
+ rest: "https://swagger-testnet.qubetics.work/",
29047
+ rpc: "https://tendermint-testnet.qubetics.work/",
29048
+ bech32Config: {
29049
+ bech32PrefixAccAddr: "qubetics",
29050
+ bech32PrefixAccPub: "qubeticspub",
29051
+ bech32PrefixValAddr: "qubeticsvaloper",
29052
+ bech32PrefixValPub: "qubeticsvaloperpub",
29053
+ bech32PrefixConsAddr: "qubeticsvalcons",
29054
+ bech32PrefixConsPub: "qubeticsvalconspub"
29055
+ },
29056
+ chainName: "qubeticstestnet",
29057
+ feeCurrencies: [
29058
+ {
29059
+ coinDenom: "TICS",
29060
+ coinMinimalDenom: "tics",
29061
+ coinDecimals: 18,
29062
+ gasPriceStep: {
29063
+ low: 2e10,
29064
+ average: 25e9,
29065
+ high: 4e10
29066
+ }
29067
+ }
29068
+ ],
29069
+ stakeCurrency: {
29070
+ coinDenom: "TICS",
29071
+ coinMinimalDenom: "tics",
29072
+ coinDecimals: 18
29073
+ },
29074
+ bip44: {
29075
+ coinType: 60
29076
+ }
29077
+ },
28634
29078
  {
28635
29079
  chainId: "rhye-3",
28636
29080
  currencies: [
@@ -29680,7 +30124,7 @@ const _testnetChains = [
29680
30124
  coinDecimals: 18
29681
30125
  },
29682
30126
  {
29683
- coinDenom: "usdc",
30127
+ coinDenom: "usdc.noble",
29684
30128
  coinMinimalDenom: "ibc/7C0807A56073C4A27B0DE1C21BA3EB75DF75FD763F4AD37BC159917FC01145F0",
29685
30129
  coinDecimals: 6
29686
30130
  },
@@ -29693,6 +30137,21 @@ const _testnetChains = [
29693
30137
  coinDenom: "eth",
29694
30138
  coinMinimalDenom: "factory/titan16gyvmp43st00s220zypex4lgvwqc3ve8l4657rhxj8myeadswmkq75slkc/eth",
29695
30139
  coinDecimals: 18
30140
+ },
30141
+ {
30142
+ coinDenom: "usdc",
30143
+ coinMinimalDenom: "factory/titan16gyvmp43st00s220zypex4lgvwqc3ve8l4657rhxj8myeadswmkq75slkc/usdc",
30144
+ coinDecimals: 6
30145
+ },
30146
+ {
30147
+ coinDenom: "sol",
30148
+ coinMinimalDenom: "factory/titan16gyvmp43st00s220zypex4lgvwqc3ve8l4657rhxj8myeadswmkq75slkc/sol",
30149
+ coinDecimals: 9
30150
+ },
30151
+ {
30152
+ coinDenom: "meow",
30153
+ coinMinimalDenom: "factory/titan16gyvmp43st00s220zypex4lgvwqc3ve8l4657rhxj8myeadswmkq75slkc/meow",
30154
+ coinDecimals: 8
29696
30155
  }
29697
30156
  ],
29698
30157
  rest: "https://titan-testnet-lcd.titanlab.io:443",
@@ -29973,6 +30432,42 @@ const _testnetChains = [
29973
30432
  coinType: 118
29974
30433
  }
29975
30434
  },
30435
+ {
30436
+ chainId: "xardev",
30437
+ currencies: [
30438
+ {
30439
+ coinDenom: "stake",
30440
+ coinMinimalDenom: "stake",
30441
+ coinDecimals: 0
30442
+ }
30443
+ ],
30444
+ rest: "https://cosmos01-dev.arcana.network:26650",
30445
+ rpc: "https://cosmos01-dev.arcana.network",
30446
+ bech32Config: {
30447
+ bech32PrefixAccAddr: "arcana",
30448
+ bech32PrefixAccPub: "arcanapub",
30449
+ bech32PrefixValAddr: "arcanavaloper",
30450
+ bech32PrefixValPub: "arcanavaloperpub",
30451
+ bech32PrefixConsAddr: "arcanavalcons",
30452
+ bech32PrefixConsPub: "arcanavalconspub"
30453
+ },
30454
+ chainName: "xarchaintestnet",
30455
+ feeCurrencies: [
30456
+ {
30457
+ coinDenom: "stake",
30458
+ coinMinimalDenom: "stake",
30459
+ coinDecimals: 0
30460
+ }
30461
+ ],
30462
+ stakeCurrency: {
30463
+ coinDenom: "stake",
30464
+ coinMinimalDenom: "stake",
30465
+ coinDecimals: 0
30466
+ },
30467
+ bip44: {
30468
+ coinType: 118
30469
+ }
30470
+ },
29976
30471
  {
29977
30472
  chainId: "xion-testnet-2",
29978
30473
  currencies: [
@@ -31011,12 +31506,24 @@ const _explorers = [
31011
31506
  url: "https://explorer.bonynode.online/atomone",
31012
31507
  tx_page: "https://explorer.bonynode.online/atomone/transactions/${txHash}",
31013
31508
  account_page: "https://explorer.bonynode.online/atomone/account/${accountAddress}"
31509
+ },
31510
+ {
31511
+ kind: "Chainroot",
31512
+ url: "https://explorer.chainroot.io/atomone",
31513
+ tx_page: "https://explorer.chainroot.io/atomone/transactions/${txHash}",
31514
+ account_page: "https://explorer.chainroot.io/atomone/accounts/${accountAddress}"
31014
31515
  }
31015
31516
  ]
31016
31517
  },
31017
31518
  {
31018
31519
  chainId: "aura_6322-2",
31019
31520
  explorers: [
31521
+ {
31522
+ kind: "Chainroot",
31523
+ url: "https://explorer.chainroot.io/aura",
31524
+ tx_page: "https://explorer.chainroot.io/aura/transactions/${txHash}",
31525
+ account_page: "https://explorer.chainroot.io/aura/accounts/${accountAddress}"
31526
+ },
31020
31527
  {
31021
31528
  kind: "aurascan",
31022
31529
  url: "https://aurascan.io",
@@ -31640,7 +32147,7 @@ const _explorers = [
31640
32147
  account_page: "https://ezstaking.app/celestia/account/${accountAddress}"
31641
32148
  },
31642
32149
  {
31643
- kind: "🚀 itrocket 🚀",
32150
+ kind: "itrocket",
31644
32151
  url: "https://mainnet.itrocket.net/celestia",
31645
32152
  tx_page: "https://mainnet.itrocket.net/celestia/transaction/${txHash}",
31646
32153
  account_page: "https://mainnet.itrocket.net/celestia/account/${accountAddress}"
@@ -33383,6 +33890,17 @@ const _explorers = [
33383
33890
  }
33384
33891
  ]
33385
33892
  },
33893
+ {
33894
+ chainId: "hippo-protocol-1",
33895
+ explorers: [
33896
+ {
33897
+ kind: "Hippo River",
33898
+ url: "https://river.hippoprotocol.ai/",
33899
+ tx_page: "https://river.hippoprotocol.ai/hippo-protocol/tx/${txHash}",
33900
+ account_page: "https://river.hippoprotocol.ai/hippo-protocol/account/${accountAddress}"
33901
+ }
33902
+ ]
33903
+ },
33386
33904
  {
33387
33905
  chainId: "humans_1089-1",
33388
33906
  explorers: [
@@ -36940,9 +37458,9 @@ const _explorers = [
36940
37458
  tx_page: "https://thorchain.net/#/txs/${txHash}"
36941
37459
  },
36942
37460
  {
36943
- kind: "viewblock",
36944
- url: "https://viewblock.io/thorchain",
36945
- tx_page: "https://viewblock.io/thorchain/tx/${txHash}"
37461
+ kind: "Runescan",
37462
+ url: "https://runescan.io/",
37463
+ tx_page: "https://runescan.io/txs/${txHash}"
36946
37464
  }
36947
37465
  ]
36948
37466
  },
@@ -37348,7 +37866,7 @@ const _explorers = [
37348
37866
  account_page: "https://cosmotracker.com/airchains/account/${accountAddress}"
37349
37867
  },
37350
37868
  {
37351
- kind: "IT Rocket",
37869
+ kind: "ITRocket",
37352
37870
  url: "https://testnet.itrocket.net/airchains/",
37353
37871
  tx_page: "https://testnet.itrocket.net/airchains//tx/${txHash}",
37354
37872
  account_page: "https://testnet.itrocket.net/airchains/account/${accountAddress}"
@@ -37592,7 +38110,7 @@ const _explorers = [
37592
38110
  tx_page: "https://mintscan.io/celestia-testnet/txs/${txHash}"
37593
38111
  },
37594
38112
  {
37595
- kind: "🚀ITRocket🚀",
38113
+ kind: "itrocket",
37596
38114
  url: "https://testnet.itrocket.net/celestia",
37597
38115
  tx_page: "https://testnet.itrocket.net/celestia/tx/${txHash}",
37598
38116
  account_page: "https://testnet.itrocket.net/celestia/account/${accountAddress}"
@@ -37836,7 +38354,7 @@ const _explorers = [
37836
38354
  account_page: "https://testnet.ping.pub/elys/account/${accountAddress}"
37837
38355
  },
37838
38356
  {
37839
- kind: "itrocket",
38357
+ kind: "ITRocket",
37840
38358
  url: "https://testnet.itrocket.net/elys",
37841
38359
  tx_page: "https://testnet.itrocket.net/elys/staking/tx/${txHash}",
37842
38360
  account_page: "https://testnet.itrocket.net/elys/account/${accountAddress}"
@@ -37876,11 +38394,6 @@ const _explorers = [
37876
38394
  url: "https://explorer.nodestake.top/empower-testnet",
37877
38395
  tx_page: "https://explorer.nodestake.top/empower-testnet/tx/${txHash}"
37878
38396
  },
37879
- {
37880
- kind: "ping.pub",
37881
- url: "https://testnet.itrocket.net/empower/staking",
37882
- tx_page: "https://testnet.itrocket.net/empower/staking/tx/${txHash}"
37883
- },
37884
38397
  {
37885
38398
  kind: "ping.pub",
37886
38399
  url: "https://explorer.stavr.tech/empower",
@@ -38171,7 +38684,7 @@ const _explorers = [
38171
38684
  account_page: "https://explorer.nodestake.org/lava-testnet/account/${accountAddress}"
38172
38685
  },
38173
38686
  {
38174
- kind: "🚀ITRocket🚀",
38687
+ kind: "ITRocket",
38175
38688
  url: "https://testnet.itrocket.net/lava",
38176
38689
  tx_page: "https://testnet.itrocket.net/lava/tx/${txHash}",
38177
38690
  account_page: "https://testnet.itrocket.net/lava/account/${accountAddress}"
@@ -38577,6 +39090,16 @@ const _explorers = [
38577
39090
  {
38578
39091
  chainId: "quasar-test-1"
38579
39092
  },
39093
+ {
39094
+ chainId: "qubetics_9029-1",
39095
+ explorers: [
39096
+ {
39097
+ kind: "Qubetics Explorer",
39098
+ url: "https://testnet.qubetics.work/dashboard",
39099
+ tx_page: "https://testnet.qubetics.work/tx/${txHash}"
39100
+ }
39101
+ ]
39102
+ },
38580
39103
  {
38581
39104
  chainId: "rhye-3",
38582
39105
  explorers: [
@@ -38966,6 +39489,15 @@ const _explorers = [
38966
39489
  }
38967
39490
  ]
38968
39491
  },
39492
+ {
39493
+ chainId: "xardev",
39494
+ explorers: [
39495
+ {
39496
+ kind: "arcana ceries intent explorer",
39497
+ url: "https://explorer.dev.arcana.network"
39498
+ }
39499
+ ]
39500
+ },
38969
39501
  {
38970
39502
  chainId: "xion-testnet-2",
38971
39503
  explorers: [
@@ -40178,51 +40710,36 @@ const transactionHistoryAtom = atomWithStorage(
40178
40710
  );
40179
40711
  const setTransactionHistoryAtom = atom$1(
40180
40712
  null,
40181
- (get, set, index, historyItem) => {
40713
+ (get, set, historyItem) => {
40182
40714
  const history = get(transactionHistoryAtom);
40715
+ const index = history.findIndex((item) => item.timestamp === historyItem.timestamp);
40183
40716
  const newHistory = [...history];
40184
- const oldHistoryItem = newHistory[index] ?? {};
40185
- newHistory[index] = { ...oldHistoryItem, ...historyItem };
40717
+ if (index !== -1) {
40718
+ const oldItem = newHistory[index];
40719
+ newHistory[index] = { ...oldItem, ...historyItem };
40720
+ } else {
40721
+ newHistory.push(historyItem);
40722
+ }
40186
40723
  set(transactionHistoryAtom, newHistory);
40187
40724
  }
40188
40725
  );
40189
- const removeTransactionHistoryItemAtom = atom$1(null, (get, set, index) => {
40726
+ const lastTransactionInTimeAtom = atom$1((get) => {
40190
40727
  const history = get(transactionHistoryAtom);
40191
- if (!history) return;
40192
- if (index < 0) return;
40193
- if (index >= history.length) return;
40194
- const newHistory = history.filter((_2, i) => i !== index);
40195
- set(transactionHistoryAtom, newHistory);
40196
- });
40197
- atomWithQuery((get) => {
40198
- const transactionHistory = get(transactionHistoryAtom);
40199
- const pendingTransactionHistoryItemsFound = transactionHistory.find(
40200
- (transactionHistoryItem) => transactionHistoryItem.status !== "completed" && transactionHistoryItem.status !== "failed"
40201
- );
40728
+ if (history.length === 0) return;
40729
+ const sorted = [...history].sort((a, b) => b.timestamp - a.timestamp);
40730
+ const lastTx = sorted[0];
40731
+ const originalIndex = history.findIndex((tx) => tx.timestamp === lastTx.timestamp);
40202
40732
  return {
40203
- queryKey: ["skipPendingTxHistoryStatus", transactionHistory],
40204
- queryFn: async () => {
40205
- const nestedTransactionHistoryPromises = transactionHistory.map(
40206
- async (transactionHistoryItem) => {
40207
- var _a;
40208
- const transactionDetailsPromises = await Promise.all(
40209
- (_a = transactionHistoryItem.transactionDetails) == null ? void 0 : _a.map(async (transactionDetail) => {
40210
- if (transactionHistoryItem.status !== "completed" && transactionHistoryItem.status !== "failed") {
40211
- return await transactionStatus(transactionDetail);
40212
- }
40213
- return new Promise((resolve) => resolve(null));
40214
- })
40215
- );
40216
- return transactionDetailsPromises;
40217
- }
40218
- );
40219
- return nestedTransactionHistoryPromises;
40220
- },
40221
- enabled: !!pendingTransactionHistoryItemsFound,
40222
- refetchInterval: 1e3 * 2,
40223
- keepPreviousData: true
40733
+ transactionHistoryItem: lastTx,
40734
+ index: originalIndex
40224
40735
  };
40225
40736
  });
40737
+ const removeTransactionHistoryItemAtom = atom$1(null, (get, set, timestamp) => {
40738
+ const history = get(transactionHistoryAtom);
40739
+ if (!history || isNaN(timestamp)) return;
40740
+ const newHistory = history.filter((item) => item.timestamp !== timestamp);
40741
+ set(transactionHistoryAtom, newHistory);
40742
+ });
40226
40743
  function isUserRejectedRequestError(input) {
40227
40744
  if (input instanceof Error) {
40228
40745
  if (
@@ -44148,7 +44665,7 @@ function walletConnect(parameters) {
44148
44665
  const optionalChains = config2.chains.map((x2) => x2.id);
44149
44666
  if (!optionalChains.length)
44150
44667
  return;
44151
- const { EthereumProvider } = await import("./index.es-CTDaESwK.js");
44668
+ const { EthereumProvider } = await import("./index.es-DsOLl-G-.js");
44152
44669
  return await EthereumProvider.init({
44153
44670
  ...parameters,
44154
44671
  disableProviderPing: true,
@@ -44514,7 +45031,8 @@ const swapExecutionStateAtom = atomWithStorageNoCrossTabSync(
44514
45031
  transactionHistoryIndex: 0,
44515
45032
  overallStatus: "unconfirmed",
44516
45033
  isValidatingGasBalance: void 0,
44517
- transactionsSigned: 0
45034
+ transactionsSigned: 0,
45035
+ timestamp: -1
44518
45036
  }
44519
45037
  );
44520
45038
  const setOverallStatusAtom = atom$1(null, (_get, set, status) => {
@@ -44559,7 +45077,8 @@ const setSwapExecutionStateAtom = atom$1(null, (get, set) => {
44559
45077
  transactionHistoryIndex,
44560
45078
  overallStatus: "unconfirmed",
44561
45079
  isValidatingGasBalance: void 0,
44562
- transactionsSigned: 0
45080
+ transactionsSigned: 0,
45081
+ timestamp: Date.now()
44563
45082
  });
44564
45083
  set(submitSwapExecutionCallbacksAtom, {
44565
45084
  onTransactionUpdated: (txInfo) => {
@@ -44567,8 +45086,7 @@ const setSwapExecutionStateAtom = atom$1(null, (get, set) => {
44567
45086
  track("execute route: transaction updated", { txInfo });
44568
45087
  if (((_a2 = txInfo.status) == null ? void 0 : _a2.status) !== "STATE_COMPLETED") {
44569
45088
  set(setTransactionDetailsAtom, {
44570
- transactionDetails: txInfo,
44571
- transactionHistoryIndex
45089
+ transactionDetails: txInfo
44572
45090
  });
44573
45091
  }
44574
45092
  },
@@ -44589,8 +45107,7 @@ const setSwapExecutionStateAtom = atom$1(null, (get, set) => {
44589
45107
  txHash: txInfo.txHash
44590
45108
  });
44591
45109
  set(setTransactionDetailsAtom, {
44592
- transactionDetails: { ...txInfo, explorerLink, status: void 0 },
44593
- transactionHistoryIndex
45110
+ transactionDetails: { ...txInfo, explorerLink, status: void 0 }
44594
45111
  });
44595
45112
  (_a2 = callbacks == null ? void 0 : callbacks.onTransactionBroadcasted) == null ? void 0 : _a2.call(callbacks, {
44596
45113
  chainId: txInfo.chainId,
@@ -44644,9 +45161,9 @@ const setSwapExecutionStateAtom = atom$1(null, (get, set) => {
44644
45161
  transactionsSigned
44645
45162
  };
44646
45163
  });
44647
- const transactionHistoryItem = get(transactionHistoryAtom)[transactionHistoryIndex];
44648
- set(setTransactionHistoryAtom, transactionHistoryIndex, {
44649
- ...transactionHistoryItem,
45164
+ const { timestamp } = get(swapExecutionStateAtom);
45165
+ set(setTransactionHistoryAtom, {
45166
+ timestamp,
44650
45167
  signatures: transactionsSigned
44651
45168
  });
44652
45169
  set(setOverallStatusAtom, "pending");
@@ -44708,7 +45225,7 @@ const setValidatingGasBalanceAtom = atom$1(
44708
45225
  );
44709
45226
  const setTransactionDetailsAtom = atom$1(
44710
45227
  null,
44711
- (get, set, { transactionDetails, transactionHistoryIndex, status }) => {
45228
+ (get, set, { transactionDetails, status }) => {
44712
45229
  const swapExecutionState = get(swapExecutionStateAtom);
44713
45230
  const { transactionDetailsArray, route: route2 } = swapExecutionState;
44714
45231
  const newTransactionDetailsArray = [...transactionDetailsArray];
@@ -44727,15 +45244,13 @@ const setTransactionDetailsAtom = atom$1(
44727
45244
  ...swapExecutionState,
44728
45245
  transactionDetailsArray: newTransactionDetailsArray
44729
45246
  });
44730
- const transactionHistoryItem = get(transactionHistoryAtom)[transactionHistoryIndex];
44731
- set(setTransactionHistoryAtom, transactionHistoryIndex, {
44732
- ...transactionHistoryItem,
45247
+ set(setTransactionHistoryAtom, {
44733
45248
  route: route2,
44734
45249
  transactionDetails: newTransactionDetailsArray,
44735
45250
  transferEvents: [],
44736
- timestamp: Date.now(),
44737
45251
  isSettled: false,
44738
45252
  isSuccess: false,
45253
+ timestamp: swapExecutionState == null ? void 0 : swapExecutionState.timestamp,
44739
45254
  ...status && { status }
44740
45255
  });
44741
45256
  }
@@ -45337,6 +45852,23 @@ const StyledContent = dt.div`
45337
45852
  animation: ${({ drawer, open }) => open ? drawer ? fadeInAndSlideUp : fadeInAndZoomOut : drawer ? fadeOutAndSlideDown : fadeOutAndZoomIn}
45338
45853
  150ms cubic-bezier(0.5, 1, 0.89, 1) forwards;
45339
45854
  `;
45855
+ const StyledModalInnerContainer = dt(Column)`
45856
+ width: 100%;
45857
+ align-items: center;
45858
+ justify-content: center;
45859
+ `;
45860
+ const StyledModalContainer = dt(Column)`
45861
+ position: relative;
45862
+ padding: 10px;
45863
+ gap: 10px;
45864
+ width: calc(100% - 20px);
45865
+ border-radius: ${({ theme }) => {
45866
+ var _a;
45867
+ return convertToPxValue((_a = theme.borderRadius) == null ? void 0 : _a.modalContainer);
45868
+ }};
45869
+ background: ${({ theme }) => theme.primary.background.normal};
45870
+ height: 100%;
45871
+ `;
45340
45872
  const ModalRowItem = ({
45341
45873
  leftContent,
45342
45874
  rightContent,
@@ -45366,7 +45898,10 @@ const StyledModalRowItemContainer = dt(Row)`
45366
45898
  position: relative;
45367
45899
  width: 100%;
45368
45900
  height: 60px;
45369
- border-radius: 12px;
45901
+ border-radius: ${({ theme }) => {
45902
+ var _a;
45903
+ return convertToPxValue((_a = theme.borderRadius) == null ? void 0 : _a.rowItem);
45904
+ }};
45370
45905
  padding: 12px 15px;
45371
45906
  margin-top: 5px;
45372
45907
 
@@ -45732,6 +46267,32 @@ const useGroupedAssetByRecommendedSymbol = ({
45732
46267
  }, [assets2, getBalance]);
45733
46268
  return groupedAssetsByRecommendedSymbol;
45734
46269
  };
46270
+ const shimmer = mt`
46271
+ 0% {
46272
+ background-position: -200% 0;
46273
+ }
46274
+ 100% {
46275
+ background-position: 200% 0;
46276
+ }
46277
+ `;
46278
+ const SkeletonElement = dt.div`
46279
+ ${({ width, height, theme }) => lt`
46280
+ width: ${convertToPxValue(width)};
46281
+ height: ${convertToPxValue(height)};
46282
+ border-radius: 4px;
46283
+ background: linear-gradient(
46284
+ 90deg,
46285
+ ${getHexColor(theme.primary.text.normal ?? "") + opacityToHex(10)} 25%,
46286
+ ${getHexColor(theme.primary.text.normal ?? "") + opacityToHex(20)} 50%,
46287
+ ${getHexColor(theme.primary.text.normal ?? "") + opacityToHex(10)} 75%
46288
+ );
46289
+ background-size: 200% 100%;
46290
+ animation: ${shimmer} 2s linear infinite;
46291
+ `}
46292
+ `;
46293
+ const CircleSkeletonElement = dt(SkeletonElement)`
46294
+ border-radius: 50%;
46295
+ `;
45735
46296
  const MAX_NUMBER_OF_IMAGES_TO_CHECK = 6;
45736
46297
  const GroupedAssetImage = ({
45737
46298
  groupedAsset,
@@ -45741,17 +46302,18 @@ const GroupedAssetImage = ({
45741
46302
  }) => {
45742
46303
  var _a;
45743
46304
  const [currentImageIndex, setCurrentImageIndex] = useState(0);
45744
- if (!(groupedAsset == null ? void 0 : groupedAsset.assets) || groupedAsset.assets.length === 0) {
45745
- return /* @__PURE__ */ jsx(StyledAssetImage, { height, width, src: "", alt: "No asset" });
45746
- }
45747
46305
  const allLogoUris = [
45748
- (_a = groupedAsset.assets.find((asset) => {
46306
+ (_a = groupedAsset == null ? void 0 : groupedAsset.assets.find((asset) => {
45749
46307
  var _a2;
45750
46308
  return (_a2 = asset.logoUri) == null ? void 0 : _a2.includes("chain-registry");
45751
46309
  })) == null ? void 0 : _a.logoUri,
45752
- ...groupedAsset.assets.map((asset) => asset.logoUri)
46310
+ ...(groupedAsset == null ? void 0 : groupedAsset.assets.map((asset) => asset.logoUri)) ?? []
45753
46311
  ].filter((uri) => !!uri);
45754
46312
  const dedupedLogoUris = Array.from(new Set(allLogoUris));
46313
+ const croppedImage = useCroppedImage(dedupedLogoUris[currentImageIndex]);
46314
+ if (!(groupedAsset == null ? void 0 : groupedAsset.assets) || groupedAsset.assets.length === 0) {
46315
+ return /* @__PURE__ */ jsx(StyledAssetImage, { height, width, src: "", alt: "No asset" });
46316
+ }
45755
46317
  if (dedupedLogoUris.length === 0) {
45756
46318
  return /* @__PURE__ */ jsx(StyledAssetImage, { height, width, src: "", alt: "No valid URIs" });
45757
46319
  }
@@ -45762,18 +46324,21 @@ const GroupedAssetImage = ({
45762
46324
  }
45763
46325
  setCurrentImageIndex((prev2) => prev2 + 1);
45764
46326
  };
45765
- return /* @__PURE__ */ jsx(
45766
- StyledAssetImage,
45767
- {
45768
- height,
45769
- width,
45770
- src: dedupedLogoUris[currentImageIndex],
45771
- loading: "lazy",
45772
- onError: handleError,
45773
- alt: `${groupedAsset.assets[0].recommendedSymbol || ""} logo`,
45774
- style
45775
- }
45776
- );
46327
+ if (croppedImage) {
46328
+ return /* @__PURE__ */ jsx(
46329
+ StyledAssetImage,
46330
+ {
46331
+ height,
46332
+ width,
46333
+ src: croppedImage,
46334
+ loading: "lazy",
46335
+ onError: handleError,
46336
+ alt: `${groupedAsset.assets[0].recommendedSymbol || ""} logo`,
46337
+ style
46338
+ }
46339
+ );
46340
+ }
46341
+ return /* @__PURE__ */ jsx(CircleSkeletonElement, { height: height ?? 0, width: width ?? 0 });
45777
46342
  };
45778
46343
  const StyledAssetImage = dt.img`
45779
46344
  border-radius: 50%;
@@ -45820,6 +46385,7 @@ const SwapExecutionPageRouteDetailedRow = ({
45820
46385
  image: (selectedChainAddress == null ? void 0 : selectedChainAddress.source) === "wallet" && ((_a2 = selectedChainAddress == null ? void 0 : selectedChainAddress.wallet) == null ? void 0 : _a2.walletInfo.logo) || void 0
45821
46386
  };
45822
46387
  }, [chainAddresses, chainId, context]);
46388
+ const walletImage = useCroppedImage(chainAddressWallet.image);
45823
46389
  const renderAddress = useMemo(() => {
45824
46390
  const Container2 = shouldRenderEditDestinationWallet ? ({ children }) => /* @__PURE__ */ jsx(Row, { gap: 5, children }) : o.Fragment;
45825
46391
  if (!chainAddressWallet.address) return;
@@ -45835,15 +46401,15 @@ const SwapExecutionPageRouteDetailedRow = ({
45835
46401
  };
45836
46402
  return /* @__PURE__ */ jsxs(Container2, { children: [
45837
46403
  /* @__PURE__ */ jsxs(AddressPillButton, { onClick: () => copyAddress(chainAddressWallet == null ? void 0 : chainAddressWallet.address), children: [
45838
- chainAddressWallet.image && /* @__PURE__ */ jsx(
46404
+ walletImage ? /* @__PURE__ */ jsx(
45839
46405
  "img",
45840
46406
  {
45841
- src: chainAddressWallet.image,
46407
+ src: walletImage,
45842
46408
  style: {
45843
46409
  height: "100%"
45844
46410
  }
45845
46411
  }
45846
- ),
46412
+ ) : /* @__PURE__ */ jsx(SkeletonElement, { height: 18, width: 18 }),
45847
46413
  renderContent()
45848
46414
  ] }),
45849
46415
  shouldRenderEditDestinationWallet && /* @__PURE__ */ jsx(
@@ -45857,14 +46423,14 @@ const SwapExecutionPageRouteDetailedRow = ({
45857
46423
  )
45858
46424
  ] });
45859
46425
  }, [
45860
- copyAddress,
45861
- isMobileScreenSize,
45862
- isShowingCopyAddressFeedback,
45863
- onClickEditDestinationWallet,
45864
46426
  shouldRenderEditDestinationWallet,
45865
46427
  chainAddressWallet.address,
45866
- chainAddressWallet.image,
45867
- theme.primary.text.lowContrast
46428
+ walletImage,
46429
+ isMobileScreenSize,
46430
+ onClickEditDestinationWallet,
46431
+ theme.primary.text.lowContrast,
46432
+ isShowingCopyAddressFeedback,
46433
+ copyAddress
45868
46434
  ]);
45869
46435
  const renderExplorerLink = useMemo(() => {
45870
46436
  if (!explorerLink) return;
@@ -46093,20 +46659,6 @@ const ModalHeader = ({ title, onClickBackButton, rightContent }) => {
46093
46659
  rightContent
46094
46660
  ] });
46095
46661
  };
46096
- const StyledModalContainer = dt(Column)`
46097
- position: relative;
46098
- padding: 10px;
46099
- gap: 10px;
46100
- width: calc(100% - 20px);
46101
- border-radius: 20px;
46102
- background: ${({ theme }) => theme.primary.background.normal};
46103
- height: 100%;
46104
- `;
46105
- const StyledModalInnerContainer = dt(Column)`
46106
- width: 100%;
46107
- align-items: center;
46108
- justify-content: center;
46109
- `;
46110
46662
  const StyledHeader = dt(Row)`
46111
46663
  height: 40px;
46112
46664
  margin-top: 10px;
@@ -46115,6 +46667,10 @@ const StyledHeader = dt(Row)`
46115
46667
  const StyledLeftArrowIcon$1 = dt(LeftArrowIcon)`
46116
46668
  opacity: 0.2;
46117
46669
  transform: rotate(180deg);
46670
+ transition: opacity 0.2s;
46671
+ button:hover & {
46672
+ opacity: 1;
46673
+ }
46118
46674
  `;
46119
46675
  const StyledCenteredTitle = dt(Text)`
46120
46676
  position: absolute;
@@ -46130,6 +46686,51 @@ const isMinimalWallet = (wallet) => {
46130
46686
  };
46131
46687
  const ITEM_HEIGHT$3 = 60;
46132
46688
  const ITEM_GAP$2 = 5;
46689
+ const WalletRowItem = ({
46690
+ wallet,
46691
+ onClick,
46692
+ rightContent
46693
+ }) => {
46694
+ var _a;
46695
+ const name2 = isMinimalWallet(wallet) ? wallet.walletPrettyName ?? wallet.walletName : wallet.walletName;
46696
+ const imageUrl = isMinimalWallet(wallet) ? (_a = wallet.walletInfo) == null ? void 0 : _a.logo : void 0;
46697
+ const isAvailable = isMinimalWallet(wallet) ? wallet.isAvailable : void 0;
46698
+ const croppedImage = useCroppedImage(imageUrl);
46699
+ const renderWalletImage = useMemo(() => {
46700
+ if (!isMinimalWallet(wallet)) return;
46701
+ if (croppedImage) {
46702
+ return /* @__PURE__ */ jsx(
46703
+ "img",
46704
+ {
46705
+ height: 35,
46706
+ width: 35,
46707
+ style: { objectFit: "cover" },
46708
+ src: croppedImage,
46709
+ alt: `${name2}-logo`
46710
+ }
46711
+ );
46712
+ } else {
46713
+ return /* @__PURE__ */ jsx(SkeletonElement, { width: 35, height: 35 });
46714
+ }
46715
+ }, [croppedImage, name2, wallet]);
46716
+ const leftContent = /* @__PURE__ */ jsxs(Row, { style: { width: "100%" }, align: "center", justify: "space-between", children: [
46717
+ /* @__PURE__ */ jsxs(Row, { align: "center", gap: 10, children: [
46718
+ renderWalletImage,
46719
+ /* @__PURE__ */ jsx(Text, { children: name2 })
46720
+ ] }),
46721
+ isAvailable !== void 0 && /* @__PURE__ */ jsx(SmallText, { children: isAvailable ? "Installed" : "Not Installed" })
46722
+ ] });
46723
+ return /* @__PURE__ */ jsx(
46724
+ ModalRowItem,
46725
+ {
46726
+ onClick,
46727
+ style: { marginTop: ITEM_GAP$2 },
46728
+ leftContent,
46729
+ rightContent
46730
+ },
46731
+ name2
46732
+ );
46733
+ };
46133
46734
  const RenderWalletList = ({
46134
46735
  title,
46135
46736
  walletList,
@@ -46173,21 +46774,7 @@ const RenderWalletList = ({
46173
46774
  const renderItem = useCallback(
46174
46775
  (wallet) => {
46175
46776
  var _a2;
46176
- const name2 = isMinimalWallet(wallet) ? wallet.walletPrettyName ?? wallet.walletName : wallet.walletName;
46177
- const imageUrl = isMinimalWallet(wallet) ? (_a2 = wallet == null ? void 0 : wallet.walletInfo) == null ? void 0 : _a2.logo : void 0;
46178
- const rightContent = isManualWalletEntry(wallet) ? wallet == null ? void 0 : wallet.rightContent : void 0;
46179
- const isAvailable = isMinimalWallet(wallet) ? wallet == null ? void 0 : wallet.isAvailable : void 0;
46180
- const renderedRightContent = (rightContent == null ? void 0 : rightContent()) ?? /* @__PURE__ */ jsx(Fragment, {});
46181
- const imageElement = imageUrl ? /* @__PURE__ */ jsx(
46182
- "img",
46183
- {
46184
- height: 35,
46185
- width: 35,
46186
- style: { objectFit: "cover" },
46187
- src: imageUrl,
46188
- alt: `${name2}-logo`
46189
- }
46190
- ) : null;
46777
+ const rightContent = isManualWalletEntry(wallet) ? (_a2 = wallet == null ? void 0 : wallet.rightContent) == null ? void 0 : _a2.call(wallet) : void 0;
46191
46778
  const onClickConnectWallet = () => {
46192
46779
  if (!isMinimalWallet(wallet)) {
46193
46780
  wallet.onSelect();
@@ -46200,23 +46787,7 @@ const RenderWalletList = ({
46200
46787
  connectMutation.mutate(wallet);
46201
46788
  }
46202
46789
  };
46203
- const leftContent = /* @__PURE__ */ jsxs(Row, { style: { width: "100%" }, align: "center", justify: "space-between", children: [
46204
- /* @__PURE__ */ jsxs(Row, { align: "center", gap: 10, children: [
46205
- imageElement,
46206
- /* @__PURE__ */ jsx(Text, { children: name2 })
46207
- ] }),
46208
- isAvailable !== void 0 && /* @__PURE__ */ jsx(SmallText, { children: isAvailable ? "Installed" : "Not Installed" })
46209
- ] });
46210
- return /* @__PURE__ */ jsx(
46211
- ModalRowItem,
46212
- {
46213
- onClick: onClickConnectWallet,
46214
- style: { marginTop: ITEM_GAP$2 },
46215
- leftContent,
46216
- rightContent: renderedRightContent
46217
- },
46218
- name2
46219
- );
46790
+ return /* @__PURE__ */ jsx(WalletRowItem, { wallet, onClick: onClickConnectWallet, rightContent });
46220
46791
  },
46221
46792
  [connectMutation, onSelectWallet]
46222
46793
  );
@@ -46991,23 +47562,24 @@ const ConnectEcoRow = ({
46991
47562
  });
46992
47563
  onClick == null ? void 0 : onClick();
46993
47564
  };
47565
+ const walletImage = useCroppedImage(account == null ? void 0 : account.wallet.logo);
46994
47566
  return /* @__PURE__ */ jsx(
46995
47567
  ModalRowItem,
46996
47568
  {
46997
47569
  style: { marginTop: ITEM_GAP$1, minHeight: `${ITEM_HEIGHT$2}px` },
46998
47570
  onClick: handleConnectClick,
46999
47571
  leftContent: account ? /* @__PURE__ */ jsxs(Row, { align: "center", gap: 10, children: [
47000
- (account == null ? void 0 : account.wallet.logo) && /* @__PURE__ */ jsx(
47572
+ walletImage ? /* @__PURE__ */ jsx(
47001
47573
  "img",
47002
47574
  {
47003
47575
  height: STANDARD_ICON_SIZE,
47004
47576
  width: STANDARD_ICON_SIZE,
47005
47577
  style: { objectFit: "cover" },
47006
- src: account == null ? void 0 : account.wallet.logo,
47578
+ src: walletImage,
47007
47579
  alt: `${account == null ? void 0 : account.wallet.prettyName} logo`,
47008
47580
  title: account == null ? void 0 : account.wallet.prettyName
47009
47581
  }
47010
- ),
47582
+ ) : /* @__PURE__ */ jsx(SkeletonElement, { height: STANDARD_ICON_SIZE, width: STANDARD_ICON_SIZE }),
47011
47583
  /* @__PURE__ */ jsxs(Row, { align: "baseline", gap: 8, children: [
47012
47584
  /* @__PURE__ */ jsx(Tooltip, { content: account == null ? void 0 : account.address, children: /* @__PURE__ */ jsx(Text, { children: truncatedAddress }) }),
47013
47585
  /* @__PURE__ */ jsx(
@@ -47120,6 +47692,7 @@ const WalletSelectorModal = createModal((modalProps) => {
47120
47692
  return "Connect wallet";
47121
47693
  }
47122
47694
  }, [selectedEcoChain == null ? void 0 : selectedEcoChain.chainType, sourceAssetChain == null ? void 0 : sourceAssetChain.chainType]);
47695
+ const walletIcon = useCroppedImage((selectedEcoChain == null ? void 0 : selectedEcoChain.logoUri) ?? (sourceAssetChain == null ? void 0 : sourceAssetChain.logoUri));
47123
47696
  return /* @__PURE__ */ jsx(
47124
47697
  RenderWalletList,
47125
47698
  {
@@ -47128,14 +47701,7 @@ const WalletSelectorModal = createModal((modalProps) => {
47128
47701
  onClickBackButton: handleOnClickBackButton,
47129
47702
  isConnectEco: fromConnectedWalletModal,
47130
47703
  chainId,
47131
- headerRightContent: /* @__PURE__ */ jsx(StyledChainLogoContainerRow$1, { align: "center", justify: "center", children: /* @__PURE__ */ jsx(
47132
- "img",
47133
- {
47134
- width: "25px",
47135
- height: "25px",
47136
- src: (selectedEcoChain == null ? void 0 : selectedEcoChain.logoUri) ?? (sourceAssetChain == null ? void 0 : sourceAssetChain.logoUri)
47137
- }
47138
- ) }),
47704
+ headerRightContent: /* @__PURE__ */ jsx(StyledChainLogoContainerRow$1, { align: "center", justify: "center", children: walletIcon ? /* @__PURE__ */ jsx("img", { width: "25px", height: "25px", src: walletIcon }) : /* @__PURE__ */ jsx(SkeletonElement, { width: 25, height: 25 }) }),
47139
47705
  bottomContent: showOtherEcosytems && /* @__PURE__ */ jsxs(
47140
47706
  Column,
47141
47707
  {
@@ -47407,7 +47973,10 @@ const StyledSettingsOptionLabel = dt(SmallText)`
47407
47973
 
47408
47974
  background: ${({ theme }) => theme.secondary.background.transparent};
47409
47975
  padding: 7px 15px;
47410
- border-radius: 15px;
47976
+ border-radius: ${({ theme }) => {
47977
+ var _a;
47978
+ return convertToPxValue((_a = theme.borderRadius) == null ? void 0 : _a.selectionButton);
47979
+ }};
47411
47980
  height: 40px;
47412
47981
  display: flex;
47413
47982
  align-items: center;
@@ -47597,7 +48166,10 @@ const SwapSettingsDrawer = createModal(() => {
47597
48166
  const StyledSwapPageSettings = dt(Column)`
47598
48167
  width: 100%;
47599
48168
  padding: 20px;
47600
- border-radius: 20px;
48169
+ border-radius: ${({ theme }) => {
48170
+ var _a;
48171
+ return convertToPxValue((_a = theme.borderRadius) == null ? void 0 : _a.modalContainer);
48172
+ }};
47601
48173
  background: ${(props) => props.theme.primary.background.normal};
47602
48174
  `;
47603
48175
  const SwapDetailText = dt(Row).attrs({
@@ -47610,16 +48182,6 @@ const SwapDetailText = dt(Row).attrs({
47610
48182
  const UnderlineText = dt.u`
47611
48183
  text-decoration-line: unset;
47612
48184
  `;
47613
- const SkeletonElement = dt.div`
47614
- ${({ width, height, theme }) => lt`
47615
- width: ${width}px;
47616
- height: ${height}px;
47617
- background-color: ${getHexColor(theme.primary.text.normal ?? "") + opacityToHex(10)};
47618
- `};
47619
- `;
47620
- const CircleSkeletonElement = dt(SkeletonElement)`
47621
- border-radius: 50%;
47622
- `;
47623
48185
  const PRIVILEGED_ASSETS = ["ATOM", "USDC", "USDT", "ETH", "TIA", "OSMO", "NTRN", "INJ"];
47624
48186
  const assetSymbolsSortedToTopAtom = atom$1(PRIVILEGED_ASSETS);
47625
48187
  const EXCLUDED_TOKEN_COMBINATIONS = [{ id: "SOL", chainIDs: ["solana"] }];
@@ -47844,10 +48406,11 @@ const GroupedAssetRow = ({
47844
48406
  );
47845
48407
  };
47846
48408
  const ChainWithAssetRow = ({ item, eureka }) => {
48409
+ const chainImage = useCroppedImage(item == null ? void 0 : item.logoUri);
47847
48410
  return /* @__PURE__ */ jsx(
47848
48411
  RowLayout,
47849
48412
  {
47850
- image: /* @__PURE__ */ jsx(StyledChainImage, { height: 35, width: 35, src: item == null ? void 0 : item.logoUri, alt: `${item.chainId} logo` }),
48413
+ image: chainImage ? /* @__PURE__ */ jsx(StyledChainImage, { height: 35, width: 35, src: chainImage, alt: `${item.chainId} logo` }) : /* @__PURE__ */ jsx(CircleSkeletonElement, { height: 35, width: 35 }),
47851
48414
  mainText: item.prettyName,
47852
48415
  subText: /* @__PURE__ */ jsx(SmallText, { children: item.chainId }),
47853
48416
  eureka
@@ -47977,6 +48540,7 @@ const ChevronIcon = ({
47977
48540
  color = "currentColor",
47978
48541
  backgroundColor = "transparent",
47979
48542
  noBackground = false,
48543
+ backgroundRx = 10,
47980
48544
  ...props
47981
48545
  }) => /* @__PURE__ */ jsxs(
47982
48546
  "svg",
@@ -47988,7 +48552,7 @@ const ChevronIcon = ({
47988
48552
  xmlns: "http://www.w3.org/2000/svg",
47989
48553
  ...props,
47990
48554
  children: [
47991
- !noBackground && /* @__PURE__ */ jsx("rect", { width: "40", height: "40", rx: "10", fill: backgroundColor }),
48555
+ !noBackground && /* @__PURE__ */ jsx("rect", { width: "40", height: "40", rx: backgroundRx, fill: backgroundColor }),
47992
48556
  /* @__PURE__ */ jsx(
47993
48557
  "path",
47994
48558
  {
@@ -48028,6 +48592,7 @@ const SwapPageAssetChainInput = ({
48028
48592
  badPriceWarning,
48029
48593
  disabled
48030
48594
  }) => {
48595
+ var _a;
48031
48596
  const theme = nt();
48032
48597
  const [_showPriceChangePercentage, setShowPriceChangePercentage] = useState(false);
48033
48598
  const isMobileScreenSize = useIsMobileScreenSize();
@@ -48040,8 +48605,8 @@ const SwapPageAssetChainInput = ({
48040
48605
  const groupedAssetsByRecommendedSymbol = useGroupedAssetByRecommendedSymbol();
48041
48606
  const groupedAsset = groupedAssetsByRecommendedSymbol == null ? void 0 : groupedAssetsByRecommendedSymbol.find(
48042
48607
  (group) => {
48043
- var _a;
48044
- return group.id === ((_a = assetDetails.asset) == null ? void 0 : _a.recommendedSymbol);
48608
+ var _a2;
48609
+ return group.id === ((_a2 = assetDetails.asset) == null ? void 0 : _a2.recommendedSymbol);
48045
48610
  }
48046
48611
  );
48047
48612
  const handleInputChange = (e) => {
@@ -48111,7 +48676,7 @@ const SwapPageAssetChainInput = ({
48111
48676
  }, [priceChangePercentage, theme.error.text, theme.primary.text.normal, theme.success.text]);
48112
48677
  const displayedValue = formatNumberWithCommas(value || "");
48113
48678
  const isLargeNumber = shouldReduceFontSize(value);
48114
- return /* @__PURE__ */ jsxs(StyledAssetChainInputWrapper, { justify: "space-between", borderRadius: 25, children: [
48679
+ return /* @__PURE__ */ jsxs(StyledAssetChainInputWrapper, { justify: "space-between", children: [
48115
48680
  /* @__PURE__ */ jsxs(Row, { justify: "space-between", children: [
48116
48681
  /* @__PURE__ */ jsx(
48117
48682
  StyledInput$1,
@@ -48158,7 +48723,8 @@ const SwapPageAssetChainInput = ({
48158
48723
  {
48159
48724
  className: "chevron-icon",
48160
48725
  color: theme.primary.text.normal,
48161
- backgroundColor: theme.secondary.background.normal
48726
+ backgroundColor: theme.secondary.background.normal,
48727
+ backgroundRx: (_a = theme.borderRadius) == null ? void 0 : _a.selectionButton
48162
48728
  }
48163
48729
  )
48164
48730
  ] })
@@ -48215,6 +48781,10 @@ const StyledAssetChainInputWrapper = dt(Column)`
48215
48781
  height: 110px;
48216
48782
  width: 100%;
48217
48783
  background: ${(props) => props.theme.primary.background.normal};
48784
+ border-radius: ${(props) => {
48785
+ var _a;
48786
+ return convertToPxValue((_a = props.theme.borderRadius) == null ? void 0 : _a.main);
48787
+ }};
48218
48788
  padding: 20px;
48219
48789
  @media (max-width: 767px) {
48220
48790
  padding: 15px;
@@ -48270,7 +48840,10 @@ const StyledAssetLabel = dt(Row).attrs({
48270
48840
  padding: 8
48271
48841
  })`
48272
48842
  height: 40px;
48273
- border-radius: 10px;
48843
+ border-radius: ${(props) => {
48844
+ var _a;
48845
+ return convertToPxValue((_a = props.theme.borderRadius) == null ? void 0 : _a.selectionButton);
48846
+ }};
48274
48847
  white-space: nowrap;
48275
48848
  position: relative;
48276
48849
 
@@ -48286,7 +48859,10 @@ const StyledAssetLabel = dt(Row).attrs({
48286
48859
  height: 100%;
48287
48860
  background-color: rgba(255, 255, 255, 0);
48288
48861
  pointer-events: none;
48289
- border-radius: 10px;
48862
+ border-radius: ${(props) => {
48863
+ var _a;
48864
+ return convertToPxValue((_a = props.theme.borderRadius) == null ? void 0 : _a.selectionButton);
48865
+ }};
48290
48866
  ${transition(["background-color"], "fast", "easeOut")};
48291
48867
  z-index: 0;
48292
48868
  }
@@ -49115,7 +49691,7 @@ const WarningPageLowInfo = ({
49115
49691
  {
49116
49692
  title: "Warning: Incomplete Price Data",
49117
49693
  description: /* @__PURE__ */ jsxs(Fragment, { children: [
49118
- /* @__PURE__ */ jsxs(SmallText, { color: theme.warning.text, textAlign: "center", textWrap: "balance", children: [
49694
+ /* @__PURE__ */ jsx(SmallText, { color: theme.warning.text, textAlign: "center", textWrap: "balance", children: /* @__PURE__ */ jsxs(StyledDescriptionContent, { children: [
49119
49695
  "USD price data is missing for one of the assets, please double check the input and output amounts are acceptable before continuing.",
49120
49696
  /* @__PURE__ */ jsx("br", {}),
49121
49697
  sourceDetails.amount,
@@ -49125,7 +49701,7 @@ const WarningPageLowInfo = ({
49125
49701
  destinationDetails.amount,
49126
49702
  " ",
49127
49703
  destinationDetails.symbol
49128
- ] }),
49704
+ ] }) }),
49129
49705
  /* @__PURE__ */ jsx(
49130
49706
  SmallTextButton,
49131
49707
  {
@@ -49157,6 +49733,9 @@ const WarningPageLowInfo = ({
49157
49733
  )
49158
49734
  ] });
49159
49735
  };
49736
+ const StyledDescriptionContent = dt.div`
49737
+ line-height: 1.5;
49738
+ `;
49160
49739
  const ExpectedErrorPageInsufficientGasBalance = ({
49161
49740
  error,
49162
49741
  onClickBack
@@ -49341,6 +49920,12 @@ const SwapExecutionPageRouteSimpleRow = ({
49341
49920
  }
49342
49921
  }
49343
49922
  }, [chainAddresses, context]);
49923
+ const walletImage = useCroppedImage(source.image);
49924
+ const renderWalletImage = useMemo(() => {
49925
+ if (!source.address) return;
49926
+ if (walletImage) return /* @__PURE__ */ jsx("img", { height: 12, width: 12, src: walletImage });
49927
+ return /* @__PURE__ */ jsx(SkeletonElement, { height: 12, width: 12 });
49928
+ }, [source.address, walletImage]);
49344
49929
  const renderExplorerLink = useMemo(() => {
49345
49930
  if (!explorerLink) return;
49346
49931
  if (isMobileScreenSize) {
@@ -49380,7 +49965,7 @@ const SwapExecutionPageRouteSimpleRow = ({
49380
49965
  assetDetails.chainName
49381
49966
  ] }),
49382
49967
  /* @__PURE__ */ jsxs(Button, { align: "center", gap: 3, onClick: () => copyAddress(source.address), children: [
49383
- source.image && /* @__PURE__ */ jsx("img", { height: 10, width: 10, src: source.image }),
49968
+ renderWalletImage,
49384
49969
  source.address && /* @__PURE__ */ jsx(SmallText, { monospace: true, title: source.address, textWrap: "nowrap", children: isShowingCopyAddressFeedback ? "Address copied!" : getTruncatedAddress(source.address, isMobileScreenSize) })
49385
49970
  ] }),
49386
49971
  explorerLink ? renderExplorerLink : onClickEditDestinationWallet ? /* @__PURE__ */ jsx(
@@ -49517,7 +50102,10 @@ const StyledBridgeArrowIcon = dt(BridgeArrowIcon)`
49517
50102
  const StyledSwapExecutionPageRoute$1 = dt(Column)`
49518
50103
  padding: 30px;
49519
50104
  background: ${({ theme }) => theme.primary.background.normal};
49520
- border-radius: 25px;
50105
+ border-radius: ${({ theme }) => {
50106
+ var _a;
50107
+ return convertToPxValue((_a = theme.borderRadius) == null ? void 0 : _a.main);
50108
+ }};
49521
50109
  min-height: 225px;
49522
50110
  `;
49523
50111
  const SwapExecutionBridgeIcon = ({
@@ -49785,7 +50373,10 @@ const StyledSwapExecutionPageRoute = dt(Column)`
49785
50373
  padding: 25px;
49786
50374
  gap: 20px;
49787
50375
  background: ${({ theme }) => theme.primary.background.normal};
49788
- border-radius: 25px;
50376
+ border-radius: ${({ theme }) => {
50377
+ var _a;
50378
+ return convertToPxValue((_a = theme.borderRadius) == null ? void 0 : _a.main);
50379
+ }};
49789
50380
  min-height: 225px;
49790
50381
  `;
49791
50382
  const StyledSwapVenueOrBridgeImage = dt.img`
@@ -49993,7 +50584,7 @@ const useHandleTransactionTimeout = (swapExecutionState) => {
49993
50584
  };
49994
50585
  const useSyncTxStatus = ({
49995
50586
  statusData,
49996
- historyIndex
50587
+ timestamp
49997
50588
  }) => {
49998
50589
  const transferEvents = statusData == null ? void 0 : statusData.transferEvents;
49999
50590
  const setOverallStatus = useSetAtom(setOverallStatusAtom);
@@ -50004,7 +50595,7 @@ const useSyncTxStatus = ({
50004
50595
  transactionHistoryIndex: currentTransactionHistoryIndex
50005
50596
  } = useAtomValue(swapExecutionStateAtom);
50006
50597
  const setTransactionHistory = useSetAtom(setTransactionHistoryAtom);
50007
- const txHistory = useAtomValue(transactionHistoryAtom);
50598
+ const transactionHistoryItems = useAtomValue(transactionHistoryAtom);
50008
50599
  const { isPending } = useAtomValue(skipSubmitSwapExecutionAtom);
50009
50600
  const clientOperations = useMemo(() => {
50010
50601
  if (!(route2 == null ? void 0 : route2.operations)) return [];
@@ -50039,16 +50630,18 @@ const useSyncTxStatus = ({
50039
50630
  setOverallStatus
50040
50631
  ]);
50041
50632
  useEffect(() => {
50042
- if (computedSwapStatus) {
50043
- const index = historyIndex ?? currentTransactionHistoryIndex;
50633
+ if (computedSwapStatus && timestamp !== void 0) {
50634
+ const index = transactionHistoryItems.findIndex(
50635
+ (txHistoryItem) => txHistoryItem.timestamp === timestamp
50636
+ );
50637
+ const oldTxHistoryItem = transactionHistoryItems[index];
50044
50638
  const newTxHistoryItem = {
50045
- ...txHistory[index],
50639
+ ...oldTxHistoryItem,
50046
50640
  ...statusData,
50047
50641
  status: computedSwapStatus
50048
50642
  };
50049
- const oldTxHistoryItem = txHistory[index];
50050
50643
  if (JSON.stringify(newTxHistoryItem) !== JSON.stringify(oldTxHistoryItem)) {
50051
- setTransactionHistory(index, newTxHistoryItem);
50644
+ setTransactionHistory(newTxHistoryItem);
50052
50645
  setOverallStatus(computedSwapStatus);
50053
50646
  }
50054
50647
  }
@@ -50058,11 +50651,11 @@ const useSyncTxStatus = ({
50058
50651
  computedSwapStatus,
50059
50652
  setOverallStatus,
50060
50653
  transactionDetailsArray.length,
50061
- txHistory,
50654
+ transactionHistoryItems,
50062
50655
  statusData,
50063
50656
  setTransactionHistory,
50064
- historyIndex,
50065
- currentTransactionHistoryIndex
50657
+ currentTransactionHistoryIndex,
50658
+ timestamp
50066
50659
  ]);
50067
50660
  };
50068
50661
  function useSwapExecutionState({
@@ -50357,7 +50950,9 @@ const useHandleTransactionFailed = (error, statusData) => {
50357
50950
  if (sourceClientAsset) {
50358
50951
  track("unexpected error page: transaction reverted", {
50359
50952
  transferAssetRelease: statusData == null ? void 0 : statusData.transferAssetRelease,
50360
- lastTransaction
50953
+ lastTransaction,
50954
+ error,
50955
+ route: route2
50361
50956
  });
50362
50957
  setErrorWarning({
50363
50958
  errorWarningType: ErrorWarningType.TransactionReverted,
@@ -50374,7 +50969,7 @@ const useHandleTransactionFailed = (error, statusData) => {
50374
50969
  transferAssetRelease: statusData == null ? void 0 : statusData.transferAssetRelease
50375
50970
  });
50376
50971
  } else if (explorerLink) {
50377
- track("unexpected error page: transaction failed", { lastTransaction });
50972
+ track("unexpected error page: transaction failed", { lastTransaction, error, route: route2 });
50378
50973
  setErrorWarning({
50379
50974
  errorWarningType: ErrorWarningType.TransactionFailed,
50380
50975
  onClickContactSupport: () => window.open("https://skip.build/discord", "_blank"),
@@ -50448,6 +51043,7 @@ var SwapExecutionState = /* @__PURE__ */ ((SwapExecutionState2) => {
50448
51043
  return SwapExecutionState2;
50449
51044
  })(SwapExecutionState || {});
50450
51045
  const SwapExecutionPage = () => {
51046
+ var _a;
50451
51047
  const setCurrentPage = useSetAtom(currentPageAtom);
50452
51048
  const {
50453
51049
  route: route2,
@@ -50457,6 +51053,7 @@ const SwapExecutionPage = () => {
50457
51053
  isValidatingGasBalance,
50458
51054
  transactionsSigned
50459
51055
  } = useAtomValue(swapExecutionStateAtom);
51056
+ const lastTransactionInTime = useAtomValue(lastTransactionInTimeAtom);
50460
51057
  const chainAddresses = useAtomValue(chainAddressesAtom);
50461
51058
  const { connectRequiredChains, isLoading } = useAutoSetAddress();
50462
51059
  const [simpleRoute, setSimpleRoute] = useState(true);
@@ -50471,7 +51068,8 @@ const SwapExecutionPage = () => {
50471
51068
  const lastTxHash = lastTransaction == null ? void 0 : lastTransaction.txHash;
50472
51069
  const lastTxChainId = lastTransaction == null ? void 0 : lastTransaction.chainId;
50473
51070
  useSyncTxStatus({
50474
- statusData
51071
+ statusData,
51072
+ timestamp: (_a = lastTransactionInTime == null ? void 0 : lastTransactionInTime.transactionHistoryItem) == null ? void 0 : _a.timestamp
50475
51073
  });
50476
51074
  const lastOperation = clientOperations[clientOperations.length - 1];
50477
51075
  const swapExecutionState = useSwapExecutionState({
@@ -50494,12 +51092,12 @@ const SwapExecutionPage = () => {
50494
51092
  }
50495
51093
  }, [swapExecutionState]);
50496
51094
  const secondOperationStatus = useMemo(() => {
50497
- var _a;
51095
+ var _a2;
50498
51096
  const status = statusData == null ? void 0 : statusData.transferEvents;
50499
51097
  if (swapExecutionState === 6) {
50500
51098
  return "completed";
50501
51099
  }
50502
- if ((_a = status == null ? void 0 : status[0]) == null ? void 0 : _a.status) {
51100
+ if ((_a2 = status == null ? void 0 : status[0]) == null ? void 0 : _a2.status) {
50503
51101
  return status[0].status;
50504
51102
  }
50505
51103
  if (swapExecutionState === 3 || swapExecutionState === 5) {
@@ -51015,10 +51613,13 @@ const useUpdateAmountWhenRouteChanges = () => {
51015
51613
  const [direction] = useAtom(swapDirectionAtom);
51016
51614
  const [sourceAsset, setSourceAsset] = useAtom(sourceAssetAtom);
51017
51615
  const [destinationAsset, setDestinationAsset] = useAtom(destinationAssetAtom);
51616
+ const prevRoute = useRef(route2.data);
51018
51617
  useEffect(() => {
51019
51618
  if (!route2.data || !sourceAsset || !destinationAsset) return;
51020
- if ((sourceAsset == null ? void 0 : sourceAsset.amount) === "" && direction === "swap-in") return;
51021
- if ((destinationAsset == null ? void 0 : destinationAsset.amount) === "" && direction === "swap-out") return;
51619
+ if (route2.data === prevRoute.current) return;
51620
+ prevRoute.current = route2.data;
51621
+ if (sourceAsset.amount === "" && direction === "swap-in") return;
51622
+ if (destinationAsset.amount === "" && direction === "swap-out") return;
51022
51623
  const swapInAmount = convertTokenAmountToHumanReadableAmount(
51023
51624
  route2.data.amountOut,
51024
51625
  destinationAsset.decimals
@@ -51027,26 +51628,18 @@ const useUpdateAmountWhenRouteChanges = () => {
51027
51628
  route2.data.amountIn,
51028
51629
  sourceAsset.decimals
51029
51630
  );
51030
- const swapInAmountChanged = hasAmountChanged(
51031
- swapInAmount,
51032
- (destinationAsset == null ? void 0 : destinationAsset.amount) ?? ""
51033
- );
51034
- const swapOutAmountChanged = hasAmountChanged(
51035
- swapOutAmount,
51036
- (sourceAsset == null ? void 0 : sourceAsset.amount) ?? ""
51037
- );
51038
- if (direction === "swap-in" && swapInAmountChanged) {
51631
+ if (direction === "swap-in") {
51039
51632
  setDestinationAsset((old) => ({
51040
51633
  ...old,
51041
- amount: swapInAmount
51634
+ amount: removeTrailingZeros(swapInAmount)
51042
51635
  }));
51043
- } else if (direction === "swap-out" && swapOutAmountChanged) {
51636
+ } else if (direction === "swap-out") {
51044
51637
  setSourceAsset((old) => ({
51045
51638
  ...old,
51046
- amount: swapOutAmount
51639
+ amount: removeTrailingZeros(swapOutAmount)
51047
51640
  }));
51048
51641
  }
51049
- }, [route2.data, sourceAsset, destinationAsset, direction, setSourceAsset, setDestinationAsset]);
51642
+ }, [route2.data, direction, sourceAsset, destinationAsset, setSourceAsset, setDestinationAsset]);
51050
51643
  };
51051
51644
  const useShowCosmosLedgerWarning = () => {
51052
51645
  var _a;
@@ -51085,6 +51678,7 @@ const ConnectedWalletContent = () => {
51085
51678
  amount: sourceAsset == null ? void 0 : sourceAsset.amount,
51086
51679
  chainId: sourceAsset == null ? void 0 : sourceAsset.chainId
51087
51680
  });
51681
+ const walletImage = useCroppedImage(sourceAccount == null ? void 0 : sourceAccount.wallet.logo);
51088
51682
  const { data: sourceBalance, isLoading } = useGetSourceBalance();
51089
51683
  const handleMaxButton = useSetMaxAmount();
51090
51684
  const maxAmountTokenMinusFees = useMaxAmountTokenMinusFees();
@@ -51101,7 +51695,6 @@ const ConnectedWalletContent = () => {
51101
51695
  Row,
51102
51696
  {
51103
51697
  style: {
51104
- paddingRight: 8,
51105
51698
  gap: 1
51106
51699
  },
51107
51700
  children: [
@@ -51115,15 +51708,7 @@ const ConnectedWalletContent = () => {
51115
51708
  align: "center",
51116
51709
  gap: 8,
51117
51710
  children: [
51118
- (sourceAccount == null ? void 0 : sourceAccount.wallet.logo) && /* @__PURE__ */ jsx(
51119
- "img",
51120
- {
51121
- style: { objectFit: "cover" },
51122
- src: sourceAccount == null ? void 0 : sourceAccount.wallet.logo,
51123
- height: 16,
51124
- width: 16
51125
- }
51126
- ),
51711
+ walletImage ? /* @__PURE__ */ jsx("img", { style: { objectFit: "cover" }, src: walletImage, height: 16, width: 16 }) : /* @__PURE__ */ jsx(SkeletonElement, { height: 16, width: 16 }),
51127
51712
  isLoading ? /* @__PURE__ */ jsx(
51128
51713
  "div",
51129
51714
  {
@@ -51164,7 +51749,7 @@ const ConnectedWalletContent = () => {
51164
51749
  }
51165
51750
  );
51166
51751
  };
51167
- const useTxHistory = ({ txHistoryItem, index }) => {
51752
+ const useTxHistory = ({ txHistoryItem }) => {
51168
51753
  var _a, _b, _c;
51169
51754
  const { data: chains2 } = useAtomValue(skipChainsAtom);
51170
51755
  const txs = (_a = txHistoryItem == null ? void 0 : txHistoryItem.transactionDetails) == null ? void 0 : _a.map((tx) => ({
@@ -51192,7 +51777,7 @@ const useTxHistory = ({ txHistoryItem, index }) => {
51192
51777
  }
51193
51778
  useSyncTxStatus({
51194
51779
  statusData,
51195
- historyIndex: index
51780
+ timestamp: txHistoryItem == null ? void 0 : txHistoryItem.timestamp
51196
51781
  });
51197
51782
  const explorerLinks = /* @__PURE__ */ new Set();
51198
51783
  (_c = statusData == null ? void 0 : statusData.transferEvents) == null ? void 0 : _c.forEach((transferEvent) => {
@@ -51272,14 +51857,12 @@ const SwapPageHeader = memo(() => {
51272
51857
  ] });
51273
51858
  });
51274
51859
  const TrackLatestTxHistoryItemStatus = memo(() => {
51275
- const transactionhistory = useAtomValue(transactionHistoryAtom);
51860
+ const lastTxHistoryItemInTime = useAtomValue(lastTransactionInTimeAtom);
51276
51861
  const setOverallStatus = useSetAtom(setOverallStatusAtom);
51277
51862
  const { transactionsSigned, transactionDetailsArray } = useAtomValue(swapExecutionStateAtom);
51278
51863
  const { isPending } = useAtomValue(skipSubmitSwapExecutionAtom);
51279
- const lastTxHistoryItem = transactionhistory.at(-1);
51280
51864
  const { transferAssetRelease } = useTxHistory({
51281
- txHistoryItem: lastTxHistoryItem,
51282
- index: transactionhistory.length - 1
51865
+ txHistoryItem: lastTxHistoryItemInTime == null ? void 0 : lastTxHistoryItemInTime.transactionHistoryItem
51283
51866
  });
51284
51867
  if (transferAssetRelease && transactionsSigned !== transactionDetailsArray.length && !isPending) {
51285
51868
  setOverallStatus("failed");
@@ -51291,10 +51874,10 @@ const noHistoryItemsAtom = atom$1((get) => {
51291
51874
  return (txHistoryItems == null ? void 0 : txHistoryItems.length) === 0;
51292
51875
  });
51293
51876
  const isFetchingLastTransactionStatusAtom = atom$1((get) => {
51294
- var _a;
51877
+ var _a, _b, _c;
51295
51878
  const { overallStatus, route: route2, transactionsSigned } = get(swapExecutionStateAtom);
51296
- const lastTxHistoryItem = get(transactionHistoryAtom).at(-1);
51297
- return overallStatus === "pending" && transactionsSigned === (route2 == null ? void 0 : route2.txsRequired) || (lastTxHistoryItem == null ? void 0 : lastTxHistoryItem.isSettled) !== true && ((_a = lastTxHistoryItem == null ? void 0 : lastTxHistoryItem.route) == null ? void 0 : _a.txsRequired) === 1;
51879
+ const lastTxHistoryItemInTime = get(lastTransactionInTimeAtom);
51880
+ return overallStatus === "pending" && transactionsSigned === (route2 == null ? void 0 : route2.txsRequired) || ((_a = lastTxHistoryItemInTime == null ? void 0 : lastTxHistoryItemInTime.transactionHistoryItem) == null ? void 0 : _a.isSettled) !== true && ((_c = (_b = lastTxHistoryItemInTime == null ? void 0 : lastTxHistoryItemInTime.transactionHistoryItem) == null ? void 0 : _b.route) == null ? void 0 : _c.txsRequired) === 1;
51298
51881
  });
51299
51882
  const useConnectToMissingCosmosChain = () => {
51300
51883
  const sourceAsset = useAtomValue(sourceAssetAtom);
@@ -51807,14 +52390,23 @@ const TransactionHistoryPageHistoryItemDetails = ({
51807
52390
  ] }),
51808
52391
  /* @__PURE__ */ jsxs(StyledHistoryItemDetailRow, { align: "center", children: [
51809
52392
  /* @__PURE__ */ jsx(StyledDetailsLabel, { children: "Route explorer" }),
51810
- /* @__PURE__ */ jsxs(Link, { href: skipExplorerLink, target: "_blank", gap: 5, onClick: () => {
51811
- track("transaction history page: view route explorer - clicked", {
51812
- txHash: initialTxHash
51813
- });
51814
- }, children: [
51815
- /* @__PURE__ */ jsx(SmallText, { normalTextColor: true, children: getTruncatedAddress(initialTxHash) }),
51816
- /* @__PURE__ */ jsx(SmallText, { children: /* @__PURE__ */ jsx(ChainIcon, {}) })
51817
- ] })
52393
+ /* @__PURE__ */ jsxs(
52394
+ Link,
52395
+ {
52396
+ href: skipExplorerLink,
52397
+ target: "_blank",
52398
+ gap: 5,
52399
+ onClick: () => {
52400
+ track("transaction history page: view route explorer - clicked", {
52401
+ txHash: initialTxHash
52402
+ });
52403
+ },
52404
+ children: [
52405
+ /* @__PURE__ */ jsx(SmallText, { normalTextColor: true, children: getTruncatedAddress(initialTxHash) }),
52406
+ /* @__PURE__ */ jsx(SmallText, { children: /* @__PURE__ */ jsx(ChainIcon, {}) })
52407
+ ]
52408
+ }
52409
+ )
51818
52410
  ] }),
51819
52411
  /* @__PURE__ */ jsx(Row, { align: "center", style: { marginTop: 10, padding: "0px 10px" }, children: /* @__PURE__ */ jsxs(Button, { onClick: onClickDelete, gap: 5, align: "center", children: [
51820
52412
  /* @__PURE__ */ jsx(SmallText, { color: theme.error.text, children: "Delete" }),
@@ -52474,121 +53066,118 @@ const FilledWarningIcon = ({
52474
53066
  }
52475
53067
  )
52476
53068
  ] });
52477
- const TransactionHistoryPageHistoryItem = forwardRef(
52478
- ({ index, txHistoryItem, showDetails, onClickRow }, ref) => {
52479
- const theme = nt();
52480
- const isMobileScreenSize = useIsMobileScreenSize();
52481
- const { status: historyStatus, transferAssetRelease } = useTxHistory({
52482
- txHistoryItem,
52483
- index
52484
- });
52485
- const removeTransactionHistoryItem = useSetAtom(removeTransactionHistoryItemAtom);
52486
- const {
52487
- route: {
52488
- amountIn,
52489
- amountOut,
52490
- sourceAssetDenom,
52491
- sourceAssetChainId,
52492
- destAssetDenom,
52493
- destAssetChainId
52494
- } = {},
52495
- timestamp,
52496
- transactionDetails
52497
- } = txHistoryItem;
52498
- const sourceAssetDetails = useGetAssetDetails({
52499
- assetDenom: sourceAssetDenom,
52500
- chainId: sourceAssetChainId,
52501
- tokenAmount: amountIn
52502
- });
52503
- const destinationAssetDetails = useGetAssetDetails({
52504
- assetDenom: destAssetDenom,
52505
- chainId: destAssetChainId,
52506
- tokenAmount: amountOut
52507
- });
52508
- const source = {
52509
- amount: sourceAssetDetails.amount,
52510
- asset: sourceAssetDetails.asset,
52511
- assetImage: sourceAssetDetails.assetImage ?? "",
52512
- chainName: sourceAssetDetails.chainName
52513
- };
52514
- const destination = {
52515
- amount: destinationAssetDetails.amount,
52516
- asset: destinationAssetDetails.asset,
52517
- assetImage: destinationAssetDetails.assetImage ?? "",
52518
- chainName: destinationAssetDetails.chainName
52519
- };
52520
- const renderStatus = useMemo(() => {
52521
- switch (historyStatus) {
52522
- case "unconfirmed":
52523
- case "pending":
52524
- return /* @__PURE__ */ jsx(
52525
- StyledAnimatedBorder,
52526
- {
52527
- width: 10,
52528
- height: 10,
52529
- backgroundColor: theme.primary.text.normal,
52530
- status: "pending"
52531
- }
52532
- );
52533
- case "completed":
52534
- return /* @__PURE__ */ jsx(StyledGreenDot, {});
52535
- case "incomplete":
52536
- case "failed": {
52537
- if (transferAssetRelease) {
52538
- return /* @__PURE__ */ jsx(FilledWarningIcon, { backgroundColor: theme.warning.text });
52539
- } else return /* @__PURE__ */ jsx(XIcon, { color: theme.error.text });
52540
- }
52541
- }
52542
- }, [
52543
- historyStatus,
52544
- theme.primary.text.normal,
52545
- theme.error.text,
52546
- theme.warning.text,
52547
- transferAssetRelease
52548
- ]);
52549
- const absoluteTimeString = useMemo(() => {
52550
- if (isMobileScreenSize) {
52551
- return getMobileDateFormat(new Date(timestamp));
52552
- }
52553
- return new Date(timestamp).toLocaleString();
52554
- }, [isMobileScreenSize, timestamp]);
52555
- const relativeTime = useMemo(() => {
52556
- if (historyStatus === "pending") {
52557
- return "In Progress";
52558
- }
52559
- if (!timestamp) return "";
52560
- return formatDistanceStrict(new Date(timestamp), /* @__PURE__ */ new Date(), {
52561
- addSuffix: true
52562
- }).replace("minutes", "mins").replace("minute", "min").replace("hours", "hrs").replace("hour", "hr").replace("seconds", "secs").replace("second", "sec").replace("months", "mos").replace("month", "mo").replace("years", "yrs").replace("year", "yr");
52563
- }, [timestamp, historyStatus]);
52564
- if (!txHistoryItem.route) return null;
52565
- return /* @__PURE__ */ jsxs(StyledHistoryContainer, { ref, showDetails, children: [
52566
- /* @__PURE__ */ jsxs(StyledHistoryItemRow, { align: "center", justify: "space-between", onClick: onClickRow, children: [
52567
- /* @__PURE__ */ jsxs(Row, { gap: 8, align: "center", children: [
52568
- /* @__PURE__ */ jsx(RenderAssetAmount, { ...source, sourceAsset: true }),
52569
- /* @__PURE__ */ jsx(ThinArrowIcon, { color: theme.primary.text.lowContrast, direction: "right" }),
52570
- /* @__PURE__ */ jsx(RenderAssetAmount, { ...destination })
52571
- ] }),
52572
- /* @__PURE__ */ jsxs(Row, { align: "center", gap: 6, children: [
52573
- /* @__PURE__ */ jsx(SmallText, { children: relativeTime }),
52574
- /* @__PURE__ */ jsx(Row, { width: 20, align: "center", justify: "center", children: renderStatus })
52575
- ] })
53069
+ const TransactionHistoryPageHistoryItem = forwardRef(({ txHistoryItem, showDetails, onClickRow }, ref) => {
53070
+ const theme = nt();
53071
+ const isMobileScreenSize = useIsMobileScreenSize();
53072
+ const { status: historyStatus, transferAssetRelease } = useTxHistory({
53073
+ txHistoryItem
53074
+ });
53075
+ const removeTransactionHistoryItem = useSetAtom(removeTransactionHistoryItemAtom);
53076
+ const {
53077
+ route: {
53078
+ amountIn,
53079
+ amountOut,
53080
+ sourceAssetDenom,
53081
+ sourceAssetChainId,
53082
+ destAssetDenom,
53083
+ destAssetChainId
53084
+ } = {},
53085
+ timestamp,
53086
+ transactionDetails
53087
+ } = txHistoryItem;
53088
+ const sourceAssetDetails = useGetAssetDetails({
53089
+ assetDenom: sourceAssetDenom,
53090
+ chainId: sourceAssetChainId,
53091
+ tokenAmount: amountIn
53092
+ });
53093
+ const destinationAssetDetails = useGetAssetDetails({
53094
+ assetDenom: destAssetDenom,
53095
+ chainId: destAssetChainId,
53096
+ tokenAmount: amountOut
53097
+ });
53098
+ const source = {
53099
+ amount: sourceAssetDetails.amount,
53100
+ asset: sourceAssetDetails.asset,
53101
+ assetImage: sourceAssetDetails.assetImage ?? "",
53102
+ chainName: sourceAssetDetails.chainName
53103
+ };
53104
+ const destination = {
53105
+ amount: destinationAssetDetails.amount,
53106
+ asset: destinationAssetDetails.asset,
53107
+ assetImage: destinationAssetDetails.assetImage ?? "",
53108
+ chainName: destinationAssetDetails.chainName
53109
+ };
53110
+ const renderStatus = useMemo(() => {
53111
+ switch (historyStatus) {
53112
+ case "unconfirmed":
53113
+ case "pending":
53114
+ return /* @__PURE__ */ jsx(
53115
+ StyledAnimatedBorder,
53116
+ {
53117
+ width: 10,
53118
+ height: 10,
53119
+ backgroundColor: theme.primary.text.normal,
53120
+ status: "pending"
53121
+ }
53122
+ );
53123
+ case "completed":
53124
+ return /* @__PURE__ */ jsx(StyledGreenDot, {});
53125
+ case "incomplete":
53126
+ case "failed": {
53127
+ if (transferAssetRelease) {
53128
+ return /* @__PURE__ */ jsx(FilledWarningIcon, { backgroundColor: theme.warning.text });
53129
+ } else return /* @__PURE__ */ jsx(XIcon, { color: theme.error.text });
53130
+ }
53131
+ }
53132
+ }, [
53133
+ historyStatus,
53134
+ theme.primary.text.normal,
53135
+ theme.error.text,
53136
+ theme.warning.text,
53137
+ transferAssetRelease
53138
+ ]);
53139
+ const absoluteTimeString = useMemo(() => {
53140
+ if (isMobileScreenSize) {
53141
+ return getMobileDateFormat(new Date(timestamp));
53142
+ }
53143
+ return new Date(timestamp).toLocaleString();
53144
+ }, [isMobileScreenSize, timestamp]);
53145
+ const relativeTime = useMemo(() => {
53146
+ if (historyStatus === "pending") {
53147
+ return "In Progress";
53148
+ }
53149
+ if (!timestamp) return "";
53150
+ return formatDistanceStrict(new Date(timestamp), /* @__PURE__ */ new Date(), {
53151
+ addSuffix: true
53152
+ }).replace("minutes", "mins").replace("minute", "min").replace("hours", "hrs").replace("hour", "hr").replace("seconds", "secs").replace("second", "sec").replace("months", "mos").replace("month", "mo").replace("years", "yrs").replace("year", "yr");
53153
+ }, [timestamp, historyStatus]);
53154
+ if (!txHistoryItem.route) return null;
53155
+ return /* @__PURE__ */ jsxs(StyledHistoryContainer, { ref, showDetails, children: [
53156
+ /* @__PURE__ */ jsxs(StyledHistoryItemRow, { align: "center", justify: "space-between", onClick: onClickRow, children: [
53157
+ /* @__PURE__ */ jsxs(Row, { gap: 8, align: "center", children: [
53158
+ /* @__PURE__ */ jsx(RenderAssetAmount, { ...source, sourceAsset: true }),
53159
+ /* @__PURE__ */ jsx(ThinArrowIcon, { color: theme.primary.text.lowContrast, direction: "right" }),
53160
+ /* @__PURE__ */ jsx(RenderAssetAmount, { ...destination })
52576
53161
  ] }),
52577
- showDetails && /* @__PURE__ */ jsx(
52578
- TransactionHistoryPageHistoryItemDetails,
52579
- {
52580
- status: historyStatus,
52581
- transactionDetails,
52582
- sourceChainName: sourceAssetDetails.chainName ?? "--",
52583
- destinationChainName: destinationAssetDetails.chainName ?? "--",
52584
- absoluteTimeString,
52585
- onClickDelete: () => removeTransactionHistoryItem(index),
52586
- transferAssetRelease
52587
- }
52588
- )
52589
- ] });
52590
- }
52591
- );
53162
+ /* @__PURE__ */ jsxs(Row, { align: "center", gap: 6, children: [
53163
+ /* @__PURE__ */ jsx(SmallText, { children: relativeTime }),
53164
+ /* @__PURE__ */ jsx(Row, { width: 20, align: "center", justify: "center", children: renderStatus })
53165
+ ] })
53166
+ ] }),
53167
+ showDetails && /* @__PURE__ */ jsx(
53168
+ TransactionHistoryPageHistoryItemDetails,
53169
+ {
53170
+ status: historyStatus,
53171
+ transactionDetails,
53172
+ sourceChainName: sourceAssetDetails.chainName ?? "--",
53173
+ destinationChainName: destinationAssetDetails.chainName ?? "--",
53174
+ absoluteTimeString,
53175
+ onClickDelete: () => removeTransactionHistoryItem(txHistoryItem.timestamp),
53176
+ transferAssetRelease
53177
+ }
53178
+ )
53179
+ ] });
53180
+ });
52592
53181
  TransactionHistoryPageHistoryItem.displayName = "TransactionHistoryPageHistoryItem";
52593
53182
  const RenderAssetAmount = ({
52594
53183
  amount,
@@ -52607,7 +53196,7 @@ const RenderAssetAmount = ({
52607
53196
  return verboseString;
52608
53197
  }, [asset, chainName, isMobileScreenSize, sourceAsset]);
52609
53198
  return /* @__PURE__ */ jsxs(Row, { gap: 8, align: "center", children: [
52610
- /* @__PURE__ */ jsx("img", { height: 30, width: 30, src: assetImage, alt: subtitle }),
53199
+ assetImage ? /* @__PURE__ */ jsx("img", { height: "auto", width: 30, src: assetImage, alt: subtitle }) : /* @__PURE__ */ jsx(CircleSkeletonElement, { height: 30, width: 30 }),
52611
53200
  /* @__PURE__ */ jsxs(Column, { style: sourceAsset ? { width: 50 } : void 0, children: [
52612
53201
  /* @__PURE__ */ jsx(Tooltip, { content: amount, style: { width: "min-content" }, children: /* @__PURE__ */ jsx(Text, { normalTextColor: true, style: { width: "max-content" }, children: formatDisplayAmount(amount, {
52613
53202
  decimals: 2
@@ -52622,7 +53211,10 @@ const StyledHistoryContainer = dt(Column)`
52622
53211
  background: ${({ theme }) => theme.secondary.background.normal};
52623
53212
  }
52624
53213
  min-height: 55px;
52625
- border-radius: 6px;
53214
+ border-radius: ${({ theme }) => {
53215
+ var _a;
53216
+ return convertToPxValue((_a = theme.borderRadius) == null ? void 0 : _a.rowItem);
53217
+ }};
52626
53218
  justify-content: center;
52627
53219
  `;
52628
53220
  const StyledHistoryItemRow = dt(Row)`
@@ -52640,7 +53232,7 @@ const StyledGreenDot = dt.div`
52640
53232
  border-radius: 50%;
52641
53233
  `;
52642
53234
  const TransactionHistoryPage = () => {
52643
- var _a, _b, _c, _d;
53235
+ var _a, _b, _c;
52644
53236
  const theme = nt();
52645
53237
  const setCurrentPage = useSetAtom(currentPageAtom);
52646
53238
  const [itemIndexToShowDetail, setItemIndexToShowDetail] = useState(void 0);
@@ -52689,10 +53281,10 @@ const TransactionHistoryPage = () => {
52689
53281
  }
52690
53282
  ),
52691
53283
  itemKey: (item) => {
52692
- var _a2, _b2;
52693
- return ((_b2 = (_a2 = item == null ? void 0 : item.transactionDetails) == null ? void 0 : _a2[0]) == null ? void 0 : _b2.txHash) ?? item.timestamp;
53284
+ var _a2;
53285
+ return (_a2 = item.timestamp) == null ? void 0 : _a2.toString();
52694
53286
  },
52695
- expandedItemKey: itemIndexToShowDetail ? (_d = (_c = (_b = historyList[itemIndexToShowDetail]) == null ? void 0 : _b.transactionDetails) == null ? void 0 : _c[0]) == null ? void 0 : _d.txHash : void 0
53287
+ expandedItemKey: itemIndexToShowDetail ? (_c = (_b = historyList[itemIndexToShowDetail]) == null ? void 0 : _b.timestamp) == null ? void 0 : _c.toString() : void 0
52696
53288
  },
52697
53289
  txHistory.length
52698
53290
  ) }),
@@ -52704,7 +53296,10 @@ const StyledContainer = dt(Column)`
52704
53296
  padding: 20px;
52705
53297
  width: 100%;
52706
53298
  min-height: 300px;
52707
- border-radius: 25px;
53299
+ border-radius: ${({ theme }) => {
53300
+ var _a;
53301
+ return convertToPxValue((_a = theme.borderRadius) == null ? void 0 : _a.main);
53302
+ }};
52708
53303
  background: ${({ theme }) => theme.primary.background.normal};
52709
53304
  `;
52710
53305
  const useKeepWalletStateSynced = () => {
@@ -52871,7 +53466,7 @@ const initSentry = () => {
52871
53466
  };
52872
53467
  const name = "@skip-go/widget";
52873
53468
  const description = "Swap widget";
52874
- const version = "3.11.2";
53469
+ const version = "3.12.0";
52875
53470
  const repository = {
52876
53471
  url: "https://github.com/skip-mev/skip-go",
52877
53472
  directory: "packages/widget"
@@ -52879,6 +53474,7 @@ const repository = {
52879
53474
  const type = "module";
52880
53475
  const scripts = {
52881
53476
  dev: "vite --force --host",
53477
+ "dev:visual-test": "VISUAL_TEST=true yarn dev",
52882
53478
  "dev:storybook": "storybook dev -p 6006",
52883
53479
  build: "npm run generate-chains && NODE_OPTIONS=--max-old-space-size=16384 vite build",
52884
53480
  "watch:build": "vite build --watch",
@@ -52892,7 +53488,9 @@ const scripts = {
52892
53488
  post: "git checkout -- package.json",
52893
53489
  "generate-chains": "node scripts/generate-chains.cjs",
52894
53490
  "update-registries": "yarn up @initia/initia-registry chain-registry",
52895
- test: "yarn playwright test"
53491
+ test: "yarn playwright test",
53492
+ "update-screenshots": "UPDATE_SCREENSHOTS=true yarn playwright test Keplr.test.tsx",
53493
+ "combine-images": "node scripts/combine-images.mjs"
52896
53494
  };
52897
53495
  const exports = {
52898
53496
  ".": {
@@ -52923,13 +53521,14 @@ const devDependencies = {
52923
53521
  "@testing-library/react": "^16.2.0",
52924
53522
  "@types/eslint__js": "^8.42.3",
52925
53523
  "@types/pluralize": "^0.0.33",
53524
+ "@types/pngjs": "^6.0.5",
52926
53525
  "@types/react": "^19.0.10",
52927
53526
  "@types/react-dom": "^19.0.4",
52928
53527
  "@typescript-eslint/eslint-plugin": "^7.15.0",
52929
53528
  "@typescript-eslint/parser": "^7.15.0",
52930
53529
  "@vitejs/plugin-react": "^4.3.1",
52931
53530
  buffer: "^6.0.3",
52932
- "chain-registry": "^1.69.222",
53531
+ "chain-registry": "^1.69.240",
52933
53532
  download: "^8.0.0",
52934
53533
  eslint: "^9.9.0",
52935
53534
  "eslint-config-prettier": "^9.1.0",
@@ -52938,9 +53537,12 @@ const devDependencies = {
52938
53537
  "fs-extra": "^11.3.0",
52939
53538
  "node-polyfill-webpack-plugin": "^4.0.0",
52940
53539
  "pino-pretty": "^13.0.0",
53540
+ pixelmatch: "^7.1.0",
53541
+ pngjs: "^7.0.0",
52941
53542
  "postcss-loader": "^8.1.1",
52942
53543
  prettier: "^3.4.2",
52943
53544
  process: "^0.11.10",
53545
+ pureimage: "^0.4.18",
52944
53546
  "raw-loader": "^4.0.2",
52945
53547
  react: ">=17.0.0",
52946
53548
  "react-dom": ">=17.0.0",
@@ -53101,6 +53703,12 @@ const useInitWidget = (props) => {
53101
53703
  if (props.brandColor) {
53102
53704
  theme.brandColor = props.brandColor;
53103
53705
  }
53706
+ if (theme.borderRadius !== void 0) {
53707
+ theme.borderRadius = {
53708
+ ...defaultBorderRadius,
53709
+ ...theme.borderRadius
53710
+ };
53711
+ }
53104
53712
  if (((_a2 = props.theme) == null ? void 0 : _a2.brandTextColor) === void 0 && typeof document !== "undefined") {
53105
53713
  theme.brandTextColor = getBrandButtonTextColor(theme.brandColor);
53106
53714
  }