kaleido-ui 0.1.41 → 0.1.43

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.
@@ -154,6 +154,7 @@ __export(web_exports, {
154
154
  WithdrawSuccess: () => WithdrawSuccess,
155
155
  buttonVariants: () => buttonVariants,
156
156
  cn: () => cn,
157
+ formatDisplayAmountText: () => formatDisplayAmountText,
157
158
  getAccountNetworkLabel: () => getAccountNetworkLabel,
158
159
  getAccountNetworkUi: () => getAccountNetworkUi,
159
160
  getAccountStatusUi: () => getAccountStatusUi,
@@ -173,6 +174,29 @@ function cn(...inputs) {
173
174
  return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
174
175
  }
175
176
 
177
+ // src/web/utils/amount-display.ts
178
+ var NUMBER_RE = /^(-?\d[\d,]*)(?:\.(\d+))?$/;
179
+ function formatDisplayAmountText(value, options = {}) {
180
+ if (value === null || value === void 0 || value === "") return "";
181
+ const unit = options.unit ?? "token";
182
+ const maxDecimals = unit === "sats" ? 0 : unit === "BTC" ? 8 : unit === "mBTC" ? 5 : options.maxDecimals ?? 6;
183
+ const raw = typeof value === "number" ? String(value) : value.trim();
184
+ const suffixMatch = raw.match(/(\s+[A-Za-z][\w.-]*)$/u);
185
+ const suffix = suffixMatch?.[1] ?? "";
186
+ const numeric = suffix ? raw.slice(0, -suffix.length) : raw;
187
+ const match = numeric.match(NUMBER_RE);
188
+ if (!match) return raw;
189
+ const num = parseFloat(numeric.replace(/,/g, ""));
190
+ if (!Number.isFinite(num)) return raw;
191
+ const factor = Math.pow(10, maxDecimals);
192
+ const rounded = Math.round(num * factor) / factor;
193
+ const formatted = rounded.toLocaleString("en-US", {
194
+ minimumFractionDigits: 0,
195
+ maximumFractionDigits: maxDecimals
196
+ });
197
+ return `${formatted}${suffix}`;
198
+ }
199
+
176
200
  // src/web/primitives/button.tsx
177
201
  var React = __toESM(require("react"), 1);
178
202
  var import_react_slot = require("@radix-ui/react-slot");
@@ -1319,6 +1343,185 @@ function StatusBadge({ status, className }) {
1319
1343
  );
1320
1344
  }
1321
1345
 
1346
+ // src/web/assets/protocol-icons.ts
1347
+ var u = (svg) => `data:image/svg+xml,${encodeURIComponent(svg)}`;
1348
+ var BITCOIN = `<!-- Created with Inkscape (http://www.inkscape.org/) -->
1349
+ <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
1350
+ <g transform="translate(0.00630876,-0.00301984)">
1351
+ <path fill="#f7931a" d="m63.033,39.744c-4.274,17.143-21.637,27.576-38.782,23.301-17.138-4.274-27.571-21.638-23.295-38.78,4.272-17.145,21.635-27.579,38.775-23.305,17.144,4.274,27.576,21.64,23.302,38.784z"/>
1352
+ <path fill="#FFF" d="m46.103,27.444c0.637-4.258-2.605-6.547-7.038-8.074l1.438-5.768-3.511-0.875-1.4,5.616c-0.923-0.23-1.871-0.447-2.813-0.662l1.41-5.653-3.509-0.875-1.439,5.766c-0.764-0.174-1.514-0.346-2.242-0.527l0.004-0.018-4.842-1.209-0.934,3.75s2.605,0.597,2.55,0.634c1.422,0.355,1.679,1.296,1.636,2.042l-1.638,6.571c0.098,0.025,0.225,0.061,0.365,0.117-0.117-0.029-0.242-0.061-0.371-0.092l-2.296,9.205c-0.174,0.432-0.615,1.08-1.609,0.834,0.035,0.051-2.552-0.637-2.552-0.637l-1.743,4.019,4.569,1.139c0.85,0.213,1.683,0.436,2.503,0.646l-1.453,5.834,3.507,0.875,1.439-5.772c0.958,0.26,1.888,0.5,2.798,0.726l-1.434,5.745,3.511,0.875,1.453-5.823c5.987,1.133,10.489,0.676,12.384-4.739,1.527-4.36-0.076-6.875-3.226-8.515,2.294-0.529,4.022-2.038,4.483-5.155zm-8.022,11.249c-1.085,4.36-8.426,2.003-10.806,1.412l1.928-7.729c2.38,0.594,10.012,1.77,8.878,6.317zm1.086-11.312c-0.99,3.966-7.1,1.951-9.082,1.457l1.748-7.01c1.982,0.494,8.365,1.416,7.334,5.553z"/>
1353
+ </g>
1354
+ </svg>
1355
+ `;
1356
+ var LIGHTNING = `<svg width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg">
1357
+ <path d="M90 0C139.706 0 180 40.2944 180 90C180 139.706 139.706 180 90 180C40.2944 180 0 139.706 0 90C0 40.2944 40.2944 0 90 0ZM101.859 29.2158C101.519 29.2609 101.205 29.4243 100.973 29.6768L43.9883 91.5664C43.7621 91.812 43.6126 92.1189 43.5576 92.4482C43.5028 92.7773 43.5448 93.1153 43.6787 93.4209C43.8128 93.7266 44.0331 93.9873 44.3125 94.1699C44.592 94.3525 44.9191 94.4492 45.2529 94.4492H90.8848L68.3975 146.801C68.2859 147.061 68.2691 147.352 68.3516 147.622C68.4341 147.892 68.6102 148.125 68.8477 148.278C69.0851 148.432 69.3692 148.495 69.6494 148.459C69.9298 148.423 70.1891 148.289 70.3799 148.08L133.744 78.7754C134.002 78.4934 134.172 78.1419 134.232 77.7646C134.293 77.3874 134.243 77.0001 134.087 76.6514C133.931 76.3025 133.675 76.0067 133.354 75.8008C133.032 75.5949 132.656 75.4878 132.274 75.4922L89.4912 75.9971C89.0447 76.0023 88.6033 75.8973 88.207 75.6914C87.8109 75.4855 87.472 75.1847 87.2197 74.8164C86.9674 74.448 86.8095 74.0229 86.7607 73.5791C86.712 73.1355 86.7733 72.6867 86.9395 72.2725L103.413 31.2158C103.541 30.8974 103.553 30.5442 103.447 30.2178C103.342 29.8916 103.125 29.6128 102.835 29.4297C102.545 29.2466 102.199 29.1708 101.859 29.2158Z" fill="#FFBA00"/>
1358
+ </svg>
1359
+ `;
1360
+ var RGB = `<svg width="227" height="274" viewBox="0 0 227 274" fill="none" xmlns="http://www.w3.org/2000/svg">
1361
+ <g clip-path="url(#clip0)">
1362
+ <path d="M113.6 0L23.9 54.3L40.2 82.5H227V68.6L113.6 0Z" fill="url(#paint0_radial)"/>
1363
+ <path d="M106.1 215.8L15.4 58.7L0 68V205.2L82.3 255.1L106.1 215.8Z" fill="url(#paint1_radial)"/>
1364
+ <path d="M90.9 260L113.6 273.8L227 205.2V91.5H192.9L90.9 260Z" fill="url(#paint2_linear)"/>
1365
+ <path d="M222 203.2L223.1 97.2L113.5 269.7L222 203.2Z" fill="url(#paint3_linear)"/>
1366
+ <path d="M222.3 95.5C222.8 95.5 223.1 119.7 222.9 149.5C222.7 179.3 222.1 203.5 221.6 203.5C221.1 203.5 220.8 179.3 221 149.5C221.2 119.7 221.8 95.5 222.3 95.5Z" fill="url(#paint4_radial)"/>
1367
+ <path d="M225.528 200.898C225.795 201.32 205.504 214.511 180.213 230.273C154.922 246.034 134.149 258.464 133.882 258.042C133.614 257.619 153.906 244.429 179.197 228.667C204.488 212.905 225.261 200.475 225.528 200.898Z" fill="url(#paint5_radial)"/>
1368
+ <path d="M5.59998 200.2L83.2 243.9L6.99998 81.8L5.59998 200.2Z" fill="url(#paint6_linear)"/>
1369
+ <path d="M6.29999 95.5C6.79999 95.5 7.09999 119.7 6.89999 149.5C6.69999 179.3 6.09999 203.5 5.59999 203.5C5.09999 203.5 4.79999 179.3 4.99999 149.5C5.29999 119.6 5.79999 95.5 6.29999 95.5Z" fill="url(#paint7_radial)"/>
1370
+ <path d="M69.2574 239.651C68.9928 240.075 54.2901 231.256 36.4865 219.913C18.6829 208.569 4.45664 198.986 4.7213 198.562C4.98596 198.138 19.6887 206.957 37.4922 218.301C55.3029 229.766 69.5221 239.227 69.2574 239.651Z" fill="url(#paint8_radial)"/>
1371
+ <path d="M115 10.5L35.9 56L220.4 70.5L115 10.5Z" fill="url(#paint9_linear)"/>
1372
+ <path d="M108 5.5C108.4 4.9 133.3 18.9 163.7 36.8C194.1 54.7 218.4 69.8 218 70.4C217.6 71 192.7 57 162.3 39.1C131.9 21.2 107.6 6.1 108 5.5Z" fill="url(#paint10_radial)"/>
1373
+ <path d="M98.4 20C98.4 20.2 85.1 28.4 74.9 34.2C64.7 40 56 44.6 56 44.5C56 44.3 64.7 39.5 74.9 33.6C85.1 27.7 98.4 19.8 98.4 20Z" fill="white"/>
1374
+ </g>
1375
+ <defs>
1376
+ <radialGradient id="paint0_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(125.465 41.23) scale(78.7467)">
1377
+ <stop offset="0.13" stop-color="#FFEF00"/>
1378
+ <stop offset="0.19" stop-color="#FFE403"/>
1379
+ <stop offset="0.3" stop-color="#FFC60A"/>
1380
+ <stop offset="0.45" stop-color="#FF9615"/>
1381
+ <stop offset="0.63" stop-color="#FF5425"/>
1382
+ <stop offset="0.8" stop-color="#FF0F36"/>
1383
+ </radialGradient>
1384
+ <radialGradient id="paint1_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(53.055 156.88) scale(78.9305)">
1385
+ <stop offset="0.19" stop-color="#1BEB39"/>
1386
+ <stop offset="0.45" stop-color="#24DF2E"/>
1387
+ <stop offset="0.91" stop-color="#3DC00F"/>
1388
+ <stop offset="1" stop-color="#42B909"/>
1389
+ </radialGradient>
1390
+ <linearGradient id="paint2_linear" x1="90.89" y1="182.625" x2="227" y2="182.625" gradientUnits="userSpaceOnUse">
1391
+ <stop stop-color="#16E4DD"/>
1392
+ <stop offset="0.5" stop-color="#0B34D9" stop-opacity="0.8"/>
1393
+ </linearGradient>
1394
+ <linearGradient id="paint3_linear" x1="264" y1="97" x2="123.787" y2="188.21" gradientUnits="userSpaceOnUse">
1395
+ <stop stop-color="white"/>
1396
+ <stop offset="0.08" stop-color="white" stop-opacity="0.8"/>
1397
+ <stop offset="0.17" stop-color="white" stop-opacity="0.62"/>
1398
+ <stop offset="0.26" stop-color="white" stop-opacity="0.45"/>
1399
+ <stop offset="0.36" stop-color="white" stop-opacity="0.31"/>
1400
+ <stop offset="0.46" stop-color="white" stop-opacity="0.2"/>
1401
+ <stop offset="0.57" stop-color="white" stop-opacity="0.11"/>
1402
+ <stop offset="0.68" stop-color="white" stop-opacity="0.05"/>
1403
+ <stop offset="0.82" stop-color="white" stop-opacity="0.01"/>
1404
+ <stop offset="1" stop-color="white" stop-opacity="0"/>
1405
+ </linearGradient>
1406
+ <radialGradient id="paint4_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(222.003 148.659) rotate(-89.6347) scale(54.4816 0.930495)">
1407
+ <stop offset="0.2" stop-color="white"/>
1408
+ <stop offset="0.59" stop-color="white" stop-opacity="0.04"/>
1409
+ <stop offset="1" stop-color="white" stop-opacity="0"/>
1410
+ </radialGradient>
1411
+ <radialGradient id="paint5_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(180.444 229.065) rotate(-31.9506) scale(54.4816 0.930495)">
1412
+ <stop offset="0.2" stop-color="white"/>
1413
+ <stop offset="0.59" stop-color="white" stop-opacity="0.04"/>
1414
+ <stop offset="1" stop-color="white" stop-opacity="0"/>
1415
+ </radialGradient>
1416
+ <linearGradient id="paint6_linear" x1="59.5835" y1="259.953" x2="42.5049" y2="92.5821" gradientUnits="userSpaceOnUse">
1417
+ <stop stop-color="white" stop-opacity="0"/>
1418
+ <stop offset="0.18" stop-color="white" stop-opacity="0.01"/>
1419
+ <stop offset="0.32" stop-color="white" stop-opacity="0.05"/>
1420
+ <stop offset="0.43" stop-color="white" stop-opacity="0.11"/>
1421
+ <stop offset="0.54" stop-color="white" stop-opacity="0.2"/>
1422
+ <stop offset="0.64" stop-color="white" stop-opacity="0.31"/>
1423
+ <stop offset="0.74" stop-color="white" stop-opacity="0.45"/>
1424
+ <stop offset="0.83" stop-color="white" stop-opacity="0.62"/>
1425
+ <stop offset="0.92" stop-color="white" stop-opacity="0.8"/>
1426
+ <stop offset="1" stop-color="white"/>
1427
+ </linearGradient>
1428
+ <radialGradient id="paint7_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(6.00303 148.659) rotate(-89.6347) scale(54.4816 0.930497)">
1429
+ <stop offset="0.2" stop-color="white"/>
1430
+ <stop offset="0.59" stop-color="white" stop-opacity="0.04"/>
1431
+ <stop offset="1" stop-color="white" stop-opacity="0"/>
1432
+ </radialGradient>
1433
+ <radialGradient id="paint8_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(37.4669 219.467) rotate(32.4755) scale(38.5934 0.930479)">
1434
+ <stop offset="0.2" stop-color="white"/>
1435
+ <stop offset="0.59" stop-color="white" stop-opacity="0.04"/>
1436
+ <stop offset="1" stop-color="white" stop-opacity="0"/>
1437
+ </radialGradient>
1438
+ <linearGradient id="paint9_linear" x1="53" y1="30.5" x2="197.14" y2="97.2888" gradientUnits="userSpaceOnUse">
1439
+ <stop stop-color="white"/>
1440
+ <stop offset="0.08" stop-color="white" stop-opacity="0.8"/>
1441
+ <stop offset="0.17" stop-color="white" stop-opacity="0.62"/>
1442
+ <stop offset="0.26" stop-color="white" stop-opacity="0.45"/>
1443
+ <stop offset="0.36" stop-color="white" stop-opacity="0.31"/>
1444
+ <stop offset="0.46" stop-color="white" stop-opacity="0.2"/>
1445
+ <stop offset="0.57" stop-color="white" stop-opacity="0.11"/>
1446
+ <stop offset="0.68" stop-color="white" stop-opacity="0.05"/>
1447
+ <stop offset="0.82" stop-color="white" stop-opacity="0.01"/>
1448
+ <stop offset="1" stop-color="white" stop-opacity="0"/>
1449
+ </linearGradient>
1450
+ <radialGradient id="paint10_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(162.445 38.7078) rotate(-149.437) scale(64.4362 1.34306)">
1451
+ <stop offset="0.2" stop-color="white"/>
1452
+ <stop offset="0.59" stop-color="white" stop-opacity="0.04"/>
1453
+ <stop offset="1" stop-color="white" stop-opacity="0"/>
1454
+ </radialGradient>
1455
+ <clipPath id="clip0">
1456
+ <rect width="227" height="273.8" fill="white"/>
1457
+ </clipPath>
1458
+ </defs>
1459
+ </svg>
1460
+ `;
1461
+ var SPARK = `<svg width="135" height="128" viewBox="0 0 135 128" fill="none" xmlns="http://www.w3.org/2000/svg">
1462
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M79.4319 49.3554L81.7454 0H52.8438L55.1573 49.356L8.9311 31.9035L0 59.3906L47.6565 72.4425L16.7743 111.012L40.1562 128L67.2966 86.7083L94.4358 127.998L117.818 111.01L86.9359 72.4412L134.587 59.3907L125.656 31.9036L79.4319 49.3554ZM67.2944 66.062L67.2941 66.0609H67.2932L67.2924 66.0635L67.2944 66.062Z" fill="white"/>
1463
+ </svg>
1464
+ `;
1465
+ var ARKADE = `<svg width="220" height="220" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
1466
+ <rect width="1024" height="1024" fill="#351791" />
1467
+ <rect x="512" y="256" width="128" height="128" fill="#F6F6F6" />
1468
+ <rect x="384" y="256" width="128" height="128" fill="#F6F6F6" />
1469
+ <rect x="640" y="384" width="128" height="128" fill="#F6F6F6" />
1470
+ <rect width="128" height="128" transform="matrix(-1 0 0 1 384 384)" fill="#F6F6F6" />
1471
+ <rect width="128" height="128" transform="matrix(-1 0 0 1 512 512)" fill="#F6F6F6" />
1472
+ <rect width="128" height="128" transform="matrix(-1 0 0 1 640 512)" fill="#F6F6F6" />
1473
+ <rect x="640" y="640" width="128" height="128" fill="#F6F6F6" />
1474
+ <rect width="128" height="128" transform="matrix(-1 0 0 1 384 640)" fill="#F6F6F6" />
1475
+ <path d="M640 256L768 384H640V256Z" fill="#F6F6F6" />
1476
+ <path d="M384 256L256 384H384V256Z" fill="#F6F6F6" />
1477
+ </svg>`;
1478
+ var LIQUID = `<?xml version="1.0" encoding="UTF-8"?>
1479
+ <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 2000 2000">
1480
+ <defs>
1481
+ <style>
1482
+ .cls-1 {
1483
+ fill: none;
1484
+ }
1485
+
1486
+ .cls-1, .cls-2, .cls-3, .cls-4 {
1487
+ stroke-width: 0px;
1488
+ }
1489
+
1490
+ .cls-2 {
1491
+ fill: #0d1437;
1492
+ }
1493
+
1494
+ .cls-3 {
1495
+ fill: #14909c;
1496
+ }
1497
+
1498
+ .cls-4 {
1499
+ fill: #22e1c9;
1500
+ }
1501
+ </style>
1502
+ </defs>
1503
+ <rect class="cls-1" x="1000.3" y="36.6" width="497.9" height="329.9"/>
1504
+ <g>
1505
+ <circle class="cls-2" cx="1000" cy="1000" r="1000"/>
1506
+ <path class="cls-3" d="M930.3,828.5c47.5-284.6,351.6-246.9,387.8-241.3,37.7,11.4,74.5-26,53.2-62.1-83.8-143.2-250.7-236.6-377.5-243.2,31.5-24.9,137.2-38.6,249.3-34,39.5,1.4,56.1-50.5,22.6-71.7-2.8-1.8-5.7-3.8-9.8-5.2-153.2-47.1-317.6-51.4-474.1-10.3-116,30.1-228.1,84.8-327.5,165.4-41.5,34-79.7,70.8-113.1,109.8-249.3,289.8-280,715.9-67.4,1039.5,4.3,6.6,8.5,12.8,12.8,19.4,3.8,4.8,5.2,7.1,6.6,8.9,9.8,14.6,20.8,28.8,32,42.9,12.3,15.1,25.4,29.7,38.6,43.8,3.2,3.8,6.6,7.1,10.3,10.8,12.3,12.8,24.9,25.4,38.1,37.2.9.9,2.3,1.8,3.2,3.2,14.2,12.8,28.8,24.9,43.4,36.8,3.2,2.8,7.1,5.7,10.8,8.5,13.7,10.3,27.4,20.3,41.1,30.1,1.8.9,3.2,2.3,5.2,3.8,15.5,10.3,31.5,20.8,48,30.1,3.2,1.8,6.6,3.8,9.4,5.7,15.1,8.5,30.1,16.5,45.2,24,1.8.9,3.2,1.8,5.2,2.3,17.4,8.5,34.9,16,52.8,23.1,2.3.9,4.8,1.8,7.1,2.8,16.9,6.6,34,12.8,50.9,17.8,1.4,0,2.8.9,3.8,1.4,18.9,6.2,37.7,11.4,57.1,16,.9,0,1.8,0,2.3.5,18.9,4.8,37.7,8.5,57.1,11.8h2.3c40,6.6,80.1,10.3,120.6,11.8h.9c199.4,5.2,401-57.5,568.4-192.7,102.3-82.9,180.9-183.8,234.7-295,2.8-6.2,6.2-12.8,8.9-18.9,15.5-34.5,29.2-70.1,40-106-523.2,197-959.5-71.2-900.2-426.5l-.5-.9.2.5Z"/>
1507
+ <path class="cls-4" d="M623.9,915.7c101.8-137.2,148.9-113.1,158.7-155.5,13.2-58-198.4-108.4-363.3,18.3,229-286.6,585.8-352.6,889.7-195,40.5,21.2,85.8-19.4,62.6-58.5-83.8-143.2-250.7-236.6-377.5-243.2,31.5-24.9,137.2-38.6,249.3-34,39.5,1.4,56.1-50.5,22.6-71.7-2.8-1.8-5.7-3.8-9.8-5.2-153.2-47.1-317.6-51.4-474.1-10.3-116,30.1-228.1,84.8-327.5,165.4-41.5,34-79.7,70.8-113.1,109.8-249.3,289.8-280,715.9-67.4,1039.5,4.3,6.6,8.5,12.8,12.8,19.4,3.8,4.8,5.2,7.1,6.6,8.9,9.8,14.6,20.8,28.8,32,42.9,222,274.3,576.4,377.5,896.3,293.2-818.2-121.1-693.3-795.6-598.1-923.7v-.5.2Z"/>
1508
+ </g>
1509
+ </svg>`;
1510
+ var TAPROOT_B64 = `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`;
1511
+ var protocolIcons = {
1512
+ Bitcoin: u(BITCOIN),
1513
+ L1: u(BITCOIN),
1514
+ LN: u(LIGHTNING),
1515
+ RGB20: u(RGB),
1516
+ RGB21: u(RGB),
1517
+ "RGB-L1": u(RGB),
1518
+ "RGB-LN": u(RGB),
1519
+ Spark: u(SPARK),
1520
+ Arkade: u(ARKADE),
1521
+ Liquid: u(LIQUID),
1522
+ Taproot: `data:image/png;base64,${TAPROOT_B64}`
1523
+ };
1524
+
1322
1525
  // src/web/components/network-badge.tsx
1323
1526
  var import_jsx_runtime17 = require("react/jsx-runtime");
1324
1527
  var networkConfig = {
@@ -1402,7 +1605,7 @@ var networkConfig = {
1402
1605
  };
1403
1606
  function NetworkBadge({
1404
1607
  network,
1405
- iconBasePath = "/icons",
1608
+ iconBasePath,
1406
1609
  showLabel,
1407
1610
  children,
1408
1611
  size = "md",
@@ -1410,7 +1613,7 @@ function NetworkBadge({
1410
1613
  iconClassName
1411
1614
  }) {
1412
1615
  const { chipVar, textVar, label, iconSuffix, defaultIconClassName } = networkConfig[network];
1413
- const icon = `${iconBasePath}/${iconSuffix}`;
1616
+ const icon = iconBasePath ? `${iconBasePath}/${iconSuffix}` : protocolIcons[network] ?? `${iconSuffix}`;
1414
1617
  const shouldShowLabel = showLabel ?? false;
1415
1618
  const content = children ?? (shouldShowLabel ? label : null);
1416
1619
  const chipSize = size === "sm" ? "size-6" : size === "lg" ? "size-14" : "size-8";
@@ -1599,6 +1802,7 @@ function AssetCard({
1599
1802
  className
1600
1803
  }) {
1601
1804
  const shown = balanceVisible ? displayBalance : "\u2022\u2022\u2022\u2022\u2022\u2022";
1805
+ const displayShown = balanceVisible ? formatDisplayAmountText(displayBalance) : shown;
1602
1806
  const [hovered, setHovered] = (0, import_react4.useState)(false);
1603
1807
  const gradientStyle = accentColor ? { background: `linear-gradient(135deg, var(--card) 30%, ${accentColor}${hovered ? "77" : "55"} 75%, ${accentColor}${hovered ? "dd" : "b3"} 100%)`, transition: "background 0.3s ease" } : void 0;
1604
1808
  return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
@@ -1616,8 +1820,8 @@ function AssetCard({
1616
1820
  onMouseLeave: () => setHovered(false),
1617
1821
  children: [
1618
1822
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "absolute inset-0 bg-gradient-to-br from-white/5 to-transparent opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none" }),
1619
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center justify-between relative z-10", children: [
1620
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-3", children: [
1823
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "relative z-10 flex min-w-0 items-center justify-between gap-3", children: [
1824
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex min-w-0 items-center gap-3", children: [
1621
1825
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1622
1826
  AssetIcon,
1623
1827
  {
@@ -1627,23 +1831,31 @@ function AssetCard({
1627
1831
  className: "group-hover:scale-105 transition-transform"
1628
1832
  }
1629
1833
  ),
1630
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex flex-col", children: [
1834
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex min-w-0 flex-col", children: [
1631
1835
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1632
1836
  "span",
1633
1837
  {
1634
1838
  className: cn(
1635
- "font-bold text-base leading-tight tracking-wide text-foreground",
1839
+ "max-w-full truncate font-bold text-base leading-tight tracking-wide text-foreground",
1636
1840
  onClick && "transition-colors"
1637
1841
  ),
1842
+ title: name,
1638
1843
  children: name
1639
1844
  }
1640
1845
  ),
1641
1846
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex flex-nowrap gap-1 mt-1", children: networks.map((network) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(NetworkBadge, { network, size: "sm" }, network)) })
1642
1847
  ] })
1643
1848
  ] }),
1644
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "text-right", children: [
1645
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "font-bold text-lg tracking-tight text-foreground group-hover:opacity-90 transition-colors", children: shown }),
1646
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-tiny text-muted-foreground font-medium tracking-wide uppercase mt-0.5", children: ticker })
1849
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "min-w-0 max-w-[45%] text-right", children: [
1850
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1851
+ "p",
1852
+ {
1853
+ className: "max-w-full truncate font-bold text-lg tabular-nums tracking-tight text-foreground transition-colors group-hover:opacity-90",
1854
+ title: shown,
1855
+ children: displayShown
1856
+ }
1857
+ ),
1858
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "mt-0.5 truncate text-tiny font-medium uppercase tracking-wide text-muted-foreground", children: ticker })
1647
1859
  ] })
