@agg-build/ui 1.2.11 → 1.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/{chunk-J7K2U44E.mjs → chunk-3JXBOU24.mjs} +110 -60
  2. package/dist/{chunk-3ZSNHGAB.mjs → chunk-4WBQTUPW.mjs} +314 -58
  3. package/dist/{chunk-54PCEK6G.mjs → chunk-IBOE7DRY.mjs} +1 -1
  4. package/dist/{chunk-YP75TIY6.mjs → chunk-J6WELNCX.mjs} +3 -3
  5. package/dist/{chunk-ENAGASVU.mjs → chunk-U55T5BPE.mjs} +406 -337
  6. package/dist/{chunk-SJLHOAKK.mjs → chunk-X3KCFWXN.mjs} +936 -650
  7. package/dist/{chunk-NWJHFGBZ.mjs → chunk-YSW4ULL5.mjs} +1 -1
  8. package/dist/events.js +1593 -886
  9. package/dist/events.mjs +3 -3
  10. package/dist/index.js +4211 -3198
  11. package/dist/index.mjs +480 -105
  12. package/dist/modals.js +1164 -923
  13. package/dist/modals.mjs +3 -3
  14. package/dist/pages.js +1975 -1492
  15. package/dist/pages.mjs +6 -6
  16. package/dist/primitives.js +928 -649
  17. package/dist/primitives.mjs +1 -1
  18. package/dist/styles.css +1 -1
  19. package/dist/tailwind.css +1 -1
  20. package/dist/trading.js +641 -444
  21. package/dist/trading.mjs +4 -4
  22. package/dist/types/agg-provider.d.mts +27 -0
  23. package/dist/types/agg-provider.d.ts +27 -0
  24. package/dist/types/events/list/event-list-tabs.d.mts +6 -1
  25. package/dist/types/events/list/event-list-tabs.d.ts +6 -1
  26. package/dist/types/index.d.mts +2 -0
  27. package/dist/types/index.d.ts +2 -0
  28. package/dist/types/notifications/agg-notification-events-provider.d.mts +35 -0
  29. package/dist/types/notifications/agg-notification-events-provider.d.ts +35 -0
  30. package/dist/types/notifications/agg-toast-provider.d.mts +27 -0
  31. package/dist/types/notifications/agg-toast-provider.d.ts +27 -0
  32. package/dist/types/notifications/deposit-notification-events.d.mts +10 -0
  33. package/dist/types/notifications/deposit-notification-events.d.ts +10 -0
  34. package/dist/types/notifications/index.d.mts +2 -0
  35. package/dist/types/notifications/index.d.ts +2 -0
  36. package/dist/types/primitives/button/button.types.d.mts +4 -0
  37. package/dist/types/primitives/button/button.types.d.ts +4 -0
  38. package/dist/types/primitives/button/index.d.mts +1 -1
  39. package/dist/types/primitives/button/index.d.ts +1 -1
  40. package/dist/types/primitives/icon/registry.d.mts +16 -0
  41. package/dist/types/primitives/icon/registry.d.ts +16 -0
  42. package/dist/types/primitives/icon/svg/sort-end-date.d.mts +5 -0
  43. package/dist/types/primitives/icon/svg/sort-end-date.d.ts +5 -0
  44. package/dist/types/primitives/icon/svg/sort-top-arbitrage.d.mts +5 -0
  45. package/dist/types/primitives/icon/svg/sort-top-arbitrage.d.ts +5 -0
  46. package/dist/types/primitives/icon/svg/sort-volume-24hr.d.mts +5 -0
  47. package/dist/types/primitives/icon/svg/sort-volume-24hr.d.ts +5 -0
  48. package/dist/types/primitives/icon/svg/sort-volume.d.mts +5 -0
  49. package/dist/types/primitives/icon/svg/sort-volume.d.ts +5 -0
  50. package/dist/types/primitives/select/index.d.mts +1 -1
  51. package/dist/types/primitives/select/index.d.ts +1 -1
  52. package/dist/types/primitives/select/select.types.d.mts +9 -0
  53. package/dist/types/primitives/select/select.types.d.ts +9 -0
  54. package/dist/types/primitives/toast/toast.types.d.mts +3 -0
  55. package/dist/types/primitives/toast/toast.types.d.ts +3 -0
  56. package/dist/types/profile/index.d.mts +1 -1
  57. package/dist/types/profile/index.d.ts +1 -1
  58. package/dist/types/profile/profile-modal.constants.d.mts +2 -2
  59. package/dist/types/profile/profile-modal.constants.d.ts +2 -2
  60. package/dist/types/profile/tabs/accounts-wallets-tab.d.mts +2 -17
  61. package/dist/types/profile/tabs/accounts-wallets-tab.d.ts +2 -17
  62. package/dist/types/profile/tabs/trading-access-tab.d.mts +15 -0
  63. package/dist/types/profile/tabs/trading-access-tab.d.ts +15 -0
  64. package/dist/types/trading/place-order/index.place-order.utils.d.mts +1 -1
  65. package/dist/types/trading/place-order/index.place-order.utils.d.ts +1 -1
  66. package/package.json +2 -2