1648
1860
  ] })
1649
1861
  ]
@@ -2412,7 +2624,7 @@ function InlineSelector({
2412
2624
  ),
2413
2625
  children: [
2414
2626
  renderPanelHeader?.(renderArgs),
2415
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "space-y-1", children: options.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex flex-col items-center gap-2 px-4 py-8 text-center text-sm text-white/30", children: [
2627
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "max-h-[60vh] space-y-1 overflow-y-auto", children: options.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex flex-col items-center gap-2 px-4 py-8 text-center text-sm text-white/30", children: [
2416
2628
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Icon, { name: "search", size: "md", className: "opacity-40" }),
2417
2629
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { children: "No results" })
2418
2630
  ] }) : options.map((option) => {
@@ -3490,8 +3702,11 @@ function AssetSelector({
3490
3702
  options,
3491
3703
  categories = [],
3492
3704
  defaultActiveCategories,
3705
+ networkFilter,
3706
+ venueFilter,
3493
3707
  disabled,
3494
3708
  disabledTicker,
3709
+ disabledId,
3495
3710
  compact,
3496
3711
  onOpenPanelHeightChange,
3497
3712
  onChange
@@ -3502,21 +3717,29 @@ function AssetSelector({
3502
3717
  defaultActiveCategories ?? categories.map((category) => category.id)
3503
3718
  );
3504
3719
  const selectedKey = selectedId ?? selectedTicker;
3505
- const selected = options.find((option) => (option.id ?? option.ticker) === selectedKey);
3720
+ const selected = options.find((option) => option.id === selectedKey) ?? options.find((option) => option.ticker === selectedTicker);
3721
+ const selectedOptionId = selected?.id ?? selectedKey;
3506
3722
  const hasCategoryFilters = categories.length > 0;
3507
3723
  const filtered = options.filter((option) => {
3508
3724
  const category = option.category ?? null;
3509
- const matchesCategory = !hasCategoryFilters || category === null || activeCategories.includes(category) || (option.id ?? option.ticker) === selectedKey || option.ticker === disabledTicker;
3510
- if (!search) return matchesCategory;
3725
+ const matchesCategory = !hasCategoryFilters || category === null || activeCategories.includes(category);
3726
+ const matchesNetwork = !networkFilter || option.network === networkFilter;
3727
+ const matchesVenue = !venueFilter || option.venue === venueFilter;
3728
+ if (!matchesCategory || !matchesNetwork || !matchesVenue) return false;
3729
+ if (!search) return true;
3511
3730
  const searchValue = search.toLowerCase();
3512
- const matchesSearch = option.ticker.toLowerCase().includes(searchValue) || (option.name?.toLowerCase().includes(searchValue) ?? false);
3513
- return matchesCategory && matchesSearch;
3731
+ const matchesSearch = option.ticker.toLowerCase().includes(searchValue) || (option.name?.toLowerCase().includes(searchValue) ?? false) || (option.assetId?.toLowerCase().includes(searchValue) ?? false) || (option.network?.toLowerCase().includes(searchValue) ?? false) || (option.category?.toLowerCase().includes(searchValue) ?? false);
3732
+ return matchesSearch;
3733
+ }).sort((a, b) => {
3734
+ if (a.id === selectedOptionId) return -1;
3735
+ if (b.id === selectedOptionId) return 1;
3736
+ return a.ticker.localeCompare(b.ticker);
3514
3737
  });
3515
3738
  const inlineOptions = filtered.map((option) => ({
3516
3739
  ...option,
3517
- id: option.id ?? option.ticker,
3740
+ id: option.id,
3518
3741
  label: option.ticker,
3519
- disabled: option.ticker === disabledTicker
3742
+ disabled: option.id === disabledId || option.ticker === disabledTicker
3520
3743
  }));
3521
3744
  const categoryLabelById = new Map(categories.map((category) => [category.id, category.label]));
3522
3745
  const renderAssetOption = (option, optionSelected, optionDisabled) => {
@@ -3536,7 +3759,14 @@ function AssetSelector({
3536
3759
  ),
3537
3760
  /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "flex min-w-0 flex-1 items-center justify-between gap-3 text-left", children: [
3538
3761
  /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "min-w-0 flex flex-col leading-tight", children: [
3539
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "truncate text-base font-bold tracking-wide text-white", children: option.name ?? option.ticker }),
3762
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3763
+ "span",
3764
+ {
3765
+ className: "max-w-full truncate text-base font-bold tracking-wide text-white",
3766
+ title: option.name ?? option.ticker,
3767
+ children: option.name ?? option.ticker
3768
+ }
3769
+ ),
3540
3770
  option.network && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "mt-1", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3541
3771
  NetworkBadge,
3542
3772
  {
@@ -3549,7 +3779,14 @@ function AssetSelector({
3549
3779
  ] }),
3550
3780
  /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { className: "flex shrink-0 flex-col items-end gap-0.5", children: [
3551
3781
  optionSelected ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "rounded-full border border-primary/25 bg-primary/[0.14] px-2 py-0.5 text-xxs font-bold uppercase tracking-wide text-primary", children: "Current" }) : optionCategoryLabel && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "rounded-full bg-surface-card px-2 py-0.5 text-tiny font-bold uppercase tracking-wide text-text-dimmed shadow-inner", children: optionCategoryLabel }),
3552
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "text-tiny font-medium uppercase tracking-wide text-white/35", children: optionDisabled ? "In use" : option.ticker })
3782
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3783
+ "span",
3784
+ {
3785
+ className: "max-w-24 truncate text-tiny font-medium uppercase tracking-wide text-white/35",
3786
+ title: optionDisabled ? "In use" : option.ticker,
3787
+ children: optionDisabled ? "In use" : option.ticker
3788
+ }
3789
+ )
3553
3790
  ] })
3554
3791
  ] })
3555
3792
  ] });
@@ -3640,6 +3877,18 @@ function AssetSelector({
3640
3877
  )
3641
3878
  ] }),
3642
3879
  hasCategoryFilters && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "mt-3 flex flex-wrap items-center gap-1.5", children: [
3880
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3881
+ "button",
3882
+ {
3883
+ type: "button",
3884
+ onClick: () => setActiveCategories(categories.map((category) => category.id)),
3885
+ className: cn(
3886
+ "rounded-full px-2.5 py-1 text-tiny font-bold uppercase tracking-wide shadow-inner transition-colors",
3887
+ activeCategories.length === categories.length ? "bg-primary/[0.14] text-primary" : "bg-surface-card text-text-dimmed hover:text-white/75"
3888
+ ),
3889
+ children: "All"
3890
+ }
3891
+ ),
3643
3892
  categories.map((category) => {
3644
3893
  const isActive = activeCategories.includes(category.id);
3645
3894
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
@@ -3657,28 +3906,19 @@ function AssetSelector({
3657
3906
  },
3658
3907
  category.id
3659
3908
  );
3660
- }),
3661
- activeCategories.length !== categories.length && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3662
- "button",
3663
- {
3664
- type: "button",
3665
- onClick: () => setActiveCategories(categories.map((category) => category.id)),
3666
- className: "ml-auto rounded-full px-2 py-1 text-tiny font-bold uppercase tracking-wide text-white/40 transition-colors hover:text-white/75",
3667
- children: "All"
3668
- }
3669
- )
3909
+ })
3670
3910
  ] })