@@ -8,10 +8,10 @@ import {
8
8
  getTradingValueLabel,
9
9
  getTradingVenueLabel,
10
10
  resolveOrderEligibilityMessage
11
- } from "./chunk-54PCEK6G.mjs";
11
+ } from "./chunk-IBOE7DRY.mjs";
12
12
  import {
13
13
  GeoBlockBanner
14
- } from "./chunk-NWJHFGBZ.mjs";
14
+ } from "./chunk-YSW4ULL5.mjs";
15
15
  import {
16
16
  AGG_TERMS_OF_SERVICE_URL,
17
17
  Button,
@@ -37,7 +37,7 @@ import {
37
37
  formatUsd,
38
38
  getMotionClassName,
39
39
  skeletonViews
40
- } from "./chunk-SJLHOAKK.mjs";
40
+ } from "./chunk-X3KCFWXN.mjs";
41
41
 
42
42
  // src/trading/types.ts
43
43
  import { Venue, enumGuard, isFiniteNonNeg, safeParse } from "@agg-build/sdk";
@@ -82,11 +82,11 @@ import {
82
82
  getWalletAddressFromUserProfile,
83
83
  invalidateBalanceQueries,
84
84
  invalidatePositionQueries,
85
+ mergeBestPricesPreferringLive,
85
86
  requestAggAuthChooserOpen,
86
87
  resolveEventTradingState,
87
88
  resolveMarketTradingState,
88
89
  resolveOrderEligibility,
89
- TradeSide,
90
90
  useAggAuthContext,
91
91
  useAggBalanceState,
92
92
  useAggClient as useAggClient2,
@@ -100,7 +100,6 @@ import {
100
100
  useLiveBestPrices,
101
101
  useLiveOutcomePrices,
102
102
  useQueryClient,
103
- mergeBestPricesPreferringLive,
104
103
  useSdkUiConfig,
105
104
  useSmartRoute
106
105
  } from "@agg-build/hooks";
@@ -1222,6 +1221,19 @@ var VENUE_UNAVAILABLE_ERROR_PATTERN = /\b(unavailable|unreachable|timeout|timed
1222
1221
  var ALCHEMY_SPONSORSHIP_ERROR_PATTERN = /\bsponsorship failed: sender has no balance of the token for erc20 sponsorship\b/i;
1223
1222
  var ALCHEMY_PREPARE_CALLS_ERROR_PATTERN = /\bwallet_prepareCalls\b/i;
1224
1223
  var DAG_CHECK_BALANCE_SHORTFALL_PATTERN = /\bInsufficient balance on chain\s+\d+\s+token\s+\S+:/i;
1224
+ var VENUE_CONNECTOR_UNREACHABLE_PATTERN = /\bvenue-connector\s+unreachable\b/i;
1225
+ var POLYMARKET_DEADLINE_TOO_SOON_PATTERN = /\bdeadline too soon\b/i;
1226
+ var SELL_NO_ONCHAIN_POSITION_PATTERN = /don'?t currently hold any on-chain shares/i;
1227
+ var VENUE_QUOTE_UNFILLABLE_PATTERN = /couldn'?t fill this order at the quoted price|no in-tolerance depth|couldn'?t fill this order at the quoted/i;
1228
+ var QUOTED_PRICE_UNAVAILABLE_PATTERN = /Quoted price is no longer available|missing a valid quoted price/i;
1229
+ var VENUE_MIN_ORDER_SIZE_PATTERN = /below (?:the )?(?:venue |Limitless'?s |Polymarket'?s |Hyperliquid'?s |predict\.fun'?s )?(?:0\.01-share )?minimum|Order amount too small/i;
1230
+ var SOURCE_BALANCE_CHANGED_PATTERN = /balance changed since the quote|wallet holds 0 (?:USDC|pUSD|of tokenId)|Polygon balance changed/i;
1231
+ var VENUE_MARKET_RESOLVED_PATTERN = /(?:Limitless|Myriad|Polymarket|Kalshi)?\s*market\s+(?:just\s+)?resolved|market just resolved/i;
1232
+ var DFLOW_WALLET_UNVERIFIED_PATTERN = /(?:wallet\s+needs\s+to\s+be\s+verified\s+with\s+dFlow|dflow\.net\/proof)/i;
1233
+ var VENUE_NO_QUOTE_PATH_PATTERN = /No active quote path/i;
1234
+ var SOLANA_BLOCKHASH_EXPIRED_PATTERN = /\b(blockhash(?:\s+(?:expired|not\s+found))?|TransactionExpiredBlockheightExceeded|transaction\s+expired)\b/i;
1235
+ var VENUE_RATE_LIMITED_PATTERN = /\b(429|rate[\s-]?limit(?:ed)?|too\s+many\s+requests|backoff)\b/i;
1236
+ var SERVICE_BLOCKED_ORDER_PATTERN = /Something on our side blocked this order/i;
1225
1237
  var ALCHEMY_BALANCE_REVERT_PATTERN = /\b(transfer amount exceeds balance|transferFrom failed|insufficient balance|insufficient funds)\b/i;
1226
1238
  var ALCHEMY_REVERT_DATA_SELECTOR_PATTERN = /\brevertData["']?:?\s*['"]?(0x[0-9a-fA-F]{8})/i;
1227
1239
  var REVERT_SELECTOR_MESSAGES = {
@@ -1255,6 +1267,12 @@ var friendlyTerminatedStatusMessage = (status) => {
1255
1267
  if (normalized === "rejected") {
1256
1268
  return "The venue rejected your order. Please try again.";
1257
1269
  }
1270
+ if (normalized === "failed") {
1271
+ return "Order didn't settle on-chain. Please try again.";
1272
+ }
1273
+ if (normalized === "unmatched") {
1274
+ return "No liquidity matched your order at the quoted price. Try a smaller size or re-quote.";
1275
+ }
1258
1276
  return "Your order did not fill. Please try again.";
1259
1277
  };
1260
1278
  var tryParseJsonErrorValue = (value) => {
@@ -1289,12 +1307,51 @@ var normalizePlaceOrderErrorMessage = ({
1289
1307
  fallbackMessage,
1290
1308
  labels
1291
1309
  }) => {
1292
- var _a, _b;
1310
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
1293
1311
  const extractedMessage = extractPlaceOrderErrorMessage(errorMessage);
1294
1312
  if (!extractedMessage) return fallbackMessage;
1295
1313
  if (DAG_CHECK_BALANCE_SHORTFALL_PATTERN.test(extractedMessage)) {
1296
1314
  return (_a = labels == null ? void 0 : labels.quoteBalanceMismatch) != null ? _a : "Quote balance mismatch. Try a different amount.";
1297
1315
  }
1316
+ if (VENUE_CONNECTOR_UNREACHABLE_PATTERN.test(extractedMessage)) {
1317
+ return (_b = labels == null ? void 0 : labels.serviceTemporarilyUnavailable) != null ? _b : "Service temporarily unavailable. Please try again in a moment.";
1318
+ }
1319
+ if (POLYMARKET_DEADLINE_TOO_SOON_PATTERN.test(extractedMessage)) {
1320
+ return (_c = labels == null ? void 0 : labels.orderDeadlineExpiredBeforeSubmission) != null ? _c : "Order deadline expired before submission. Please try again.";
1321
+ }
1322
+ if (DFLOW_WALLET_UNVERIFIED_PATTERN.test(extractedMessage)) {
1323
+ return (_d = labels == null ? void 0 : labels.dflowWalletUnverified) != null ? _d : "Your Solana wallet needs to be verified with dFlow before you can trade Kalshi markets. Verify at https://dflow.net/proof, then try again.";
1324
+ }
1325
+ if (SELL_NO_ONCHAIN_POSITION_PATTERN.test(extractedMessage)) {
1326
+ return (_e = labels == null ? void 0 : labels.sellNoOnchainPosition) != null ? _e : "You don't currently hold any on-chain shares of this outcome. If you just sold or redeemed elsewhere, your position display will refresh shortly \u2014 try again after that.";
1327
+ }
1328
+ if (VENUE_MARKET_RESOLVED_PATTERN.test(extractedMessage)) {
1329
+ return (_f = labels == null ? void 0 : labels.venueMarketResolved) != null ? _f : "This market just resolved. Pick a different market or wait for the next round.";
1330
+ }
1331
+ if (VENUE_NO_QUOTE_PATH_PATTERN.test(extractedMessage)) {
1332
+ return (_g = labels == null ? void 0 : labels.venueNoQuotePath) != null ? _g : "No active quote path for this market right now. Try a different size, or wait a moment and re-quote.";
1333
+ }
1334
+ if (QUOTED_PRICE_UNAVAILABLE_PATTERN.test(extractedMessage)) {
1335
+ return (_h = labels == null ? void 0 : labels.quoteUnavailable) != null ? _h : "Quote temporarily unavailable. Please try again.";
1336
+ }
1337
+ if (VENUE_QUOTE_UNFILLABLE_PATTERN.test(extractedMessage)) {
1338
+ return (_i = labels == null ? void 0 : labels.venueQuoteUnfillable) != null ? _i : "The venue couldn't fill this order at the quoted price right now. Try a smaller size, a higher slippage tolerance, or wait a moment and re-quote.";
1339
+ }
1340
+ if (VENUE_MIN_ORDER_SIZE_PATTERN.test(extractedMessage)) {
1341
+ return (_j = labels == null ? void 0 : labels.venueMinOrderSize) != null ? _j : "Order size is below the venue minimum. Try a larger amount.";
1342
+ }
1343
+ if (SOURCE_BALANCE_CHANGED_PATTERN.test(extractedMessage)) {
1344
+ return (_k = labels == null ? void 0 : labels.sourceBalanceChanged) != null ? _k : "Your balance changed since the quote. Refresh and try again, or pick a smaller amount.";
1345
+ }
1346
+ if (SOLANA_BLOCKHASH_EXPIRED_PATTERN.test(extractedMessage)) {
1347
+ return (_l = labels == null ? void 0 : labels.solanaBlockhashExpired) != null ? _l : "Solana transaction expired before submission. Please re-quote and try again.";
1348
+ }
1349
+ if (VENUE_RATE_LIMITED_PATTERN.test(extractedMessage)) {
1350
+ return (_m = labels == null ? void 0 : labels.venueRateLimited) != null ? _m : "The venue is rate-limiting requests right now. Please wait a moment and try again.";
1351
+ }
1352
+ if (SERVICE_BLOCKED_ORDER_PATTERN.test(extractedMessage)) {
1353
+ return (_n = labels == null ? void 0 : labels.serviceBlockedOrder) != null ? _n : "Something on our side blocked this order. Please contact support if it keeps happening \u2014 retrying with the same quote will hit the same issue.";
1354
+ }
1298
1355
  if (ALCHEMY_BALANCE_REVERT_PATTERN.test(extractedMessage)) {
1299
1356
  return "Your balance changed since the quote. Please refresh and try again.";
1300
1357
  }
@@ -1313,7 +1370,7 @@ var normalizePlaceOrderErrorMessage = ({
1313
1370
  }
1314
1371
  const terminatedMatch = extractedMessage.match(VENUE_TERMINATED_STATUS_PATTERN);
1315
1372
  if (terminatedMatch) {
1316
- return friendlyTerminatedStatusMessage((_b = terminatedMatch[1]) != null ? _b : "");
1373
+ return friendlyTerminatedStatusMessage((_o = terminatedMatch[1]) != null ? _o : "");
1317
1374
  }
1318
1375
  return extractedMessage;
1319
1376
  };
@@ -1862,17 +1919,17 @@ var PlaceOrderSuccessView = ({
1862
1919
  onDone,
1863
1920
  onShare: _onShare
1864
1921
  }) => {
1865
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
1922
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
1866
1923
  const [isExecutionDetailsExpanded, setIsExecutionDetailsExpanded] = useState2(true);
1867
- const newTradeLabel = (_a = tradingLabels.orderNewTrade) != null ? _a : "New Trade";
1868
- const _shareLabel = (_b = tradingLabels.orderShare) != null ? _b : "Share";
1924
+ const doneLabel = tradingLabels.orderDone;
1925
+ const _shareLabel = (_a = tradingLabels.orderShare) != null ? _a : "Share";
1869
1926
  const potentialReturnLabel = summary.potentialReturnLabel && tradingLabels.potentialReturnBonus ? tradingLabels.potentialReturnBonus(summary.potentialReturnLabel) : summary.potentialReturnLabel ? `+${summary.potentialReturnLabel} Better Payout` : null;
1870
- const resolvedActionLabel = (_c = summary.actionLabel) != null ? _c : tradingLabels.orderSuccessTitle;
1871
- const resolvedTradeSide = (_d = summary.tradeSide) != null ? _d : "buy";
1872
- const resolvedAmountLabel = (_e = summary.amountLabel) != null ? _e : resolvedTradeSide === "sell" ? summary.shares : summary.estimatedCost;
1873
- const resolvedToWinLabel = (_f = summary.toWinLabel) != null ? _f : resolvedTradeSide === "sell" ? summary.estimatedCost : resolveBuyToWinLabel(summary.shares);
1874
- const executionStepGroups = (_g = summary.executionStepGroups) != null ? _g : [];
1875
- const finalStep = (_h = executionStepGroups.at(-1)) == null ? void 0 : _h[0];
1927
+ const resolvedActionLabel = (_b = summary.actionLabel) != null ? _b : tradingLabels.orderSuccessTitle;
1928
+ const resolvedTradeSide = (_c = summary.tradeSide) != null ? _c : "buy";
1929
+ const resolvedAmountLabel = (_d = summary.amountLabel) != null ? _d : resolvedTradeSide === "sell" ? summary.shares : summary.estimatedCost;
1930
+ const resolvedToWinLabel = (_e = summary.toWinLabel) != null ? _e : resolvedTradeSide === "sell" ? summary.estimatedCost : resolveBuyToWinLabel(summary.shares);
1931
+ const executionStepGroups = (_f = summary.executionStepGroups) != null ? _f : [];
1932
+ const finalStep = (_g = executionStepGroups.at(-1)) == null ? void 0 : _g[0];
1876
1933
  const detailedStepGroups = executionStepGroups.slice(0, -1);
1877
1934
  const hasExecutionDetails = detailedStepGroups.length > 0;
1878
1935
  const resolveStepIconName = (tone) => {
@@ -1887,7 +1944,7 @@ var PlaceOrderSuccessView = ({
1887
1944
  /* @__PURE__ */ jsx3(
1888
1945
  RemoteImage,
1889
1946
  {
1890
- src: (_i = summary.eventImage) != null ? _i : null,
1947
+ src: (_h = summary.eventImage) != null ? _h : null,
1891
1948
  alt: "",
1892
1949
  className: "h-12 w-12 shrink-0 overflow-hidden rounded-agg-lg object-cover"
1893
1950
  }
@@ -2007,7 +2064,7 @@ var PlaceOrderSuccessView = ({
2007
2064
  ] }),
2008
2065
  summary.potentialReturnLabel ? /* @__PURE__ */ jsxs2("div", { className: "flex w-full flex-col items-center justify-center gap-1 overflow-hidden rounded-agg-lg border border-agg-primary/50 bg-gradient-to-b from-agg-primary/8 to-agg-primary/15 p-3 text-center", children: [
2009
2066
  /* @__PURE__ */ jsx3("p", { className: "bg-gradient-to-r from-agg-primary to-agg-primary-hover bg-clip-text text-agg-lg font-agg-bold leading-[28px] text-transparent", children: potentialReturnLabel }),
2010
- /* @__PURE__ */ jsx3("p", { className: "text-agg-xs leading-agg-4 text-agg-foreground", children: (_j = tradingLabels.withSmartRouting) != null ? _j : "with Smart Routing" })
2067
+ /* @__PURE__ */ jsx3("p", { className: "text-agg-xs leading-agg-4 text-agg-foreground", children: (_i = tradingLabels.withSmartRouting) != null ? _i : "with Smart Routing" })
2011
2068
  ] }) : null,
2012
2069
  /* @__PURE__ */ jsx3("div", { className: "agg-order-success-actions flex gap-3", children: /* @__PURE__ */ jsx3(
2013
2070
  Button,
@@ -2015,9 +2072,9 @@ var PlaceOrderSuccessView = ({
2015
2072
  variant: "secondary",
2016
2073
  size: "large",
2017
2074
  className: "flex-1",
2018
- "aria-label": newTradeLabel,
2075
+ "aria-label": doneLabel,
2019
2076
  onClick: onDone,
2020
- children: newTradeLabel
2077
+ children: doneLabel
2021
2078
  }
2022
2079
  ) })
2023
2080
  ] }) });
@@ -2334,17 +2391,10 @@ var PlaceOrderResolvedView = ({
2334
2391
  resolvedClaim,
2335
2392
  className
2336
2393
  }) => {
2337
- var _a, _b, _c, _d, _e, _f, _g, _h;
2394
+ var _a, _b, _c, _d, _e;
2338
2395
  const labels = useLabels();
2339
2396
  const tradingLabels = labels.trading;
2340
2397
  const extendedTradingLabels = tradingLabels;
2341
- const winningOutcomeLabel = (_c = (_b = (_a = tradingState.winningOutcome) == null ? void 0 : _a.label) == null ? void 0 : _b.trim().toLowerCase()) != null ? _c : "";
2342
- const isPositiveWinningOutcome = ["yes", "up", "buy", "long", "true"].includes(
2343
- winningOutcomeLabel
2344
- );
2345
- const resolvedIconName = isPositiveWinningOutcome ? "success-check" : "close";
2346
- const resolvedIconToneClassName = isPositiveWinningOutcome ? "text-agg-success" : "text-agg-error";
2347
- const resolvedIconContainerClassName = isPositiveWinningOutcome ? "bg-agg-success/15" : "bg-agg-error/15";
2348
2398
  return /* @__PURE__ */ jsx4(
2349
2399
  Card,
2350
2400
  {
@@ -2361,9 +2411,9 @@ var PlaceOrderResolvedView = ({
2361
2411
  {
2362
2412
  className: cn(
2363
2413
  "flex h-15 w-15 items-center justify-center rounded-full",
2364
- resolvedIconContainerClassName
2414
+ "bg-agg-primary/15"
2365
2415
  ),
2366
- children: /* @__PURE__ */ jsx4(Icon, { name: resolvedIconName, className: cn("h-6 w-6", resolvedIconToneClassName) })
2416
+ children: /* @__PURE__ */ jsx4(Icon, { name: "success-check", className: cn("h-6 w-6", "text-agg-primary") })
2367
2417
  }
2368
2418
  ),
2369
2419
  /* @__PURE__ */ jsxs3(
@@ -2383,18 +2433,18 @@ var PlaceOrderResolvedView = ({
2383
2433
  resolvedClaim ? /* @__PURE__ */ jsxs3(Fragment2, { children: [
2384
2434
  /* @__PURE__ */ jsx4("div", { className: "h-px w-full bg-agg-separator" }),
2385
2435
  /* @__PURE__ */ jsxs3("div", { className: "flex w-full flex-col gap-5 p-6", children: [
2386
- /* @__PURE__ */ jsx4(Typography, { variant: "body-strong", className: "text-center", children: (_d = extendedTradingLabels.resolvedEarningsTitle) != null ? _d : "Your Earnings" }),
2436
+ /* @__PURE__ */ jsx4(Typography, { variant: "body-strong", className: "text-center", children: (_a = extendedTradingLabels.resolvedEarningsTitle) != null ? _a : "Your Earnings" }),
2387
2437
  /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-3 text-agg-sm leading-agg-5 text-agg-foreground", children: [
2388
2438
  resolvedClaim.resolutionDateLabel ? /* @__PURE__ */ jsxs3("div", { className: "flex items-center justify-between gap-4", children: [
2389
- /* @__PURE__ */ jsx4("span", { children: (_e = extendedTradingLabels.resolvedResolutionDateLabel) != null ? _e : "Resolution date" }),
2439
+ /* @__PURE__ */ jsx4("span", { children: (_b = extendedTradingLabels.resolvedResolutionDateLabel) != null ? _b : "Resolution date" }),
2390
2440
  /* @__PURE__ */ jsx4("span", { className: "font-agg-bold", children: resolvedClaim.resolutionDateLabel })
2391
2441
  ] }) : null,
2392
2442
  /* @__PURE__ */ jsxs3("div", { className: "flex items-center justify-between gap-4", children: [
2393
- /* @__PURE__ */ jsx4("span", { children: (_f = extendedTradingLabels.resolvedSharesLabel) != null ? _f : "Shares" }),
2443
+ /* @__PURE__ */ jsx4("span", { children: (_c = extendedTradingLabels.resolvedSharesLabel) != null ? _c : "Shares" }),
2394
2444
  /* @__PURE__ */ jsx4("span", { className: "font-agg-bold", children: resolvedClaim.sharesLabel })
2395
2445
  ] }),
2396
2446
  /* @__PURE__ */ jsxs3("div", { className: "flex items-center justify-between gap-4", children: [
2397
- /* @__PURE__ */ jsx4("span", { children: (_g = extendedTradingLabels.resolvedTotalPayoutLabel) != null ? _g : "Total payout" }),
2447
+ /* @__PURE__ */ jsx4("span", { children: (_d = extendedTradingLabels.resolvedTotalPayoutLabel) != null ? _d : "Total payout" }),
2398
2448
  /* @__PURE__ */ jsx4("span", { className: "font-agg-bold", children: resolvedClaim.totalPayoutLabel })
2399
2449
  ] })
2400
2450
  ] }),
@@ -2406,7 +2456,7 @@ var PlaceOrderResolvedView = ({
2406
2456
  onClick: resolvedClaim.onClaim,
2407
2457
  isLoading: resolvedClaim.isClaiming,
2408
2458
  disabled: resolvedClaim.isClaiming,
2409
- children: (_h = extendedTradingLabels.claimWinnings) != null ? _h : "Claim Winnings"
2459
+ children: (_e = extendedTradingLabels.claimWinnings) != null ? _e : "Claim Winnings"
2410
2460
  }
2411
2461
  ) : null
2412
2462
  ] })
@@ -3307,6 +3357,7 @@ var PlaceOrder = ({
3307
3357
  const activeQuoteData = (_B = (_A = selectedRouteCard == null ? void 0 : selectedRouteCard.quoteData) != null ? _A : smartRoute.data) != null ? _B : null;
3308
3358
  const visibleRouteCards = orderedRouteCards.length > PLACE_ORDER_ROUTE_COLLAPSED_CARD_COUNT && !isRoutesExpanded ? orderedRouteCards.slice(0, PLACE_ORDER_ROUTE_COLLAPSED_CARD_COUNT) : orderedRouteCards;
3309
3359
  const hasEnteredAmount = internalAmount > 0;
3360
+ const isQuoteLoading = hasEnteredAmount && (smartRoute.isFetching || smartRoute.isLoading);
3310
3361
  const isInsufficientBalance = !isSell && isAuthenticated && hasEnteredAmount && !isBalanceLoading && internalAmount > totalBalance;
3311
3362
  const isBelowMinimum = !isSell && hasEnteredAmount && internalAmount < MIN_BUY_ORDER_AMOUNT;
3312
3363
  const quoteStatus = useMemo2(() => {
@@ -3449,33 +3500,23 @@ var PlaceOrder = ({
3449
3500
  }, [selectedRouteCard, geoBlockedVenuesFromWarnings]);
3450
3501
  const shouldShowGeoBlockBanner = isTradingBlocked || selectedRouteGeoBlocked || isPrimaryVenueGeoBlocked;
3451
3502
  const actionLabel = `${internalTab === "buy" ? tradingLabels.buy : tradingLabels.sell} ${selectedOutcomeLabel}`.trim();
3452
- const isActionDisabled = isPrimaryActionDisabled || !orderEligibility.canPlaceOrder || isActionLoading || !hasEnteredAmount || !scopedSelectedMarket || isInsufficientBalance || isBelowMinimum || !selectedRouteCard || !selectedRouteCard.quoteData.quoteId || selectedRouteGeoBlocked || !isAuthenticated || quoteStatus !== void 0;
3503
+ const isActionDisabled = isPrimaryActionDisabled || !orderEligibility.canPlaceOrder || isActionLoading || !hasEnteredAmount || !scopedSelectedMarket || isInsufficientBalance || isBelowMinimum || isQuoteLoading || !selectedRouteCard || !selectedRouteCard.quoteData.quoteId || selectedRouteGeoBlocked || !isAuthenticated || quoteStatus !== void 0;
3453
3504
  const shouldShowSmartRouting = orderEligibility.canPlaceOrder && hasEnteredAmount && (orderedRouteCards.length > 0 || smartRoute.isFetching);
3454
- const shouldShowRouteToggle = orderedRouteCards.length > PLACE_ORDER_ROUTE_COLLAPSED_CARD_COUNT;
3455
- const handleStartNewTrade = useCallback2(() => {
3505
+ const shouldShowRouteToggle = !isQuoteLoading && orderedRouteCards.length > PLACE_ORDER_ROUTE_COLLAPSED_CARD_COUNT;
3506
+ const handleReturnToOrderForm = useCallback2(() => {
3456
3507
  const submittedSelection = submittedSelectionRef.current;
3457
3508
  submittedSelectionRef.current = null;
3458
3509
  setSubmissionProgressState(null);
3459
3510
  setSubmissionFeedback(null);
3460
- setInternalAmount(PLACE_ORDER_DEFAULT_AMOUNT);
3461
- setSellFilledForOutcomeId(null);
3462
- setInternalSlippage(DEFAULT_SLIPPAGE_VALUE);
3463
- setInternalTab("buy");
3464
- tradingContext == null ? void 0 : tradingContext.setTradeSide(TradeSide.Buy);
3465
3511
  setIsRoutesExpanded(false);
3466
3512
  setSelectedRouteCardId(null);
3467
- onAmountChange == null ? void 0 : onAmountChange(PLACE_ORDER_DEFAULT_AMOUNT);
3468
- onSlippageChange == null ? void 0 : onSlippageChange(formatPercentageValue(DEFAULT_SLIPPAGE_VALUE));
3469
- onTabChange == null ? void 0 : onTabChange("buy");
3470
3513
  if (submittedSelection && tradingContext) {
3471
3514
  tradingContext.selectMarketAndOutcome(
3472
3515
  submittedSelection.marketId,
3473
3516
  submittedSelection.outcomeId
3474
3517
  );
3475
- } else if (scopedSelectedEvent) {
3476
- tradingContext == null ? void 0 : tradingContext.initializeFromEvent(scopedSelectedEvent);
3477
3518
  }
3478
- }, [onAmountChange, onSlippageChange, onTabChange, scopedSelectedEvent, tradingContext]);
3519
+ }, [tradingContext]);
3479
3520
  const handleShareTrade = () => {
3480
3521
  var _a2, _b2;
3481
3522
  const shareText = (_b2 = (_a2 = submissionProgressState == null ? void 0 : submissionProgressState.summary) == null ? void 0 : _a2.shareText) == null ? void 0 : _b2.trim();
@@ -3615,8 +3656,8 @@ var PlaceOrder = ({
3615
3656
  ]);
3616
3657
  const handleRetrySubmission = useCallback2(() => __async(null, null, function* () {
3617
3658
  var _a2, _b2, _c2;
3618
- if (!orderEligibility.canPlaceOrder) {
3619
- handleStartNewTrade();
3659
+ if (!orderEligibility.canPlaceOrder || (failureSummary == null ? void 0 : failureSummary.kind) === "generic") {
3660
+ handleReturnToOrderForm();
3620
3661
  return;
3621
3662
  }
3622
3663
  setSubmissionFeedback(null);
@@ -3688,7 +3729,7 @@ var PlaceOrder = ({
3688
3729
  executionProgress.terminalOrderEvents,
3689
3730
  failureSummary == null ? void 0 : failureSummary.kind,
3690
3731
  handleExecuteQuote,
3691
- handleStartNewTrade,
3732
+ handleReturnToOrderForm,
3692
3733
  internalAmount,
3693
3734
  internalTab,
3694
3735
  isSell,
@@ -3719,7 +3760,7 @@ var PlaceOrder = ({
3719
3760
  className: resolvedStatusClassName,
3720
3761
  summary: submissionProgressState.summary,
3721
3762
  tradingLabels,
3722
- onDone: handleStartNewTrade,
3763
+ onDone: handleReturnToOrderForm,
3723
3764
  onShare: handleShareTrade
3724
3765
  }
3725
3766
  );
@@ -3733,7 +3774,7 @@ var PlaceOrder = ({
3733
3774
  summary: failureSummary,
3734
3775
  tradingLabels,
3735
3776
  onRetry: handleRetrySubmission,
3736
- onDone: handleStartNewTrade,
3777
+ onDone: handleReturnToOrderForm,
3737
3778
  onSkip: handleSkipToSuccess
3738
3779
  }
3739
3780
  );
@@ -4064,7 +4105,19 @@ var PlaceOrder = ({
4064
4105
  }
4065
4106
  ) : null
4066
4107
  ] }),
4067
- /* @__PURE__ */ jsx4("div", { className: "agg-route-list flex flex-col gap-2", children: visibleRouteCards.length > 0 ? visibleRouteCards.map((card) => {
4108
+ /* @__PURE__ */ jsx4("div", { className: "agg-route-list flex flex-col gap-2", children: isQuoteLoading ? /* @__PURE__ */ jsxs3(
4109
+ "div",
4110
+ {
4111
+ className: "agg-route-loading flex flex-col gap-2",
4112
+ role: "status",
4113
+ "aria-label": labels.common.loading,
4114
+ "aria-live": "polite",
4115
+ children: [
4116
+ /* @__PURE__ */ jsx4(PlaceOrderRouteCardSkeleton, {}),
4117
+ /* @__PURE__ */ jsx4(PlaceOrderRouteCardSkeleton, {})
4118
+ ]
4119
+ }
4120
+ ) : visibleRouteCards.length > 0 ? visibleRouteCards.map((card) => {
4068
4121
  return /* @__PURE__ */ jsx4(Fragment, { children: renderRouteCard({
4069
4122
  card,
4070
4123
  enableAnimations,
@@ -4073,12 +4126,9 @@ var PlaceOrder = ({
4073
4126
  onSelect: handleRouteCardSelect,
4074
4127
  tradingLabels
4075
4128
  }) }, card.id);
4076
- }) : smartRoute.isFetching ? /* @__PURE__ */ jsxs3(Fragment2, { children: [
4077
- /* @__PURE__ */ jsx4(PlaceOrderRouteCardSkeleton, {}),
4078
- /* @__PURE__ */ jsx4(PlaceOrderRouteCardSkeleton, {})
4079
- ] }) : null })
4129
+ }) : null })
4080
4130
  ] }) : null,
4081
- hasEnteredAmount && selectedRouteCard && orderEligibility.canPlaceOrder ? /* @__PURE__ */ jsxs3("div", { className: "agg-order-summary flex items-start justify-between gap-4", children: [
4131
+ hasEnteredAmount && selectedRouteCard && !isQuoteLoading && orderEligibility.canPlaceOrder ? /* @__PURE__ */ jsxs3("div", { className: "agg-order-summary flex items-start justify-between gap-4", children: [
4082
4132
  /* @__PURE__ */ jsxs3("div", { className: "agg-order-summary-meta flex flex-col", children: [
4083
4133
  /* @__PURE__ */ jsx4("p", { className: "agg-order-summary-label text-agg-base font-agg-bold leading-agg-6 text-agg-foreground", children: tradingLabels.toWin(internalTab) }),
4084
4134
  /* @__PURE__ */ jsx4("p", { className: "agg-order-summary-hint text-agg-sm leading-agg-5 text-agg-muted-foreground", children: displayedToWinHint })