3671
3911
  ] }),
3672
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ScrollArea, { className: "min-h-0", viewportClassName: "px-2 py-2 pb-6", children: filtered.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex flex-col items-center gap-2 px-4 py-10 text-center text-sm text-white/30", children: [
3912
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ScrollArea, { className: "min-h-0 flex-1", viewportClassName: "max-h-[56vh] px-2 py-2 pb-6", children: filtered.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex flex-col items-center gap-2 px-4 py-10 text-center text-sm text-white/30", children: [
3673
3913
  /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Icon, { name: "search", size: "md", className: "opacity-40" }),
3674
3914
  /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("span", { children: [
3675
- "No results",
3676
- search ? ` for "${search}"` : ""
3915
+ "No assets match ",
3916
+ search ? `"${search}"` : "the active filters"
3677
3917
  ] })
3678
3918
  ] }) : filtered.map((option) => {
3679
- const optionKey = option.id ?? option.ticker;
3680
- const optionSelected = optionKey === selectedKey;
3681
- const optionDisabled = option.ticker === disabledTicker;
3919
+ const optionKey = option.id;
3920
+ const optionSelected = optionKey === selectedOptionId;
3921
+ const optionDisabled = option.id === disabledId || option.ticker === disabledTicker;
3682
3922
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3683
3923
  "button",
3684
3924
  {
@@ -3711,7 +3951,7 @@ function AssetSelector({
3711
3951
  InlineSelector,
3712
3952
  {
3713
3953
  label,
3714
- value: selectedKey,
3954
+ value: selectedOptionId,
3715
3955
  options: inlineOptions,
3716
3956
  onChange: (ticker) => {
3717
3957
  onChange(ticker);
@@ -3798,6 +4038,18 @@ function AssetSelector({
3798
4038
  )
3799
4039
  ] }),
3800
4040
  hasCategoryFilters && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "mt-3 flex flex-wrap items-center gap-1.5", children: [
4041
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
4042
+ "button",
4043
+ {
4044
+ type: "button",
4045
+ onClick: () => setActiveCategories(categories.map((category) => category.id)),
4046
+ className: cn(
4047
+ "rounded-full px-2.5 py-1 text-tiny font-bold uppercase tracking-wide shadow-inner transition-colors",
4048
+ activeCategories.length === categories.length ? "bg-primary/[0.14] text-primary" : "bg-surface-card text-text-dimmed hover:text-white/75"
4049
+ ),
4050
+ children: "All"
4051
+ }
4052
+ ),
3801
4053
  categories.map((category) => {
3802
4054
  const isActive = activeCategories.includes(category.id);
3803
4055
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
@@ -3815,16 +4067,7 @@ function AssetSelector({
3815
4067
  },
3816
4068
  category.id
3817
4069
  );
3818
- }),
3819
- activeCategories.length !== categories.length && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3820
- "button",
3821
- {
3822
- type: "button",
3823
- onClick: () => setActiveCategories(categories.map((category) => category.id)),
3824
- className: "ml-auto rounded-full px-2 py-1 text-tiny font-bold uppercase tracking-wide text-white/40 transition-colors hover:text-white/75",
3825
- children: "All"
3826
- }
3827
- )
4070
+ })
3828
4071
  ] })
3829
4072
  ] })
3830
4073
  ] }),
@@ -3841,6 +4084,8 @@ var PERCENTAGES = [25, 50, 75, 100];
3841
4084
  function SwapInputCard({
3842
4085
  fromTicker,
3843
4086
  toTicker,
4087
+ fromSelectedId,
4088
+ toSelectedId,
3844
4089
  fromInput,
3845
4090
  fromOptions,
3846
4091
  toOptions,
@@ -3852,9 +4097,11 @@ function SwapInputCard({
3852
4097
  selectedPercentage = null,
3853
4098
  percentageDisabled = false,
3854
4099
  fromUnitLabel,
4100
+ fromDisplayUnit,
3855
4101
  fromUnitIsToggle = false,
3856
4102
  receiveAmount,
3857
4103
  receiveUnitLabel,
4104
+ receiveDisplayUnit,
3858
4105
  isLoadingQuote = false,
3859
4106
  quoteError,
3860
4107
  quoteRateText,
@@ -3876,6 +4123,15 @@ function SwapInputCard({
3876
4123
  onFlip,
3877
4124
  onSubmit
3878
4125
  }) {
4126
+ const availableDisplayText = formatDisplayAmountText(availableText, {
4127
+ unit: fromDisplayUnit
4128
+ });
4129
+ const maxDisplayText = maxText ? formatDisplayAmountText(maxText, {
4130
+ unit: fromDisplayUnit
4131
+ }) : void 0;
4132
+ const receiveDisplayText = receiveAmount ? formatDisplayAmountText(receiveAmount, {
4133
+ unit: receiveDisplayUnit
4134
+ }) : null;
3879
4135
  return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_jsx_runtime38.Fragment, { children: [
3880
4136
  /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "relative mb-3 flex flex-col rounded-3xl bg-white/[0.03] shadow-2xl shadow-black/40 backdrop-blur-2xl transition-all duration-300", children: [
3881
4137
  /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "p-3.5 pb-4", children: [
@@ -3906,23 +4162,25 @@ function SwapInputCard({
3906
4162
  compact: true,
3907
4163
  label: "From",
3908
4164
  selectedTicker: fromTicker,
4165
+ selectedId: fromSelectedId,
3909
4166
  options: fromOptions,
3910
4167
  categories,
3911
4168
  defaultActiveCategories,
3912
- disabledTicker: toTicker,
4169
+ disabledId: toSelectedId,
3913
4170
  onChange: onFromTickerChange
3914
4171
  }
3915
4172
  ),
3916
- /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "min-w-0 flex-1 text-right", children: [
4173
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "min-w-0 flex-1 overflow-hidden text-right", children: [
3917
4174
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3918
4175
  "input",
3919
4176
  {
3920
4177
  type: "text",
3921
4178
  inputMode: "decimal",
3922
4179
  value: fromInput,
4180
+ maxLength: 24,
3923
4181
  onChange: (event) => onFromInputChange(event.target.value),
3924
4182
  placeholder: "0",
3925
- className: "w-full border-none bg-transparent text-right text-2xl font-bold text-white placeholder:text-white/15 focus:outline-none"
4183
+ className: "w-full min-w-0 border-none bg-transparent text-right text-2xl font-bold tabular-nums text-white placeholder:text-white/15 focus:outline-none"
3926
4184
  }
3927
4185
  ),
3928
4186
  fromUnitIsToggle && onToggleFromUnit ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
@@ -3937,7 +4195,14 @@ function SwapInputCard({
3937
4195
  ) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "mt-0.5 text-xs text-muted-foreground", children: fromUnitLabel })
3938
4196
  ] })
3939
4197
  ] }),
3940
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "mt-2 flex items-center justify-between gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "text-xxs font-medium text-white/60", children: showMaxText && maxText ? `Max: ${maxText}` : `Available: ${availableText}` }) })
4198
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "mt-2 flex items-center justify-between gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4199
+ "p",
4200
+ {
4201
+ className: "min-w-0 max-w-full truncate text-xxs font-medium tabular-nums text-white/60",
4202
+ title: showMaxText && maxText ? `Max: ${maxText}` : `Available: ${availableText}`,
4203
+ children: showMaxText && maxDisplayText ? `Max: ${maxDisplayText}` : `Available: ${availableDisplayText}`
4204
+ }
4205
+ ) })
3941
4206
  ] }),
3942
4207
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "relative mx-6 flex h-px items-center justify-center bg-white/[0.08]", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "absolute flex h-11 w-11 items-center justify-center rounded-full bg-card shadow-lg shadow-black/35", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3943
4208
  "button",
@@ -3958,15 +4223,23 @@ function SwapInputCard({
3958
4223
  compact: true,
3959
4224
  label: "To",
3960
4225
  selectedTicker: toTicker,
4226
+ selectedId: toSelectedId,
3961
4227
  options: toOptions,
3962
4228
  categories,
3963
4229
  defaultActiveCategories,
3964
- disabledTicker: fromTicker,
4230
+ disabledId: fromSelectedId,
3965
4231
  onChange: onToTickerChange
3966
4232
  }
3967
4233
  ),
3968
4234
  /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "min-w-0 flex-1 text-right", children: [
3969
- isLoadingQuote ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "ml-auto h-8 w-28 animate-pulse rounded-lg bg-white/10" }) : receiveAmount ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-2xl font-bold text-primary", children: receiveAmount }) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-2xl font-bold text-white/15", children: "-" }),
4235
+ isLoadingQuote ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "ml-auto h-8 w-28 animate-pulse rounded-lg bg-white/10" }) : receiveAmount ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4236
+ "span",
4237
+ {
4238
+ className: "block max-w-full truncate text-2xl font-bold tabular-nums text-primary",
4239
+ title: receiveAmount,
4240
+ children: receiveDisplayText
4241
+ }
4242
+ ) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "text-2xl font-bold text-white/15", children: "-" }),
3970
4243
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("p", { className: "mt-0.5 text-xs text-muted-foreground", children: receiveUnitLabel || toTicker || "-" })
3971
4244
  ] })
3972
4245
  ] })
@@ -5273,7 +5546,7 @@ var KEYFRAMES = `
5273
5546
  var MobileHeroAnimation = ({
5274
5547
  size = 280,
5275
5548
  className,
5276
- iconBasePath = "/icons"
5549
+ iconBasePath
5277
5550
  }) => {
5278
5551
  const containerRef = (0, import_react13.useRef)(null);
5279
5552
  const [reducedMotion, setReducedMotion] = (0, import_react13.useState)(false);
@@ -5490,7 +5763,7 @@ var MobileHeroAnimation = ({
5490
5763
  }, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
5491
5764
  "img",
5492
5765
  {
5493
- src: `${iconBasePath}/${protocol.iconSuffix}`,
5766
+ src: iconBasePath ? `${iconBasePath}/${protocol.iconSuffix}` : protocolIcons[protocol.network] ?? protocol.iconSuffix,
5494
5767
  alt: protocol.name,
5495
5768
  style: { width: 20, height: 20, objectFit: "contain" }
5496
5769
  }
@@ -8006,6 +8279,7 @@ function DepositInvoiceGeneration({
8006
8279
  WithdrawSuccess,
8007
8280
  buttonVariants,
8008
8281
  cn,
8282
+ formatDisplayAmountText,
8009
8283
  getAccountNetworkLabel,
8010
8284
  getAccountNetworkUi,
8011
8285
  getAccountStatusUi,