@agg-build/ui 2.1.1 → 2.1.3

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 (74) hide show
  1. package/dist/{chunk-XHDGSRG7.mjs → chunk-BW7S2YR3.mjs} +1139 -308
  2. package/dist/{chunk-TERG43WW.mjs → chunk-R2YNZJZ3.mjs} +69 -27
  3. package/dist/{chunk-RPXRTXCY.mjs → chunk-T4YZGAYS.mjs} +22 -1
  4. package/dist/{chunk-IQT4I5B4.mjs → chunk-TAGPAADA.mjs} +2108 -767
  5. package/dist/{chunk-NK57KMYN.mjs → chunk-TBZWRUFB.mjs} +752 -589
  6. package/dist/{chunk-YJO6LMRT.mjs → chunk-VP76G6PN.mjs} +87 -25
  7. package/dist/{chunk-WU2C3C6K.mjs → chunk-XHE2VO3S.mjs} +4 -21
  8. package/dist/events.js +1014 -760
  9. package/dist/events.mjs +5 -3
  10. package/dist/index.js +9937 -7880
  11. package/dist/index.mjs +117 -456
  12. package/dist/modals.js +1 -1
  13. package/dist/modals.mjs +3 -3
  14. package/dist/pages.js +8513 -6380
  15. package/dist/pages.mjs +6 -6
  16. package/dist/primitives.js +85 -25
  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 +979 -402
  21. package/dist/trading.mjs +10 -6
  22. package/dist/types/events/item/event-list-item.utils.d.mts +1 -25
  23. package/dist/types/events/item/event-list-item.utils.d.ts +1 -25
  24. package/dist/types/events/item-details/index.d.mts +2 -1
  25. package/dist/types/events/item-details/index.d.ts +2 -1
  26. package/dist/types/events/market-details/market-details-graph-panel.d.mts +39 -0
  27. package/dist/types/events/market-details/market-details-graph-panel.d.ts +39 -0
  28. package/dist/types/events/market-details/market-details-outcome-button.d.mts +2 -1
  29. package/dist/types/events/market-details/market-details-outcome-button.d.ts +2 -1
  30. package/dist/types/events/market-details/market-details.types.d.mts +31 -0
  31. package/dist/types/events/market-details/market-details.types.d.ts +31 -0
  32. package/dist/types/events/market-details/market-details.utils.d.mts +3 -16
  33. package/dist/types/events/market-details/market-details.utils.d.ts +3 -16
  34. package/dist/types/events/shared/format-event-title.d.mts +24 -0
  35. package/dist/types/events/shared/format-event-title.d.ts +24 -0
  36. package/dist/types/events/shared/format-sports-event-time.d.mts +2 -0
  37. package/dist/types/events/shared/format-sports-event-time.d.ts +2 -0
  38. package/dist/types/events/shared/select-best-outcome.d.mts +88 -0
  39. package/dist/types/events/shared/select-best-outcome.d.ts +88 -0
  40. package/dist/types/notifications/agg-notification-events-provider.d.mts +10 -1
  41. package/dist/types/notifications/agg-notification-events-provider.d.ts +10 -1
  42. package/dist/types/pages/event-market/event-market.shared.d.mts +30 -0
  43. package/dist/types/pages/event-market/event-market.shared.d.ts +30 -0
  44. package/dist/types/pages/event-market/event-market.types.d.mts +7 -0
  45. package/dist/types/pages/event-market/event-market.types.d.ts +7 -0
  46. package/dist/types/pages/event-market/sports-event-market-page.d.mts +8 -0
  47. package/dist/types/pages/event-market/sports-event-market-page.d.ts +8 -0
  48. package/dist/types/pages/event-market/sports-event-market.fixtures.d.mts +13 -0
  49. package/dist/types/pages/event-market/sports-event-market.fixtures.d.ts +13 -0
  50. package/dist/types/pages/event-market/sports-event-market.utils.d.mts +156 -0
  51. package/dist/types/pages/event-market/sports-event-market.utils.d.ts +156 -0
  52. package/dist/types/pages/event-market/sports-line-rail.d.mts +17 -0
  53. package/dist/types/pages/event-market/sports-line-rail.d.ts +17 -0
  54. package/dist/types/pages/event-market/sports-market-card.d.mts +22 -0
  55. package/dist/types/pages/event-market/sports-market-card.d.ts +22 -0
  56. package/dist/types/pages/event-market/sports-markets.d.mts +13 -0
  57. package/dist/types/pages/event-market/sports-markets.d.ts +13 -0
  58. package/dist/types/primitives/state-message/index.d.mts +1 -1
  59. package/dist/types/primitives/state-message/index.d.ts +1 -1
  60. package/dist/types/primitives/state-message/state-message.types.d.mts +1 -1
  61. package/dist/types/primitives/state-message/state-message.types.d.ts +1 -1
  62. package/dist/types/trading/index.d.mts +2 -0
  63. package/dist/types/trading/index.d.ts +2 -0
  64. package/dist/types/trading/place-order/index.d.mts +1 -1
  65. package/dist/types/trading/place-order/index.d.ts +1 -1
  66. package/dist/types/trading/place-order/index.place-order.types.d.mts +30 -1
  67. package/dist/types/trading/place-order/index.place-order.types.d.ts +30 -1
  68. package/dist/types/trading/settlement/settlement-text.utils.d.mts +5 -2
  69. package/dist/types/trading/settlement/settlement-text.utils.d.ts +5 -2
  70. package/dist/types/trading/use-claim-winnings.d.mts +84 -0
  71. package/dist/types/trading/use-claim-winnings.d.ts +84 -0
  72. package/dist/types/trading/use-resolved-market-claim.d.mts +26 -0
  73. package/dist/types/trading/use-resolved-market-claim.d.ts +26 -0
  74. package/package.json +3 -3
@@ -22,7 +22,7 @@ import {
22
22
  resolveUnifiedOrderBookEntries,
23
23
  sortOutcomeSelectorOutcomes,
24
24
  useEventTradingContext
25
- } from "./chunk-TERG43WW.mjs";
25
+ } from "./chunk-R2YNZJZ3.mjs";
26
26
  import {
27
27
  AutocompleteSelect,
28
28
  Badge,
@@ -52,6 +52,7 @@ import {
52
52
  dedupeVenueMarketsById,
53
53
  detailsBaseCardClassName,
54
54
  filterEventsByTabValue,
55
+ formatEventTitleWithDateSuffix,
55
56
  formatMarketProbabilityPercent,
56
57
  formatPriceGapPercent,
57
58
  getMarketDetailsTabs,
@@ -72,7 +73,7 @@ import {
72
73
  sortCategoriesForNavigation,
73
74
  sortOutcomes,
74
75
  splitEventsByLifecycle
75
- } from "./chunk-YJO6LMRT.mjs";
76
+ } from "./chunk-VP76G6PN.mjs";
76
77
 
77
78
  // src/events/item/index.tsx
78
79
  import {
@@ -232,7 +233,7 @@ var normalizeEventListItemV2Comparison = ({
232
233
  return __spreadProps(__spreadValues({}, row), {
233
234
  prices
234
235
  });
235
- });
236
+ }).filter((row) => row.prices.length === 0 || row.prices.some((price) => price.price > 0));
236
237
  const matchedVenues = collectMatchedVenues(rows);
237
238
  return {
238
239
  rows,
@@ -353,7 +354,13 @@ var EventListItemContent = ({
353
354
  const config = useSdkUiConfig();
354
355
  const labels = useLabels();
355
356
  const allVenueMarkets = useMemo(() => event.venueMarkets, [event.venueMarkets]);
356
- const resolvedTitle = event.title;
357
+ const resolvedTitle = formatEventTitleWithDateSuffix({
358
+ title: event.title,
359
+ categories: event.categories,
360
+ structureType: event.structureType,
361
+ gameStartTime: event.gameStartTime,
362
+ endDate: event.endDate
363
+ });
357
364
  const resolvedImage = event.image;
358
365
  const visibleVenueLogos = useMemo(() => {
359
366
  var _a2;
@@ -379,8 +386,10 @@ var EventListItemContent = ({
379
386
  } = useVenueMarkets({
380
387
  venueEventId: event.id,
381
388
  enabled: shouldEnableLazyMarketLoading && isLazyMarketsQueryEnabled,
382
- sortBy: "yesPrice",
383
- sortDir: "desc",
389
+ // List/tile surface: axis/dates sort by volume so the scroll tail matches
390
+ // the volume-sorted top-3 (the detail page omits context and keeps the
391
+ // structured threshold/date order).
392
+ context: "list",
384
393
  status: marketStatus
385
394
  });
386
395
  const resolvedOutcomeMarkets = useMemo(() => {
@@ -2495,11 +2504,20 @@ var EventListItemDetailsContent = ({
2495
2504
  if (typeof resolvedVolume !== "number") return "";
2496
2505
  return `${config.formatting.formatCompactCurrency(resolvedVolume)} ${labels.eventItemDetails.volumeSuffix}`;
2497
2506
  }, [config, event.volume, labels.eventItemDetails.volumeSuffix, venueMarkets]);
2507
+ const resolvedTitle = useMemo5(() => {
2508
+ return formatEventTitleWithDateSuffix({
2509
+ title: event.title,
2510
+ categories: event.categories,
2511
+ structureType: event.structureType,
2512
+ gameStartTime: event.gameStartTime,
2513
+ endDate: event.endDate
2514
+ });
2515
+ }, [event.categories, event.gameStartTime, event.endDate, event.structureType, event.title]);
2498
2516
  return /* @__PURE__ */ jsxs4(
2499
2517
  Card,
2500
2518
  {
2501
2519
  className: cn("group/agg-event-details", detailsBaseCardClassName, classNames == null ? void 0 : classNames.root),
2502
- "aria-label": ariaLabel != null ? ariaLabel : event.title,
2520
+ "aria-label": ariaLabel != null ? ariaLabel : resolvedTitle,
2503
2521
  onClick: () => {
2504
2522
  onClick == null ? void 0 : onClick(event);
2505
2523
  },
@@ -2534,7 +2552,7 @@ var EventListItemDetailsContent = ({
2534
2552
  "truncate text-wrap wrap-break-word line-clamp-2",
2535
2553
  classNames == null ? void 0 : classNames.title
2536
2554
  ),
2537
- children: event.title
2555
+ children: resolvedTitle
2538
2556
  }
2539
2557
  ),
2540
2558
  venueMarkets.length > 1 ? /* @__PURE__ */ jsx5(
@@ -3228,49 +3246,82 @@ OrderbookWithStates.displayName = "OrderbookWithStates";
3228
3246
 
3229
3247
  // src/events/market-details/index.tsx
3230
3248
  import {
3231
- CHART_TIME_RANGES as CHART_TIME_RANGES2,
3232
3249
  findLivePriceById,
3233
3250
  MarketStatus,
3234
3251
  mergeBestPricesPreferringLive as mergeBestPricesPreferringLive2,
3235
3252
  optimizedImageUrl as optimizedImageUrl3,
3236
3253
  resolveMarketTradingState,
3237
3254
  useEventTradingContext as useEventTradingContext2,
3238
- useLabels as useLabels6,
3255
+ useEventOrderbookData as useEventOrderbookData2,
3256
+ useLabels as useLabels7,
3239
3257
  useLiveBestPrices as useLiveBestPrices2,
3258
+ useLiveBestPriceCandidates,
3240
3259
  useLiveOutcomePrices as useLiveOutcomePrices2,
3241
- useMarketChart as useMarketChart2,
3242
3260
  useMarketOrderbook,
3243
- useRollingChartWindow as useRollingChartWindow2,
3244
- useSdkUiConfig as useSdkUiConfig3,
3261
+ useSdkUiConfig as useSdkUiConfig4,
3245
3262
  useVenueMarkets as useVenueMarkets2,
3246
3263
  useViewportMidpoints
3247
3264
  } from "@agg-build/hooks";
3248
- import { useEffect as useEffect4, useId, useMemo as useMemo6, useRef as useRef5, useState as useState4 } from "react";
3265
+ import { useEffect as useEffect5, useId, useMemo as useMemo7, useState as useState5 } from "react";
3249
3266
 
3250
- // src/events/shared/display-outcome-venue.ts
3267
+ // src/events/shared/select-best-outcome.ts
3251
3268
  var normalizeOutcomeLabel2 = (label) => {
3252
3269
  return typeof label === "string" ? label.trim().toLowerCase() : "";
3253
3270
  };
3254
- var getDisplayOutcomeVenue = ({
3255
- outcomeId,
3256
- outcomeLabel,
3257
- selection,
3258
- bestMidpointVenue,
3259
- bestVenueByOutcomeId,
3260
- bestPriceVenuesByOutcomeId,
3261
- fallbackVenue
3262
- }) => {
3263
- var _a;
3264
- if (selection && outcomeId) {
3265
- const sideVenues = bestPriceVenuesByOutcomeId == null ? void 0 : bestPriceVenuesByOutcomeId.get(outcomeId);
3266
- if (selection === "buy" && (sideVenues == null ? void 0 : sideVenues.bestAskVenue)) return sideVenues.bestAskVenue;
3267
- if (selection === "sell" && (sideVenues == null ? void 0 : sideVenues.bestBidVenue)) return sideVenues.bestBidVenue;
3271
+ var selectBestOutcomeCandidate = (args) => {
3272
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
3273
+ const { outcomeId, selection } = args;
3274
+ if (!outcomeId) return void 0;
3275
+ const resolveVenueMarketId = (venue) => {
3276
+ var _a2, _b2;
3277
+ return venue ? (_b2 = (_a2 = args.venueMarketIdByVenue) == null ? void 0 : _a2.get(venue)) != null ? _b2 : void 0 : void 0;
3278
+ };
3279
+ const make = (price, venue, source, updatedAt) => ({
3280
+ price,
3281
+ venue: venue != null ? venue : void 0,
3282
+ venueMarketId: resolveVenueMarketId(venue != null ? venue : void 0),
3283
+ outcomeId,
3284
+ source,
3285
+ updatedAt: updatedAt != null ? updatedAt : void 0
3286
+ });
3287
+ if (selection === "buy" || selection === "sell") {
3288
+ const wsSidePrice = selection === "buy" ? (_a = args.live) == null ? void 0 : _a.bestAsk : (_b = args.live) == null ? void 0 : _b.bestBid;
3289
+ const wsSideVenue = selection === "buy" ? (_c = args.live) == null ? void 0 : _c.bestAskVenue : (_d = args.live) == null ? void 0 : _d.bestBidVenue;
3290
+ if (wsSidePrice != null) {
3291
+ return make(wsSidePrice, wsSideVenue, "ws", (_e = args.live) == null ? void 0 : _e.updatedAt);
3292
+ }
3293
+ const restSidePrice = selection === "buy" ? (_f = args.restBest) == null ? void 0 : _f.bestAsk : (_g = args.restBest) == null ? void 0 : _g.bestBid;
3294
+ const restSideVenue = selection === "buy" ? (_h = args.restBestVenues) == null ? void 0 : _h.bestAskVenue : (_i = args.restBestVenues) == null ? void 0 : _i.bestBidVenue;
3295
+ if (restSidePrice != null) {
3296
+ return make(restSidePrice, restSideVenue, "rest-best", void 0);
3297
+ }
3268
3298
  }
3269
- if (normalizeOutcomeLabel2(outcomeLabel) === "yes" && bestMidpointVenue) {
3270
- return bestMidpointVenue;
3299
+ if (((_j = args.live) == null ? void 0 : _j.midpoint) != null) {
3300
+ return make(args.live.midpoint, args.live.midpointVenue, "ws", args.live.updatedAt);
3271
3301
  }
3272
- const bestVenue = outcomeId ? bestVenueByOutcomeId == null ? void 0 : bestVenueByOutcomeId.get(outcomeId) : void 0;
3273
- return (_a = bestVenue != null ? bestVenue : fallbackVenue) != null ? _a : void 0;
3302
+ if (normalizeOutcomeLabel2(args.outcomeLabel) === "yes" && args.bestMidpoint != null && args.bestMidpointVenue) {
3303
+ return make(args.bestMidpoint, args.bestMidpointVenue, "rest-midpoint", void 0);
3304
+ }
3305
+ if (args.restMidpoint != null) {
3306
+ return make(args.restMidpoint, args.restMidpointVenue, "rest-midpoint", void 0);
3307
+ }
3308
+ if (args.staticPrice != null) {
3309
+ return make(args.staticPrice, args.staticVenue, "static", void 0);
3310
+ }
3311
+ return void 0;
3312
+ };
3313
+ var buildVenueMarketIdByVenue = (venueMarkets) => {
3314
+ var _a;
3315
+ const map = /* @__PURE__ */ new Map();
3316
+ if (!(venueMarkets == null ? void 0 : venueMarkets.length)) return map;
3317
+ const visit = (vm) => {
3318
+ if (vm.venue && vm.id && !map.has(vm.venue)) map.set(vm.venue, vm.id);
3319
+ };
3320
+ for (const vm of venueMarkets) {
3321
+ visit(vm);
3322
+ for (const sibling of (_a = vm.matchedVenueMarkets) != null ? _a : []) visit(sibling);
3323
+ }
3324
+ return map;
3274
3325
  };
3275
3326
 
3276
3327
  // src/events/market-details/market-details-outcome-button.tsx
@@ -3295,14 +3346,17 @@ var marketDetailsOutcomeButtonToneClasses = {
3295
3346
  };
3296
3347
  var getMarketDetailsOutcomeButtonClassNames = ({
3297
3348
  enableAnimations,
3349
+ enforceFixedWidth,
3298
3350
  isSelected,
3299
- tone
3351
+ tone,
3352
+ variant
3300
3353
  }) => {
3301
3354
  const toneClasses = marketDetailsOutcomeButtonToneClasses[tone];
3355
+ const widthClassName = variant === "line" ? "w-[200px]" : variant === "outcome" ? "w-[160px]" : "w-[140px]";
3302
3356
  return {
3303
3357
  root: cn(
3304
- "w-[140px]",
3305
- "flex h-9 shrink-0 cursor-pointer select-none items-center justify-center gap-2 rounded-agg-full border px-5 py-1.5 text-left shadow-none",
3358
+ enforceFixedWidth ? widthClassName : "w-[140px]",
3359
+ "flex h-9 shrink-0 cursor-pointer select-none items-center justify-center gap-2 rounded-agg-full border px-4 py-1.5 text-left shadow-none",
3306
3360
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-agg-primary focus-visible:ring-offset-0 focus-visible:ring-offset-agg-secondary",
3307
3361
  "disabled:cursor-not-allowed disabled:opacity-60",
3308
3362
  getMotionClassName(
@@ -3318,6 +3372,7 @@ var getMarketDetailsOutcomeButtonClassNames = ({
3318
3372
  var MarketDetailsOutcomeButton = ({
3319
3373
  ariaControls,
3320
3374
  enableAnimations,
3375
+ enforceFixedWidth,
3321
3376
  isSelected,
3322
3377
  item,
3323
3378
  onSelect
@@ -3325,10 +3380,14 @@ var MarketDetailsOutcomeButton = ({
3325
3380
  var _a;
3326
3381
  const classNames = getMarketDetailsOutcomeButtonClassNames({
3327
3382
  enableAnimations,
3383
+ enforceFixedWidth,
3328
3384
  isSelected,
3329
- tone: item.tone
3385
+ tone: item.tone,
3386
+ variant: item.variant
3330
3387
  });
3331
- return /* @__PURE__ */ jsxs6(
3388
+ const itemLabel = (_a = item.title) != null ? _a : item.label;
3389
+ const isLineVariant = item.variant === "line";
3390
+ return /* @__PURE__ */ jsx8(
3332
3391
  "button",
3333
3392
  {
3334
3393
  type: "button",
@@ -3338,46 +3397,386 @@ var MarketDetailsOutcomeButton = ({
3338
3397
  "aria-controls": ariaControls,
3339
3398
  "aria-selected": isSelected,
3340
3399
  tabIndex: isSelected ? 0 : -1,
3341
- className: cn(classNames.root, "flex-1 md:flex-auto", "gap-1!"),
3400
+ className: cn(
3401
+ classNames.root,
3402
+ "overflow-hidden",
3403
+ enforceFixedWidth ? "flex-none" : "flex-1 md:flex-auto"
3404
+ ),
3342
3405
  onClick: () => onSelect(item.label),
3343
- children: [
3406
+ children: isLineVariant ? /* @__PURE__ */ jsxs6("div", { className: "flex min-w-0 max-w-full items-center justify-center gap-1.5 overflow-hidden", children: [
3344
3407
  /* @__PURE__ */ jsx8(VenueLogo, { venue: item.venue, size: "small" }),
3345
- /* @__PURE__ */ jsxs6("div", { className: "flex flex-row items-center gap-1 min-w-0", children: [
3346
- /* @__PURE__ */ jsx8(
3347
- Typography,
3348
- {
3349
- as: "span",
3350
- variant: isSelected ? "body-strong" : "body",
3351
- className: cn("whitespace-nowrap truncate", classNames.text),
3352
- children: (_a = item.title) != null ? _a : item.label
3353
- }
3354
- ),
3355
- /* @__PURE__ */ jsx8(
3356
- Typography,
3357
- {
3358
- as: "span",
3359
- variant: isSelected ? "body-strong" : "body",
3360
- className: cn(classNames.text),
3361
- children: formatProbabilityCents(item.probability)
3362
- }
3363
- )
3364
- ] })
3365
- ]
3408
+ /* @__PURE__ */ jsx8(
3409
+ Typography,
3410
+ {
3411
+ as: "span",
3412
+ variant: isSelected ? "body-strong" : "body",
3413
+ className: cn("min-w-0 truncate whitespace-nowrap text-center", classNames.text),
3414
+ children: itemLabel
3415
+ }
3416
+ ),
3417
+ item.lineLabel ? /* @__PURE__ */ jsx8(
3418
+ Typography,
3419
+ {
3420
+ as: "span",
3421
+ variant: isSelected ? "body-strong" : "body",
3422
+ className: cn("shrink-0 whitespace-nowrap", classNames.text),
3423
+ children: item.lineLabel
3424
+ }
3425
+ ) : null,
3426
+ /* @__PURE__ */ jsx8(
3427
+ Typography,
3428
+ {
3429
+ as: "span",
3430
+ variant: isSelected ? "body-strong" : "body",
3431
+ className: cn("shrink-0 whitespace-nowrap", classNames.text),
3432
+ children: formatProbabilityCents(item.probability)
3433
+ }
3434
+ )
3435
+ ] }) : /* @__PURE__ */ jsxs6("div", { className: "inline-flex max-w-full items-center justify-center gap-1.5", children: [
3436
+ /* @__PURE__ */ jsx8(VenueLogo, { venue: item.venue, size: "small" }),
3437
+ /* @__PURE__ */ jsx8(
3438
+ Typography,
3439
+ {
3440
+ as: "span",
3441
+ variant: isSelected ? "body-strong" : "body",
3442
+ className: cn("truncate whitespace-nowrap text-center", classNames.text),
3443
+ children: itemLabel
3444
+ }
3445
+ ),
3446
+ /* @__PURE__ */ jsx8(
3447
+ Typography,
3448
+ {
3449
+ as: "span",
3450
+ variant: isSelected ? "body-strong" : "body",
3451
+ className: cn("shrink-0 whitespace-nowrap", classNames.text),
3452
+ children: formatProbabilityCents(item.probability)
3453
+ }
3454
+ )
3455
+ ] })
3366
3456
  }
3367
3457
  );
3368
3458
  };
3369
3459
  MarketDetailsOutcomeButton.displayName = "MarketDetailsOutcomeButton";
3370
3460
 
3461
+ // src/events/market-details/market-details-graph-panel.tsx
3462
+ import {
3463
+ CHART_TIME_RANGES as CHART_TIME_RANGES2,
3464
+ useLabels as useLabels6,
3465
+ useMarketChart as useMarketChart2,
3466
+ useRollingChartWindow as useRollingChartWindow2,
3467
+ useSdkUiConfig as useSdkUiConfig3
3468
+ } from "@agg-build/hooks";
3469
+ import { useEffect as useEffect4, useMemo as useMemo6, useRef as useRef5, useState as useState4 } from "react";
3470
+ import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
3471
+ var MarketDetailsGraphPanel = ({
3472
+ venueMarkets,
3473
+ selectedOutcomeLabel,
3474
+ selectedOutcomeId,
3475
+ livePrices,
3476
+ wsLivePrices,
3477
+ headerOutcomeItems,
3478
+ isResolvedMarket,
3479
+ isOutcomeSelectionLocked,
3480
+ volume,
3481
+ live,
3482
+ classNames
3483
+ }) => {
3484
+ var _a, _b, _c;
3485
+ const config = useSdkUiConfig3();
3486
+ const {
3487
+ formatting: { formatPercent, formatCompactCurrency },
3488
+ general: { theme }
3489
+ } = config;
3490
+ const isDarkTheme = theme === "dark";
3491
+ const labels = useLabels6();
3492
+ const selectedTimeRange = config.chart.selectedChartTimeRange;
3493
+ const setSelectedTimeRange = config.chart.setSelectedChartTimeRange;
3494
+ const [chartRangeOverride, setChartRangeOverride] = useState4(null);
3495
+ const effectiveChartTimeRange = isResolvedMarket ? "ALL" : chartRangeOverride != null ? chartRangeOverride : selectedTimeRange;
3496
+ const [selectedChartType, setSelectedChartType] = useState4("line");
3497
+ const [selectedGraphVenue, setSelectedGraphVenue] = useState4(null);
3498
+ const [chartOutcomeLabel, setChartOutcomeLabel] = useState4(selectedOutcomeLabel);
3499
+ const resolvedChartOutcomeLabel = chartOutcomeLabel != null ? chartOutcomeLabel : selectedOutcomeLabel;
3500
+ const chartSelectedOutcomeId = selectedOutcomeId && resolvedChartOutcomeLabel === selectedOutcomeLabel ? selectedOutcomeId : null;
3501
+ const chartOutcomesByVenue = useMemo6(() => {
3502
+ return resolveChartVenueOutcomes({
3503
+ eligibleVenueOutcomes: collectEligibleVenueOutcomes({
3504
+ venueMarkets,
3505
+ selectedOutcomeLabel: resolvedChartOutcomeLabel,
3506
+ selectedOutcomeId: chartSelectedOutcomeId
3507
+ }),
3508
+ livePrices
3509
+ });
3510
+ }, [livePrices, venueMarkets, resolvedChartOutcomeLabel, chartSelectedOutcomeId]);
3511
+ const rollingWindow = useRollingChartWindow2({ range: effectiveChartTimeRange });
3512
+ const chartPrimaryOutcomeId = (_b = (_a = chartOutcomesByVenue[0]) == null ? void 0 : _a.outcome.id) != null ? _b : null;
3513
+ const chartVenueOutcomeIds = useMemo6(() => {
3514
+ return chartOutcomesByVenue.map((item) => item.outcome.id);
3515
+ }, [chartOutcomesByVenue]);
3516
+ const {
3517
+ data: marketChartData,
3518
+ isLoading: isMarketChartLoading,
3519
+ error: marketChartError,
3520
+ refetch: refetchMarketChart
3521
+ } = useMarketChart2({
3522
+ marketId: chartPrimaryOutcomeId,
3523
+ venueMarketIds: chartVenueOutcomeIds,
3524
+ interval: rollingWindow.interval,
3525
+ startTs: rollingWindow.startTs * 1e3,
3526
+ endTs: rollingWindow.endTs * 1e3,
3527
+ // The panel only mounts when the chart is actually visible, so enable as
3528
+ // soon as we have an outcome to chart.
3529
+ enabled: !!chartPrimaryOutcomeId,
3530
+ live,
3531
+ refetchIntervalMs: rollingWindow.refetchIntervalMs,
3532
+ // Stable cache key per user-selected range so tab/page revisits hit cache
3533
+ // instead of refetching on every bucket-boundary rollover.
3534
+ rangeKey: rollingWindow.range
3535
+ });
3536
+ const hasAutoFallenBackRangeRef = useRef5(false);
3537
+ useEffect4(() => {
3538
+ hasAutoFallenBackRangeRef.current = false;
3539
+ setChartRangeOverride(null);
3540
+ }, [chartPrimaryOutcomeId]);
3541
+ useEffect4(() => {
3542
+ if (!shouldAutoFallbackToAllRange({
3543
+ chartData: marketChartData,
3544
+ isLoading: isMarketChartLoading,
3545
+ error: marketChartError,
3546
+ currentRange: effectiveChartTimeRange,
3547
+ hasAlreadyFallenBack: hasAutoFallenBackRangeRef.current,
3548
+ domainStartTs: rollingWindow.startTs
3549
+ })) {
3550
+ return;
3551
+ }
3552
+ hasAutoFallenBackRangeRef.current = true;
3553
+ setChartRangeOverride("ALL");
3554
+ }, [
3555
+ marketChartData,
3556
+ isMarketChartLoading,
3557
+ marketChartError,
3558
+ effectiveChartTimeRange,
3559
+ rollingWindow.startTs
3560
+ ]);
3561
+ const chartAvailableOutcomesByVenue = useMemo6(() => {
3562
+ return filterChartVenueOutcomesByRenderableVenues({
3563
+ chartData: marketChartData,
3564
+ venueOutcomes: chartOutcomesByVenue
3565
+ });
3566
+ }, [chartOutcomesByVenue, marketChartData]);
3567
+ const graphSeries = useMemo6(() => {
3568
+ var _a2, _b2, _c2, _d;
3569
+ const baseColor = resolveSeriesColor(
3570
+ (_d = (_c2 = selectedGraphVenue != null ? selectedGraphVenue : (_a2 = chartAvailableOutcomesByVenue[0]) == null ? void 0 : _a2.venue) != null ? _c2 : (_b2 = chartOutcomesByVenue[0]) == null ? void 0 : _b2.venue) != null ? _d : "polymarket",
3571
+ 0,
3572
+ isDarkTheme
3573
+ );
3574
+ const domainStartTs = rollingWindow.startTs;
3575
+ return resolveMarketChartDisplaySeries({
3576
+ chartData: marketChartData,
3577
+ selectedVenue: selectedGraphVenue,
3578
+ transformProbability: (value) => value
3579
+ }).map((seriesItem) => {
3580
+ return {
3581
+ id: `${resolvedChartOutcomeLabel != null ? resolvedChartOutcomeLabel : "graph"}-${seriesItem.venue}-${chartPrimaryOutcomeId != null ? chartPrimaryOutcomeId : "chart"}`,
3582
+ venue: selectedGraphVenue != null ? selectedGraphVenue : seriesItem.venue,
3583
+ color: seriesItem.venue === "aggregate" ? baseColor : resolveSeriesColor(seriesItem.venue, 0, isDarkTheme),
3584
+ // Constrain to the rolling [nowSec - rangeSeconds, …] domain so stale
3585
+ // bars don't bleed in across a range shrink or long mount.
3586
+ points: seriesItem.points.filter((point) => point.time >= domainStartTs)
3587
+ };
3588
+ });
3589
+ }, [
3590
+ isDarkTheme,
3591
+ chartPrimaryOutcomeId,
3592
+ marketChartData,
3593
+ rollingWindow.startTs,
3594
+ selectedGraphVenue,
3595
+ resolvedChartOutcomeLabel,
3596
+ chartAvailableOutcomesByVenue,
3597
+ chartOutcomesByVenue
3598
+ ]);
3599
+ const graphLiveState = useMemo6(() => {
3600
+ return resolveMarketChartLiveState({
3601
+ chartData: marketChartData,
3602
+ selectedVenue: selectedGraphVenue,
3603
+ transformProbability: (value) => value
3604
+ });
3605
+ }, [marketChartData, selectedGraphVenue]);
3606
+ const hasChartError = !!marketChartError;
3607
+ useEffect4(() => {
3608
+ if (!selectedGraphVenue) {
3609
+ return;
3610
+ }
3611
+ if (chartAvailableOutcomesByVenue.some((item) => item.venue === selectedGraphVenue)) {
3612
+ return;
3613
+ }
3614
+ setSelectedGraphVenue(null);
3615
+ }, [selectedGraphVenue, chartAvailableOutcomesByVenue]);
3616
+ const handleGraphVenueToggle = (venue) => {
3617
+ setSelectedGraphVenue((currentVenue) => {
3618
+ if (currentVenue === venue) return null;
3619
+ return venue;
3620
+ });
3621
+ };
3622
+ const handleRetryMarketChart = () => {
3623
+ void refetchMarketChart();
3624
+ };
3625
+ return /* @__PURE__ */ jsxs7("div", { className: cn("agg-price-chart flex flex-col gap-5 p-5", classNames == null ? void 0 : classNames.graph), children: [
3626
+ hasChartError ? /* @__PURE__ */ jsx9(
3627
+ StateMessage,
3628
+ {
3629
+ title: labels.marketDetails.chartUnavailableTitle,
3630
+ description: labels.marketDetails.chartUnavailableDescription,
3631
+ icon: /* @__PURE__ */ jsx9(WarningIcon, {}),
3632
+ onAction: handleRetryMarketChart,
3633
+ classNames: { root: "min-h-[248px] px-5 py-10 md:min-h-[272px]" }
3634
+ }
3635
+ ) : /* @__PURE__ */ jsx9(
3636
+ LineChart,
3637
+ {
3638
+ series: graphSeries,
3639
+ height: 260,
3640
+ isLoading: isMarketChartLoading,
3641
+ chartType: selectedChartType,
3642
+ liveCandle: selectedChartType === "candlestick" ? (_c = graphLiveState.liveCandle) != null ? _c : void 0 : void 0,
3643
+ lineValue: graphLiveState.lineValue,
3644
+ classNames: { root: "agg-chart-region w-full" },
3645
+ showSeriesControls: chartAvailableOutcomesByVenue.length > 0 || headerOutcomeItems.length > 0,
3646
+ renderSeriesControls: () => {
3647
+ var _a2, _b2, _c2, _d;
3648
+ return /* @__PURE__ */ jsxs7("div", { className: "agg-chart-toolbar w-full flex flex-col gap-4 md:flex-row md:items-center md:justify-between", children: [
3649
+ /* @__PURE__ */ jsx9("div", { className: "agg-market-venues flex flex-wrap gap-2", children: chartAvailableOutcomesByVenue.map((item) => {
3650
+ var _a3;
3651
+ const probability = formatProbabilityPercent(
3652
+ (_a3 = wsLivePrices.get(item.outcome.id)) != null ? _a3 : item.outcome.price,
3653
+ formatPercent
3654
+ );
3655
+ const isActiveVenue = selectedGraphVenue === item.venue;
3656
+ return /* @__PURE__ */ jsxs7(
3657
+ "button",
3658
+ {
3659
+ type: "button",
3660
+ "aria-label": `${item.venue} ${probability}`,
3661
+ "aria-pressed": isActiveVenue,
3662
+ className: cn(
3663
+ "agg-market-venue",
3664
+ "cursor-pointer",
3665
+ "inline-flex items-center gap-2 rounded-agg-full border px-4 py-2",
3666
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-agg-primary focus-visible:ring-offset-0 focus-visible:ring-offset-agg-secondary-hover",
3667
+ isActiveVenue ? "border-agg-primary bg-agg-secondary" : "border-transparent bg-agg-secondary-hover"
3668
+ ),
3669
+ onClick: (e) => {
3670
+ e.preventDefault();
3671
+ e.stopPropagation();
3672
+ handleGraphVenueToggle(item.venue);
3673
+ },
3674
+ children: [
3675
+ /* @__PURE__ */ jsx9(VenueLogo, { venue: item.venue, size: "small" }),
3676
+ /* @__PURE__ */ jsx9("span", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: probability })
3677
+ ]
3678
+ },
3679
+ `${item.market.id}-${item.outcome.id}`
3680
+ );
3681
+ }) }),
3682
+ !isOutcomeSelectionLocked ? /* @__PURE__ */ jsx9(
3683
+ SwitchButton,
3684
+ {
3685
+ ariaLabel: labels.marketDetails.outcomeSelectorAria,
3686
+ className: "agg-outcome-switch w-full shrink-0 md:w-fit",
3687
+ value: (_d = (_c2 = (_a2 = headerOutcomeItems.find(
3688
+ (outcome) => outcome.label === resolvedChartOutcomeLabel
3689
+ )) == null ? void 0 : _a2.id) != null ? _c2 : (_b2 = headerOutcomeItems[0]) == null ? void 0 : _b2.id) != null ? _d : "",
3690
+ onValueChange: (outcomeId) => {
3691
+ const outcome = headerOutcomeItems.find(
3692
+ (headerOutcomeItem) => headerOutcomeItem.id === outcomeId
3693
+ );
3694
+ if (!outcome) return;
3695
+ setChartOutcomeLabel(outcome.label);
3696
+ },
3697
+ options: headerOutcomeItems.map((outcome) => {
3698
+ var _a3, _b3;
3699
+ const price = outcome.probability;
3700
+ return {
3701
+ value: outcome.id,
3702
+ label: `${(_a3 = outcome == null ? void 0 : outcome.title) != null ? _a3 : outcome.label} ${formatProbabilityCents(price)}`,
3703
+ ariaLabel: `${(_b3 = outcome == null ? void 0 : outcome.title) != null ? _b3 : outcome.label} ${formatProbabilityCents(price)}`
3704
+ };
3705
+ })
3706
+ }
3707
+ ) : null
3708
+ ] });
3709
+ }
3710
+ }
3711
+ ),
3712
+ /* @__PURE__ */ jsxs7(
3713
+ "div",
3714
+ {
3715
+ className: cn(
3716
+ "agg-chart-footer",
3717
+ "flex flex-row justify-between gap-2 text-agg-sm leading-agg-5 text-agg-muted-foreground md:flex-row md:items-center md:justify-between",
3718
+ classNames == null ? void 0 : classNames.footer
3719
+ ),
3720
+ children: [
3721
+ /* @__PURE__ */ jsx9("span", { children: typeof volume !== "number" ? labels.marketDetails.volumeUnavailable : volume > 0 ? `${formatCompactCurrency(volume)} ${labels.marketDetails.meta.volumeSuffix}` : "" }),
3722
+ /* @__PURE__ */ jsxs7("div", { className: "flex flex-wrap items-center gap-3 md:gap-4", children: [
3723
+ /* @__PURE__ */ jsx9(
3724
+ ChartTypeSwitch,
3725
+ {
3726
+ className: "agg-chart-type-switch shrink-0",
3727
+ value: selectedChartType,
3728
+ onValueChange: setSelectedChartType
3729
+ }
3730
+ ),
3731
+ /* @__PURE__ */ jsx9("span", { "aria-hidden": "true", className: "hidden h-4 w-px bg-agg-separator md:block" }),
3732
+ CHART_TIME_RANGES2.map((timeRange) => {
3733
+ const isActive = effectiveChartTimeRange === timeRange;
3734
+ const isDisabled = isResolvedMarket && timeRange !== "ALL";
3735
+ return /* @__PURE__ */ jsx9(
3736
+ "button",
3737
+ {
3738
+ type: "button",
3739
+ disabled: isDisabled,
3740
+ className: cn(
3741
+ "agg-chart-time-range-trigger",
3742
+ "cursor-pointer text-agg-sm leading-agg-5",
3743
+ isDisabled && "cursor-not-allowed opacity-50",
3744
+ isActive ? "font-agg-bold text-agg-foreground" : "font-agg-normal text-agg-muted-foreground"
3745
+ ),
3746
+ "aria-pressed": isActive,
3747
+ "aria-disabled": isDisabled,
3748
+ onClick: (e) => {
3749
+ e.preventDefault();
3750
+ e.stopPropagation();
3751
+ if (isDisabled) return;
3752
+ setChartRangeOverride(null);
3753
+ setSelectedTimeRange(timeRange);
3754
+ },
3755
+ children: timeRange === "ALL" ? labels.eventItemDetails.allTimeRange : timeRange
3756
+ },
3757
+ timeRange
3758
+ );
3759
+ })
3760
+ ] })
3761
+ ]
3762
+ }
3763
+ )
3764
+ ] });
3765
+ };
3766
+ MarketDetailsGraphPanel.displayName = "MarketDetailsGraphPanel";
3767
+
3371
3768
  // src/events/market-details/index.tsx
3372
- import { Fragment as Fragment2, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
3769
+ import { Fragment as Fragment2, jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
3373
3770
  var MarketDetailsUnavailableState = ({
3771
+ marketId,
3374
3772
  ariaLabel,
3375
3773
  classNames
3376
3774
  }) => {
3377
- const labels = useLabels6();
3378
- return /* @__PURE__ */ jsx9(
3775
+ const labels = useLabels7();
3776
+ return /* @__PURE__ */ jsx10(
3379
3777
  Card,
3380
3778
  {
3779
+ "data-market-id": marketId || void 0,
3381
3780
  className: cn(
3382
3781
  "group/agg-market-card agg-market-card-unavailable",
3383
3782
  marketDetailsBaseCardClassName,
@@ -3385,24 +3784,26 @@ var MarketDetailsUnavailableState = ({
3385
3784
  ),
3386
3785
  role: "status",
3387
3786
  "aria-label": ariaLabel != null ? ariaLabel : labels.marketDetails.unavailableAria,
3388
- children: /* @__PURE__ */ jsxs7("div", { className: "flex flex-col gap-1 p-5", children: [
3389
- /* @__PURE__ */ jsx9(Typography, { variant: "body-large-strong", children: labels.marketDetails.unavailableTitle }),
3390
- /* @__PURE__ */ jsx9(Typography, { variant: "label", className: "text-agg-muted-foreground", children: labels.marketDetails.unavailableDescription })
3787
+ children: /* @__PURE__ */ jsxs8("div", { className: "flex flex-col gap-1 p-5", children: [
3788
+ /* @__PURE__ */ jsx10(Typography, { variant: "body-large-strong", children: labels.marketDetails.unavailableTitle }),
3789
+ /* @__PURE__ */ jsx10(Typography, { variant: "label", className: "text-agg-muted-foreground", children: labels.marketDetails.unavailableDescription })
3391
3790
  ] })
3392
3791
  }
3393
3792
  );
3394
3793
  };
3395
3794
  var MarketDetailsNotFoundState = ({
3795
+ marketId,
3396
3796
  ariaLabel: _ariaLabel,
3397
3797
  classNames: _classNames
3398
3798
  }) => {
3399
- const labels = useLabels6();
3400
- return /* @__PURE__ */ jsx9(
3799
+ const labels = useLabels7();
3800
+ return /* @__PURE__ */ jsx10(
3401
3801
  StateMessage,
3402
3802
  {
3803
+ "data-market-id": marketId || void 0,
3403
3804
  title: labels.marketDetails.notFoundTitle,
3404
3805
  description: labels.marketDetails.notFoundDescription,
3405
- icon: /* @__PURE__ */ jsx9(SearchEmptyIcon, {}),
3806
+ icon: /* @__PURE__ */ jsx10(SearchEmptyIcon, {}),
3406
3807
  classNames: { root: "min-h-[280px] md:min-h-[320px]" }
3407
3808
  }
3408
3809
  );
@@ -3420,6 +3821,11 @@ var MarketDetailsContent = ({
3420
3821
  ariaLabel,
3421
3822
  classNames,
3422
3823
  otherContent,
3824
+ headerAccessory,
3825
+ compactHeader = false,
3826
+ subtitleOverride,
3827
+ headerOutcomeVariant,
3828
+ headerOutcomeItemsOverride,
3423
3829
  onOutcomeSelect,
3424
3830
  live,
3425
3831
  midpointsFallback,
@@ -3427,29 +3833,33 @@ var MarketDetailsContent = ({
3427
3833
  suppressOutcomeFallbackSelection,
3428
3834
  midpointsResult
3429
3835
  }) => {
3430
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
3431
- const config = useSdkUiConfig3();
3836
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
3837
+ const config = useSdkUiConfig4();
3432
3838
  const {
3433
3839
  features: { enableAnimations },
3434
- formatting: { formatPercent },
3435
- general: { theme }
3840
+ formatting: { formatPercent }
3436
3841
  } = config;
3437
- const isDarkTheme = theme === "dark";
3438
- const labels = useLabels6();
3842
+ const labels = useLabels7();
3439
3843
  const tradingContext = useEventTradingContext2();
3440
3844
  const detailsContentId = useId();
3441
3845
  const tradeSide = (_a = tradingContext == null ? void 0 : tradingContext.tradeSide) != null ? _a : "buy";
3442
- const wsLivePrices = useLiveOutcomePrices2(venueMarkets);
3443
- const wsBestPrices = useLiveBestPrices2(venueMarkets);
3444
- const resolvedMarket = useMemo6(() => {
3846
+ const resolvedMarket = useMemo7(() => {
3445
3847
  return resolveMarketFromVenueMarkets(venueMarkets, marketId);
3446
3848
  }, [venueMarkets, marketId]);
3447
- const scopedResolvedMarket = useMemo6(() => {
3849
+ const clusterVenueMarkets = resolvedMarket == null ? void 0 : resolvedMarket.venueMarkets;
3850
+ const wsLivePrices = useLiveOutcomePrices2(clusterVenueMarkets);
3851
+ const wsBestPrices = useLiveBestPrices2(clusterVenueMarkets);
3852
+ const wsBestCandidates = useLiveBestPriceCandidates(clusterVenueMarkets);
3853
+ const scopedResolvedMarket = useMemo7(() => {
3448
3854
  var _a2, _b2;
3449
3855
  if (!resolvedMarket) return null;
3450
3856
  return (_b2 = (_a2 = resolvedMarket.venueMarkets.find((venueMarket) => venueMarket.id === resolvedMarket.id)) != null ? _a2 : resolvedMarket.venueMarkets[0]) != null ? _b2 : null;
3451
3857
  }, [resolvedMarket]);
3452
3858
  const isResolvedMarket = resolveMarketTradingState(scopedResolvedMarket).kind === "resolved";
3859
+ useEventOrderbookData2(
3860
+ isResolvedMarket ? [] : resolvedMarket == null ? void 0 : resolvedMarket.venueMarkets,
3861
+ (_b = scopedResolvedMarket == null ? void 0 : scopedResolvedMarket.id) != null ? _b : null
3862
+ );
3453
3863
  const clusterMidpointResult = midpointsResult != null ? midpointsResult : {
3454
3864
  prices: /* @__PURE__ */ new Map(),
3455
3865
  bestMidpointsByOutcomeId: /* @__PURE__ */ new Map(),
@@ -3460,26 +3870,25 @@ var MarketDetailsContent = ({
3460
3870
  bestMidpoint: void 0,
3461
3871
  bestMidpointVenue: void 0
3462
3872
  };
3463
- const clusterMidpoints = (_b = clusterMidpointResult.bestMidpointsByOutcomeId) != null ? _b : clusterMidpointResult.prices;
3873
+ const clusterMidpoints = (_c = clusterMidpointResult.bestMidpointsByOutcomeId) != null ? _c : clusterMidpointResult.prices;
3464
3874
  const clusterBestMidpointsByOutcomeId = clusterMidpoints;
3465
3875
  const clusterVenueByOutcomeId = clusterMidpointResult.venueByOutcomeId;
3466
3876
  const clusterBestMidpoint = clusterMidpointResult.bestMidpoint;
3467
3877
  const clusterBestMidpointVenue = clusterMidpointResult.bestMidpointVenue;
3468
3878
  const clusterBestPricesRest = clusterMidpointResult.bestPrices;
3469
- const clusterBestPrices = useMemo6(
3879
+ const clusterBestPrices = useMemo7(
3470
3880
  () => mergeBestPricesPreferringLive2(clusterBestPricesRest, wsBestPrices),
3471
3881
  [clusterBestPricesRest, wsBestPrices]
3472
3882
  );
3473
3883
  const clusterBestPriceVenuesByOutcomeId = clusterMidpointResult.bestPriceVenuesByOutcomeId;
3474
- const clusterMidpointMarkets = useMemo6(() => {
3884
+ const clusterMidpointMarkets = useMemo7(() => {
3475
3885
  var _a2;
3476
3886
  if (!resolvedMarket) return [];
3477
3887
  return (_a2 = resolvedMarket.venueMarkets) != null ? _a2 : [];
3478
3888
  }, [resolvedMarket]);
3479
- const tradableVenues = useMemo6(() => {
3889
+ const tradableVenues = useMemo7(() => {
3480
3890
  var _a2;
3481
3891
  if (clusterMidpointMarkets.length === 0) return null;
3482
- if (clusterMidpoints.size === 0) return null;
3483
3892
  const set = /* @__PURE__ */ new Set();
3484
3893
  for (const market of clusterMidpointMarkets) {
3485
3894
  for (const outcome of (_a2 = market.venueMarketOutcomes) != null ? _a2 : []) {
@@ -3489,28 +3898,20 @@ var MarketDetailsContent = ({
3489
3898
  }
3490
3899
  }
3491
3900
  }
3901
+ if (set.size === 0) return null;
3492
3902
  return set;
3493
3903
  }, [clusterMidpointMarkets, clusterMidpoints]);
3494
- const model = useMemo6(() => {
3904
+ const model = useMemo7(() => {
3495
3905
  return buildMarketDetailsModel({
3496
3906
  venueMarkets,
3497
3907
  marketId,
3498
3908
  title,
3499
3909
  image,
3500
3910
  formatCompactCurrency: config.formatting.formatCompactCurrency,
3501
- labels,
3502
- tradableVenues
3911
+ labels
3503
3912
  });
3504
- }, [
3505
- config.formatting.formatCompactCurrency,
3506
- venueMarkets,
3507
- image,
3508
- labels,
3509
- marketId,
3510
- title,
3511
- tradableVenues
3512
- ]);
3513
- const livePrices = useMemo6(() => {
3913
+ }, [config.formatting.formatCompactCurrency, venueMarkets, image, labels, marketId, title]);
3914
+ const livePrices = useMemo7(() => {
3514
3915
  const merged = /* @__PURE__ */ new Map();
3515
3916
  if (midpointsFallback == null ? void 0 : midpointsFallback.size) {
3516
3917
  for (const [outcomeId, price] of midpointsFallback) {
@@ -3525,37 +3926,32 @@ var MarketDetailsContent = ({
3525
3926
  for (const [k, v] of wsLivePrices) merged.set(k, v);
3526
3927
  return merged;
3527
3928
  }, [clusterMidpoints, midpointsFallback, wsLivePrices]);
3528
- const scopedMarketForCard = useMemo6(() => {
3929
+ const scopedMarketForCard = useMemo7(() => {
3529
3930
  var _a2;
3530
3931
  if (!model) return null;
3531
3932
  return (_a2 = model.market.venueMarkets.find((venueMarket) => venueMarket.id === model.market.id)) != null ? _a2 : model.primaryVenueMarket;
3532
3933
  }, [model]);
3533
- const marketTradingState = useMemo6(() => {
3934
+ const marketTradingState = useMemo7(() => {
3534
3935
  return resolveMarketTradingState(scopedMarketForCard);
3535
3936
  }, [scopedMarketForCard]);
3536
3937
  const isOutcomeSelectionLocked = marketTradingState.isTradingDisabled;
3537
3938
  const isUpcomingMarket = marketTradingState.kind === "unopened";
3538
3939
  const marketStatePresentation = resolveTradingStatePresentation(labels, marketTradingState);
3539
- const marketDetailsTabs = useMemo6(() => {
3940
+ const marketDetailsTabs = useMemo7(() => {
3540
3941
  return getMarketDetailsTabs(labels);
3541
3942
  }, [labels]);
3542
- const [selectedTab, setSelectedTab] = useState4(
3943
+ const [selectedTab, setSelectedTab] = useState5(
3543
3944
  () => resolveInitialTab(defaultTab)
3544
3945
  );
3545
- const [isOpened, setIsOpened] = useState4(controlledIsOpened);
3546
- useEffect4(() => {
3946
+ const [isOpened, setIsOpened] = useState5(controlledIsOpened);
3947
+ useEffect5(() => {
3547
3948
  setSelectedTab(resolveInitialTab(defaultTab));
3548
3949
  }, [defaultTab]);
3549
- useEffect4(() => {
3950
+ useEffect5(() => {
3550
3951
  setIsOpened(controlledIsOpened);
3551
3952
  }, [controlledIsOpened]);
3552
- const selectedTimeRange = config.chart.selectedChartTimeRange;
3553
- const setSelectedTimeRange = config.chart.setSelectedChartTimeRange;
3554
3953
  const effectiveSelectedTab = isResolvedMarket ? "graph" : selectedTab;
3555
- const [chartRangeOverride, setChartRangeOverride] = useState4(null);
3556
- const effectiveChartTimeRange = isResolvedMarket ? "ALL" : chartRangeOverride != null ? chartRangeOverride : selectedTimeRange;
3557
- const [selectedChartType, setSelectedChartType] = useState4("line");
3558
- const scopedSelectedOutcomeState = useMemo6(() => {
3954
+ const scopedSelectedOutcomeState = useMemo7(() => {
3559
3955
  if (!model) {
3560
3956
  return {
3561
3957
  outcomeId: null,
@@ -3575,17 +3971,9 @@ var MarketDetailsContent = ({
3575
3971
  tradingContext == null ? void 0 : tradingContext.selectedOutcomeId
3576
3972
  ]);
3577
3973
  const selectedOutcomeId = scopedSelectedOutcomeState.outcomeId;
3578
- const selectedOutcomeLabel = (_c = scopedSelectedOutcomeState.outcomeLabel) != null ? _c : null;
3974
+ const selectedOutcomeLabel = (_d = scopedSelectedOutcomeState.outcomeLabel) != null ? _d : null;
3579
3975
  const selectOutcome = tradingContext == null ? void 0 : tradingContext.selectOutcome;
3580
- const [selectedGraphVenue, setSelectedGraphVenue] = useState4(null);
3581
- const [chartOutcomeLabel, setChartOutcomeLabel] = useState4(selectedOutcomeLabel);
3582
- useEffect4(() => {
3583
- if (!isOpened) return;
3584
- if (selectedOutcomeLabel) {
3585
- setChartOutcomeLabel(selectedOutcomeLabel);
3586
- }
3587
- }, [isOpened]);
3588
- useEffect4(() => {
3976
+ useEffect5(() => {
3589
3977
  var _a2;
3590
3978
  if (!isOpened || !model) return;
3591
3979
  if (isOutcomeSelectionLocked) return;
@@ -3609,31 +3997,38 @@ var MarketDetailsContent = ({
3609
3997
  tradingContext == null ? void 0 : tradingContext.selectedMarketId,
3610
3998
  selectOutcome
3611
3999
  ]);
3612
- const headerOutcomeItems = useMemo6(() => {
4000
+ const venueMarketIdByVenue = useMemo7(
4001
+ () => buildVenueMarketIdByVenue(model == null ? void 0 : model.market.venueMarkets),
4002
+ [model]
4003
+ );
4004
+ const headerOutcomeItems = useMemo7(() => {
3613
4005
  if (!model) return [];
3614
- const items = resolveHeaderOutcomeItems(model.market.venueMarkets, scopedMarketForCard);
4006
+ if (headerOutcomeItemsOverride) return headerOutcomeItemsOverride;
4007
+ const items = resolveHeaderOutcomeItems(
4008
+ model.market.venueMarkets,
4009
+ scopedMarketForCard,
4010
+ headerOutcomeVariant
4011
+ );
3615
4012
  return items.map((item) => {
3616
4013
  var _a2;
3617
4014
  const fallbackPrice = midpointsFallback == null ? void 0 : midpointsFallback.get(item.id);
3618
- const bestVenue = getDisplayOutcomeVenue({
3619
- outcomeId: item.id,
3620
- outcomeLabel: item.label,
3621
- selection: tradeSide,
3622
- bestMidpointVenue: clusterBestMidpointVenue,
3623
- bestVenueByOutcomeId: clusterVenueByOutcomeId,
3624
- bestPriceVenuesByOutcomeId: clusterBestPriceVenuesByOutcomeId,
3625
- fallbackVenue: midpointsFallbackVenues == null ? void 0 : midpointsFallbackVenues.get(item.id)
3626
- });
3627
- const outcomeBestPrice = getDisplayOutcomePrice({
4015
+ const candidate = selectBestOutcomeCandidate({
3628
4016
  outcomeId: item.id,
3629
4017
  outcomeLabel: item.label,
3630
4018
  selection: tradeSide,
3631
- bestPrices: clusterBestPrices,
4019
+ live: wsBestCandidates.get(item.id),
4020
+ restBest: clusterBestPricesRest.get(item.id),
4021
+ restBestVenues: clusterBestPriceVenuesByOutcomeId.get(item.id),
4022
+ restMidpoint: clusterBestMidpointsByOutcomeId.get(item.id),
4023
+ restMidpointVenue: clusterVenueByOutcomeId.get(item.id),
3632
4024
  bestMidpoint: clusterBestMidpoint,
3633
- bestMidpointsByOutcomeId: clusterBestMidpointsByOutcomeId,
3634
- livePrices: wsLivePrices,
3635
- fallbackPrice
4025
+ bestMidpointVenue: clusterBestMidpointVenue,
4026
+ staticPrice: fallbackPrice,
4027
+ staticVenue: midpointsFallbackVenues == null ? void 0 : midpointsFallbackVenues.get(item.id),
4028
+ venueMarketIdByVenue
3636
4029
  });
4030
+ const bestVenue = candidate == null ? void 0 : candidate.venue;
4031
+ const outcomeBestPrice = candidate == null ? void 0 : candidate.price;
3637
4032
  if (isResolvedMarket) {
3638
4033
  const isWinningOutcome = item.id === ((_a2 = marketTradingState.winningOutcome) == null ? void 0 : _a2.id);
3639
4034
  return __spreadValues(__spreadProps(__spreadValues({}, item), {
@@ -3651,19 +4046,22 @@ var MarketDetailsContent = ({
3651
4046
  clusterBestMidpoint,
3652
4047
  clusterBestMidpointVenue,
3653
4048
  clusterBestMidpointsByOutcomeId,
3654
- clusterBestPrices,
4049
+ clusterBestPricesRest,
3655
4050
  clusterBestPriceVenuesByOutcomeId,
4051
+ headerOutcomeItemsOverride,
3656
4052
  model,
3657
4053
  scopedMarketForCard,
4054
+ headerOutcomeVariant,
3658
4055
  clusterVenueByOutcomeId,
3659
4056
  isResolvedMarket,
3660
- (_d = marketTradingState.winningOutcome) == null ? void 0 : _d.id,
4057
+ (_e = marketTradingState.winningOutcome) == null ? void 0 : _e.id,
3661
4058
  midpointsFallback,
3662
4059
  midpointsFallbackVenues,
3663
4060
  tradeSide,
3664
- wsLivePrices
4061
+ venueMarketIdByVenue,
4062
+ wsBestCandidates
3665
4063
  ]);
3666
- const headlineProbability = useMemo6(() => {
4064
+ const headlineProbability = useMemo7(() => {
3667
4065
  var _a2, _b2, _c2, _d2;
3668
4066
  if (!model || !scopedMarketForCard) return void 0;
3669
4067
  if (isResolvedMarket) {
@@ -3699,7 +4097,7 @@ var MarketDetailsContent = ({
3699
4097
  midpointsFallback,
3700
4098
  wsLivePrices
3701
4099
  ]);
3702
- const selectedOutcomesByVenue = useMemo6(() => {
4100
+ const selectedOutcomesByVenue = useMemo7(() => {
3703
4101
  if (!model) return [];
3704
4102
  return collectEligibleVenueOutcomes({
3705
4103
  venueMarkets: model.market.venueMarkets,
@@ -3711,73 +4109,9 @@ var MarketDetailsContent = ({
3711
4109
  selectedOutcomeId
3712
4110
  });
3713
4111
  }, [model, selectedOutcomeLabel, selectedOutcomeId]);
3714
- const resolvedChartOutcomeLabel = chartOutcomeLabel != null ? chartOutcomeLabel : selectedOutcomeLabel;
3715
- const chartSelectedOutcomeId = selectedOutcomeId && resolvedChartOutcomeLabel === selectedOutcomeLabel ? selectedOutcomeId : null;
3716
- const chartOutcomesByVenue = useMemo6(() => {
3717
- if (!model) return [];
3718
- return resolveChartVenueOutcomes({
3719
- eligibleVenueOutcomes: collectEligibleVenueOutcomes({
3720
- venueMarkets: model.market.venueMarkets,
3721
- selectedOutcomeLabel: resolvedChartOutcomeLabel,
3722
- selectedOutcomeId: chartSelectedOutcomeId
3723
- }),
3724
- livePrices
3725
- });
3726
- }, [livePrices, model, resolvedChartOutcomeLabel, chartSelectedOutcomeId]);
3727
- const chartEnabled = isOpened && effectiveSelectedTab === "graph";
3728
4112
  const orderBookEnabled = isOpened && effectiveSelectedTab === "order-book" && !marketTradingState.isTradingDisabled;
3729
- const rollingWindow = useRollingChartWindow2({ range: effectiveChartTimeRange });
3730
- const primaryVenueMarketId = (_f = (_e = selectedOutcomesByVenue[0]) == null ? void 0 : _e.market.id) != null ? _f : null;
3731
- const primaryOutcomeId = (_h = (_g = selectedOutcomesByVenue[0]) == null ? void 0 : _g.outcome.id) != null ? _h : null;
3732
- const chartPrimaryOutcomeId = (_j = (_i = chartOutcomesByVenue[0]) == null ? void 0 : _i.outcome.id) != null ? _j : null;
3733
- const chartVenueOutcomeIds = useMemo6(() => {
3734
- return chartOutcomesByVenue.map((item) => item.outcome.id);
3735
- }, [chartOutcomesByVenue]);
3736
- const {
3737
- data: marketChartData,
3738
- isLoading: isMarketChartLoading,
3739
- error: marketChartError,
3740
- refetch: refetchMarketChart
3741
- } = useMarketChart2({
3742
- marketId: chartPrimaryOutcomeId,
3743
- venueMarketIds: chartVenueOutcomeIds,
3744
- interval: rollingWindow.interval,
3745
- startTs: rollingWindow.startTs * 1e3,
3746
- endTs: rollingWindow.endTs * 1e3,
3747
- enabled: chartEnabled && !!chartPrimaryOutcomeId,
3748
- live,
3749
- refetchIntervalMs: rollingWindow.refetchIntervalMs,
3750
- // Stable cache key per user-selected range so tab/page revisits hit cache
3751
- // instead of refetching on every bucket-boundary rollover.
3752
- rangeKey: rollingWindow.range
3753
- });
3754
- const hasAutoFallenBackRangeRef = useRef5(false);
3755
- useEffect4(() => {
3756
- hasAutoFallenBackRangeRef.current = false;
3757
- setChartRangeOverride(null);
3758
- }, [chartPrimaryOutcomeId]);
3759
- useEffect4(() => {
3760
- if (!shouldAutoFallbackToAllRange({
3761
- chartData: marketChartData,
3762
- isLoading: isMarketChartLoading,
3763
- error: marketChartError,
3764
- currentRange: effectiveChartTimeRange,
3765
- hasAlreadyFallenBack: hasAutoFallenBackRangeRef.current,
3766
- // Ignore stale bars outside the rolling window — see comment on the
3767
- // matching effect in event-list-item-details.
3768
- domainStartTs: rollingWindow.startTs
3769
- })) {
3770
- return;
3771
- }
3772
- hasAutoFallenBackRangeRef.current = true;
3773
- setChartRangeOverride("ALL");
3774
- }, [
3775
- marketChartData,
3776
- isMarketChartLoading,
3777
- marketChartError,
3778
- effectiveChartTimeRange,
3779
- rollingWindow.startTs
3780
- ]);
4113
+ const primaryVenueMarketId = (_g = (_f = selectedOutcomesByVenue[0]) == null ? void 0 : _f.market.id) != null ? _g : null;
4114
+ const primaryOutcomeId = (_i = (_h = selectedOutcomesByVenue[0]) == null ? void 0 : _h.outcome.id) != null ? _i : null;
3781
4115
  const marketOrderbookResult = useMarketOrderbook({
3782
4116
  marketId: primaryVenueMarketId,
3783
4117
  enabled: orderBookEnabled && !!primaryVenueMarketId,
@@ -3787,14 +4121,14 @@ var MarketDetailsContent = ({
3787
4121
  })),
3788
4122
  live
3789
4123
  });
3790
- const marketOrderbookDataById = useMemo6(() => {
4124
+ const marketOrderbookDataById = useMemo7(() => {
3791
4125
  var _a2;
3792
4126
  return (_a2 = marketOrderbookResult.dataById) != null ? _a2 : {};
3793
4127
  }, [marketOrderbookResult]);
3794
4128
  const isOrderBookLoading = marketOrderbookResult.isLoading;
3795
4129
  const orderBookError = marketOrderbookResult.error;
3796
4130
  const refetchOrderBook = marketOrderbookResult.refetch;
3797
- const aggregatedOrderbookRows = useMemo6(() => {
4131
+ const aggregatedOrderbookRows = useMemo7(() => {
3798
4132
  return mergeVenueOutcomeOrderbooks({
3799
4133
  eligibleOutcomes: selectedOutcomesByVenue,
3800
4134
  orderbooksByOutcomeId: marketOrderbookDataById
@@ -3802,7 +4136,7 @@ var MarketDetailsContent = ({
3802
4136
  }, [marketOrderbookDataById, selectedOutcomesByVenue]);
3803
4137
  const askRows = aggregatedOrderbookRows.askRows;
3804
4138
  const bidRows = aggregatedOrderbookRows.bidRows;
3805
- const unifiedEntries = useMemo6(() => {
4139
+ const unifiedEntries = useMemo7(() => {
3806
4140
  return resolveUnifiedOrderBookEntries({
3807
4141
  askRows,
3808
4142
  bidRows,
@@ -3810,7 +4144,7 @@ var MarketDetailsContent = ({
3810
4144
  spread: aggregatedOrderbookRows.spread
3811
4145
  });
3812
4146
  }, [aggregatedOrderbookRows.midpoint, aggregatedOrderbookRows.spread, askRows, bidRows]);
3813
- const orderbookSnapshotKey = useMemo6(() => {
4147
+ const orderbookSnapshotKey = useMemo7(() => {
3814
4148
  if (selectedOutcomesByVenue.length === 0) return null;
3815
4149
  return selectedOutcomesByVenue.map((item) => {
3816
4150
  var _a2, _b2;
@@ -3818,52 +4152,7 @@ var MarketDetailsContent = ({
3818
4152
  return `${item.outcomeId}:${snapshotVersion}`;
3819
4153
  }).join("|");
3820
4154
  }, [marketOrderbookDataById, selectedOutcomesByVenue]);
3821
- const chartAvailableOutcomesByVenue = useMemo6(() => {
3822
- return filterChartVenueOutcomesByRenderableVenues({
3823
- chartData: marketChartData,
3824
- venueOutcomes: chartOutcomesByVenue
3825
- });
3826
- }, [chartOutcomesByVenue, marketChartData]);
3827
- const graphSeries = useMemo6(() => {
3828
- var _a2, _b2, _c2, _d2;
3829
- const baseColor = resolveSeriesColor(
3830
- (_d2 = (_c2 = selectedGraphVenue != null ? selectedGraphVenue : (_a2 = chartAvailableOutcomesByVenue[0]) == null ? void 0 : _a2.venue) != null ? _c2 : (_b2 = chartOutcomesByVenue[0]) == null ? void 0 : _b2.venue) != null ? _d2 : "polymarket",
3831
- 0,
3832
- isDarkTheme
3833
- );
3834
- const domainStartTs = rollingWindow.startTs;
3835
- return resolveMarketChartDisplaySeries({
3836
- chartData: marketChartData,
3837
- selectedVenue: selectedGraphVenue,
3838
- transformProbability: (value) => value
3839
- }).map((seriesItem) => {
3840
- return {
3841
- id: `${resolvedChartOutcomeLabel != null ? resolvedChartOutcomeLabel : "graph"}-${seriesItem.venue}-${chartPrimaryOutcomeId != null ? chartPrimaryOutcomeId : "chart"}`,
3842
- venue: selectedGraphVenue != null ? selectedGraphVenue : seriesItem.venue,
3843
- color: seriesItem.venue === "aggregate" ? baseColor : resolveSeriesColor(seriesItem.venue, 0, isDarkTheme),
3844
- // Constrain to the rolling [nowSec - rangeSeconds, …] domain so stale
3845
- // bars don't bleed in across a range shrink or long mount.
3846
- points: seriesItem.points.filter((point) => point.time >= domainStartTs)
3847
- };
3848
- });
3849
- }, [
3850
- isDarkTheme,
3851
- chartPrimaryOutcomeId,
3852
- marketChartData,
3853
- rollingWindow.startTs,
3854
- selectedGraphVenue,
3855
- resolvedChartOutcomeLabel,
3856
- chartAvailableOutcomesByVenue,
3857
- chartOutcomesByVenue
3858
- ]);
3859
- const graphLiveState = useMemo6(() => {
3860
- return resolveMarketChartLiveState({
3861
- chartData: marketChartData,
3862
- selectedVenue: selectedGraphVenue,
3863
- transformProbability: (value) => value
3864
- });
3865
- }, [marketChartData, selectedGraphVenue]);
3866
- const otherRows = useMemo6(() => {
4155
+ const otherRows = useMemo7(() => {
3867
4156
  if (!model) return [];
3868
4157
  return resolveOtherTabRows(model.market, labels);
3869
4158
  }, [labels, model]);
@@ -3873,7 +4162,6 @@ var MarketDetailsContent = ({
3873
4162
  const isSnapshotUnavailableError = typeof orderBookError === "object" && orderBookError != null && "message" in orderBookError && typeof orderBookError.message === "string" && /^snapshot unavailable for\s+\S+/i.test(orderBookError.message);
3874
4163
  const orderBookErrorDescription = isSnapshotUnavailableError ? labels.marketDetails.orderBookUnavailableDescription : typeof orderBookError === "object" && orderBookError != null && "message" in orderBookError && typeof orderBookError.message === "string" && orderBookError.message.trim().length > 0 ? orderBookError.message : labels.marketDetails.orderBookUnavailableDescription;
3875
4164
  const hasNoOrderBook = isOrderBookNotFound && !isMarketResolved || !isOrderBookLoading && !hasOrderBookError && (selectedOutcomesByVenue.length === 0 || aggregatedOrderbookRows.hasNoOrderBook);
3876
- const hasChartError = !!marketChartError;
3877
4165
  const selectHeaderOutcome = ({
3878
4166
  item,
3879
4167
  shouldNotifyOutcomeSelect = false
@@ -3881,7 +4169,7 @@ var MarketDetailsContent = ({
3881
4169
  var _a2, _b2;
3882
4170
  if (isOutcomeSelectionLocked) return;
3883
4171
  if (item == null ? void 0 : item.id) {
3884
- const targetMarket = (_a2 = model == null ? void 0 : model.market.venueMarkets.find(
4172
+ const targetMarket = (_a2 = venueMarkets.find(
3885
4173
  (venueMarket) => venueMarket.venueMarketOutcomes.some((outcome) => outcome.id === item.id)
3886
4174
  )) != null ? _a2 : null;
3887
4175
  if ((targetMarket == null ? void 0 : targetMarket.id) && targetMarket.id !== (tradingContext == null ? void 0 : tradingContext.selectedMarketId)) {
@@ -3923,23 +4211,14 @@ var MarketDetailsContent = ({
3923
4211
  if (!marketId) return;
3924
4212
  onOpenChange == null ? void 0 : onOpenChange(marketId);
3925
4213
  };
3926
- const handleGraphVenueToggle = (venue) => {
3927
- setSelectedGraphVenue((currentVenue) => {
3928
- if (currentVenue === venue) return null;
3929
- return venue;
3930
- });
3931
- };
3932
4214
  const handleRetryOrderBook = () => {
3933
4215
  void refetchOrderBook();
3934
4216
  };
3935
- const handleRetryMarketChart = () => {
3936
- void refetchMarketChart();
3937
- };
3938
4217
  const orderbookState = marketTradingState.isTradingDisabled ? {
3939
4218
  kind: "disabled",
3940
4219
  title: marketStatePresentation.title,
3941
4220
  description: marketStatePresentation.description,
3942
- icon: /* @__PURE__ */ jsx9(Icon, { name: marketStatePresentation.iconName, className: "h-5 w-5", "aria-hidden": "true" })
4221
+ icon: /* @__PURE__ */ jsx10(Icon, { name: marketStatePresentation.iconName, className: "h-5 w-5", "aria-hidden": "true" })
3943
4222
  } : isOrderBookLoading ? { kind: "loading" } : hasOrderBookError ? {
3944
4223
  kind: "error",
3945
4224
  title: labels.marketDetails.orderBookUnavailableTitle,
@@ -3954,22 +4233,27 @@ var MarketDetailsContent = ({
3954
4233
  title: labels.marketDetails.orderBookEmptyTitle,
3955
4234
  description: labels.marketDetails.orderBookEmptyDescription
3956
4235
  } : { kind: "data" };
3957
- useEffect4(() => {
3958
- if (!selectedGraphVenue) {
3959
- return;
3960
- }
3961
- if (chartAvailableOutcomesByVenue.some((item) => item.venue === selectedGraphVenue)) {
3962
- return;
3963
- }
3964
- setSelectedGraphVenue(null);
3965
- }, [selectedGraphVenue, chartAvailableOutcomesByVenue]);
3966
4236
  if (marketId && !resolvedMarket) {
3967
- return /* @__PURE__ */ jsx9(MarketDetailsNotFoundState, { ariaLabel, classNames });
4237
+ return /* @__PURE__ */ jsx10(
4238
+ MarketDetailsNotFoundState,
4239
+ {
4240
+ marketId,
4241
+ ariaLabel,
4242
+ classNames
4243
+ }
4244
+ );
3968
4245
  }
3969
4246
  if (!model) {
3970
- return /* @__PURE__ */ jsx9(MarketDetailsUnavailableState, { ariaLabel, classNames });
4247
+ return /* @__PURE__ */ jsx10(
4248
+ MarketDetailsUnavailableState,
4249
+ {
4250
+ marketId,
4251
+ ariaLabel,
4252
+ classNames
4253
+ }
4254
+ );
3971
4255
  }
3972
- return /* @__PURE__ */ jsxs7(
4256
+ return /* @__PURE__ */ jsxs8(
3973
4257
  Card,
3974
4258
  {
3975
4259
  className: cn(
@@ -3980,9 +4264,10 @@ var MarketDetailsContent = ({
3980
4264
  classNames == null ? void 0 : classNames.root
3981
4265
  ),
3982
4266
  children: [
3983
- /* @__PURE__ */ jsxs7(
4267
+ /* @__PURE__ */ jsxs8(
3984
4268
  "div",
3985
4269
  {
4270
+ "data-market-id": marketId || void 0,
3986
4271
  className: cn(
3987
4272
  "agg-market-card-header",
3988
4273
  "flex flex-col items-stretch gap-3 px-5 py-3 md:flex-row md:flex-nowrap md:items-center md:justify-between",
@@ -3990,7 +4275,7 @@ var MarketDetailsContent = ({
3990
4275
  classNames == null ? void 0 : classNames.header
3991
4276
  ),
3992
4277
  children: [
3993
- /* @__PURE__ */ jsxs7(
4278
+ /* @__PURE__ */ jsxs8(
3994
4279
  "button",
3995
4280
  {
3996
4281
  className: cn(
@@ -4004,17 +4289,17 @@ var MarketDetailsContent = ({
4004
4289
  "aria-controls": detailsContentId,
4005
4290
  "aria-label": isOpened ? labels.marketDetails.toggleCloseDetailsAria(model.title) : labels.marketDetails.toggleOpenDetailsAria(model.title),
4006
4291
  children: [
4007
- /* @__PURE__ */ jsxs7("div", { className: "agg-market-summary flex min-w-24 flex-1 items-center gap-3 md:gap-4", children: [
4008
- /* @__PURE__ */ jsx9(
4292
+ /* @__PURE__ */ jsxs8("div", { className: "agg-market-summary flex min-w-24 flex-1 items-center gap-3 md:gap-4", children: [
4293
+ !compactHeader ? /* @__PURE__ */ jsx10(
4009
4294
  RemoteImage,
4010
4295
  {
4011
4296
  src: optimizedImageUrl3(model.image, 60),
4012
4297
  alt: "",
4013
4298
  className: "agg-market-image size-12 rounded-agg-lg object-cover md:size-[60px]"
4014
4299
  }
4015
- ),
4016
- /* @__PURE__ */ jsxs7("div", { className: "flex min-w-24 flex-col", children: [
4017
- /* @__PURE__ */ jsx9(Tooltip, { content: model.title, side: "top", children: /* @__PURE__ */ jsx9("div", { className: "min-w-0", children: /* @__PURE__ */ jsx9(
4300
+ ) : null,
4301
+ /* @__PURE__ */ jsxs8("div", { className: "flex min-w-24 flex-col", children: [
4302
+ /* @__PURE__ */ jsx10(Tooltip, { content: model.title, side: "top", children: /* @__PURE__ */ jsx10("div", { className: "min-w-0", children: /* @__PURE__ */ jsx10(
4018
4303
  Typography,
4019
4304
  {
4020
4305
  as: "h3",
@@ -4023,16 +4308,16 @@ var MarketDetailsContent = ({
4023
4308
  children: model.title
4024
4309
  }
4025
4310
  ) }) }),
4026
- /* @__PURE__ */ jsx9("div", { className: "flex items-center gap-3", children: /* @__PURE__ */ jsx9(
4311
+ /* @__PURE__ */ jsx10("div", { className: "flex items-center gap-3", children: /* @__PURE__ */ jsx10(
4027
4312
  Typography,
4028
4313
  {
4029
4314
  variant: "label",
4030
4315
  className: "agg-market-meta truncate text-agg-muted-foreground",
4031
- children: model.subtitle
4316
+ children: subtitleOverride != null ? subtitleOverride : model.subtitle
4032
4317
  }
4033
4318
  ) }),
4034
- marketTradingState.isTradingDisabled && marketTradingState.kind !== "resolved" && !isUpcomingMarket ? /* @__PURE__ */ jsxs7("div", { className: "mt-2 flex flex-wrap items-center gap-2 justify-center md:justify-start", children: [
4035
- /* @__PURE__ */ jsxs7(
4319
+ marketTradingState.isTradingDisabled && marketTradingState.kind !== "resolved" && !isUpcomingMarket ? /* @__PURE__ */ jsxs8("div", { className: "mt-2 flex flex-wrap items-center gap-2 justify-center md:justify-start", children: [
4320
+ /* @__PURE__ */ jsxs8(
4036
4321
  "span",
4037
4322
  {
4038
4323
  className: cn(
@@ -4040,7 +4325,7 @@ var MarketDetailsContent = ({
4040
4325
  resolveTradingStateBadgeClassName(marketTradingState.kind)
4041
4326
  ),
4042
4327
  children: [
4043
- /* @__PURE__ */ jsx9(
4328
+ /* @__PURE__ */ jsx10(
4044
4329
  Icon,
4045
4330
  {
4046
4331
  name: marketStatePresentation.iconName,
@@ -4048,20 +4333,20 @@ var MarketDetailsContent = ({
4048
4333
  className: "h-3.5 w-3.5"
4049
4334
  }
4050
4335
  ),
4051
- /* @__PURE__ */ jsx9("span", { children: marketStatePresentation.badgeLabel })
4336
+ /* @__PURE__ */ jsx10("span", { children: marketStatePresentation.badgeLabel })
4052
4337
  ]
4053
4338
  }
4054
4339
  ),
4055
- marketStatePresentation.timestampLabel ? /* @__PURE__ */ jsx9(Typography, { variant: "label", className: "text-agg-muted-foreground", children: marketStatePresentation.timestampLabel }) : null,
4056
- marketStatePresentation.winningOutcomeLabel ? /* @__PURE__ */ jsx9(Typography, { variant: "label", className: "text-agg-muted-foreground", children: marketStatePresentation.winningOutcomeLabel }) : null
4340
+ marketStatePresentation.timestampLabel ? /* @__PURE__ */ jsx10(Typography, { variant: "label", className: "text-agg-muted-foreground", children: marketStatePresentation.timestampLabel }) : null,
4341
+ marketStatePresentation.winningOutcomeLabel ? /* @__PURE__ */ jsx10(Typography, { variant: "label", className: "text-agg-muted-foreground", children: marketStatePresentation.winningOutcomeLabel }) : null
4057
4342
  ] }) : null
4058
4343
  ] })
4059
4344
  ] }),
4060
- /* @__PURE__ */ jsx9(Typography, { as: "div", variant: "heading", className: "agg-market-headline shrink-0", children: formatProbabilityPercent(headlineProbability, formatPercent) })
4345
+ !compactHeader ? /* @__PURE__ */ jsx10(Typography, { as: "div", variant: "heading", className: "agg-market-headline shrink-0", children: formatProbabilityPercent(headlineProbability, formatPercent) }) : null
4061
4346
  ]
4062
4347
  }
4063
4348
  ),
4064
- marketTradingState.kind === "resolved" && marketTradingState.winningOutcome ? /* @__PURE__ */ jsx9("div", { className: "agg-outcomes flex w-full items-center justify-end md:w-auto md:shrink-0", children: /* @__PURE__ */ jsxs7(
4349
+ marketTradingState.kind === "resolved" && marketTradingState.winningOutcome ? /* @__PURE__ */ jsx10("div", { className: "agg-outcomes flex w-full items-center justify-end md:w-auto md:shrink-0", children: /* @__PURE__ */ jsxs8(
4065
4350
  "span",
4066
4351
  {
4067
4352
  className: cn(
@@ -4074,7 +4359,7 @@ var MarketDetailsContent = ({
4074
4359
  "border-transparent bg-agg-secondary-hover"
4075
4360
  ),
4076
4361
  children: [
4077
- /* @__PURE__ */ jsx9(
4362
+ /* @__PURE__ */ jsx10(
4078
4363
  Icon,
4079
4364
  {
4080
4365
  name: marketTradingState.winningOutcome.label.trim().toLowerCase() === "yes" ? "check-circle" : "cross-circle",
@@ -4085,10 +4370,10 @@ var MarketDetailsContent = ({
4085
4370
  )
4086
4371
  }
4087
4372
  ),
4088
- /* @__PURE__ */ jsx9(Typography, { variant: "body", children: labels.eventMarketPage.resolvedOutcome(marketTradingState.winningOutcome.label) })
4373
+ /* @__PURE__ */ jsx10(Typography, { variant: "body", children: labels.eventMarketPage.resolvedOutcome(marketTradingState.winningOutcome.label) })
4089
4374
  ]
4090
4375
  }
4091
- ) }) : isUpcomingMarket ? /* @__PURE__ */ jsx9("div", { className: "agg-outcomes flex w-full items-center justify-end md:w-auto md:shrink-0", children: /* @__PURE__ */ jsxs7(
4376
+ ) }) : isUpcomingMarket ? /* @__PURE__ */ jsx10("div", { className: "agg-outcomes flex w-full items-center justify-end md:w-auto md:shrink-0", children: /* @__PURE__ */ jsxs8(
4092
4377
  "span",
4093
4378
  {
4094
4379
  className: cn(
@@ -4097,7 +4382,7 @@ var MarketDetailsContent = ({
4097
4382
  resolveTradingStateBadgeClassName(marketTradingState.kind)
4098
4383
  ),
4099
4384
  children: [
4100
- /* @__PURE__ */ jsx9(
4385
+ /* @__PURE__ */ jsx10(
4101
4386
  Icon,
4102
4387
  {
4103
4388
  name: marketStatePresentation.iconName,
@@ -4106,10 +4391,10 @@ var MarketDetailsContent = ({
4106
4391
  "aria-hidden": "true"
4107
4392
  }
4108
4393
  ),
4109
- /* @__PURE__ */ jsx9("span", { children: marketStatePresentation.badgeLabel })
4394
+ /* @__PURE__ */ jsx10("span", { children: marketStatePresentation.badgeLabel })
4110
4395
  ]
4111
4396
  }
4112
- ) }) : /* @__PURE__ */ jsx9(
4397
+ ) }) : /* @__PURE__ */ jsx10(
4113
4398
  "div",
4114
4399
  {
4115
4400
  className: "agg-outcomes flex w-full flex-wrap gap-2 md:w-auto md:shrink-0 md:flex-nowrap",
@@ -4118,9 +4403,10 @@ var MarketDetailsContent = ({
4118
4403
  onKeyDown: (eventToHandle) => handleOutcomeKeyDown(eventToHandle),
4119
4404
  children: headerOutcomeItems.map((item) => {
4120
4405
  const isActiveOutcome = item.id === selectedOutcomeId;
4121
- return /* @__PURE__ */ jsx9(
4406
+ return /* @__PURE__ */ jsx10(
4122
4407
  MarketDetailsOutcomeButton,
4123
4408
  {
4409
+ enforceFixedWidth: headerOutcomeVariant != null,
4124
4410
  item,
4125
4411
  isSelected: isActiveOutcome,
4126
4412
  enableAnimations: config.features.enableAnimations,
@@ -4144,7 +4430,8 @@ var MarketDetailsContent = ({
4144
4430
  ]
4145
4431
  }
4146
4432
  ),
4147
- /* @__PURE__ */ jsx9(
4433
+ headerAccessory ? /* @__PURE__ */ jsx10("div", { className: "agg-market-card-accessory border-t border-agg-separator", children: headerAccessory }) : null,
4434
+ /* @__PURE__ */ jsx10(
4148
4435
  "div",
4149
4436
  {
4150
4437
  id: detailsContentId,
@@ -4158,9 +4445,9 @@ var MarketDetailsContent = ({
4158
4445
  isOpened ? "grid-rows-[1fr] opacity-100" : "pointer-events-none grid-rows-[0fr] opacity-0"
4159
4446
  ),
4160
4447
  "aria-hidden": !isOpened,
4161
- children: /* @__PURE__ */ jsxs7("div", { className: "min-h-0", children: [
4162
- /* @__PURE__ */ jsx9("div", { className: "h-px w-full bg-agg-separator" }),
4163
- /* @__PURE__ */ jsxs7(
4448
+ children: /* @__PURE__ */ jsxs8("div", { className: "min-h-0", children: [
4449
+ /* @__PURE__ */ jsx10("div", { className: "h-px w-full bg-agg-separator" }),
4450
+ /* @__PURE__ */ jsxs8(
4164
4451
  "div",
4165
4452
  {
4166
4453
  className: cn(
@@ -4174,8 +4461,8 @@ var MarketDetailsContent = ({
4174
4461
  ) : "translate-y-5 opacity-0"
4175
4462
  ),
4176
4463
  children: [
4177
- !isResolvedMarket ? /* @__PURE__ */ jsxs7(Fragment2, { children: [
4178
- /* @__PURE__ */ jsx9("div", { className: cn("block", classNames == null ? void 0 : classNames.tabs), children: /* @__PURE__ */ jsx9(
4464
+ !isResolvedMarket ? /* @__PURE__ */ jsxs8(Fragment2, { children: [
4465
+ /* @__PURE__ */ jsx10("div", { className: cn("block", classNames == null ? void 0 : classNames.tabs), children: /* @__PURE__ */ jsx10(
4179
4466
  Tabs,
4180
4467
  {
4181
4468
  ariaLabel: labels.marketDetails.tabsAria,
@@ -4186,10 +4473,10 @@ var MarketDetailsContent = ({
4186
4473
  className: "agg-market-tabs w-full px-5"
4187
4474
  }
4188
4475
  ) }),
4189
- /* @__PURE__ */ jsx9("div", { className: "h-px w-full bg-agg-separator" })
4476
+ /* @__PURE__ */ jsx10("div", { className: "h-px w-full bg-agg-separator" })
4190
4477
  ] }) : null,
4191
- /* @__PURE__ */ jsxs7("div", { className: cn("agg-market-card-body p-0", classNames == null ? void 0 : classNames.content), children: [
4192
- effectiveSelectedTab === "order-book" ? /* @__PURE__ */ jsx9(
4478
+ /* @__PURE__ */ jsxs8("div", { className: cn("agg-market-card-body p-0", classNames == null ? void 0 : classNames.content), children: [
4479
+ effectiveSelectedTab === "order-book" ? /* @__PURE__ */ jsx10(
4193
4480
  OrderbookWithStates,
4194
4481
  {
4195
4482
  state: orderbookState,
@@ -4215,159 +4502,29 @@ var MarketDetailsContent = ({
4215
4502
  wrapperClassName: classNames == null ? void 0 : classNames.orderBook
4216
4503
  }
4217
4504
  ) : null,
4218
- effectiveSelectedTab === "graph" ? /* @__PURE__ */ jsxs7("div", { className: cn("agg-price-chart flex flex-col gap-5 p-5", classNames == null ? void 0 : classNames.graph), children: [
4219
- hasChartError ? /* @__PURE__ */ jsx9(
4220
- StateMessage,
4221
- {
4222
- title: labels.marketDetails.chartUnavailableTitle,
4223
- description: labels.marketDetails.chartUnavailableDescription,
4224
- icon: /* @__PURE__ */ jsx9(WarningIcon, {}),
4225
- onAction: handleRetryMarketChart,
4226
- classNames: { root: "min-h-[248px] px-5 py-10 md:min-h-[272px]" }
4227
- }
4228
- ) : /* @__PURE__ */ jsx9(
4229
- LineChart,
4230
- {
4231
- series: graphSeries,
4232
- height: 260,
4233
- isLoading: isMarketChartLoading,
4234
- chartType: selectedChartType,
4235
- liveCandle: selectedChartType === "candlestick" ? (_k = graphLiveState.liveCandle) != null ? _k : void 0 : void 0,
4236
- lineValue: graphLiveState.lineValue,
4237
- classNames: { root: "agg-chart-region w-full" },
4238
- showSeriesControls: chartAvailableOutcomesByVenue.length > 0 || headerOutcomeItems.length > 0,
4239
- renderSeriesControls: () => {
4240
- var _a2, _b2, _c2, _d2;
4241
- return /* @__PURE__ */ jsxs7("div", { className: "agg-chart-toolbar w-full flex flex-col gap-4 md:flex-row md:items-center md:justify-between", children: [
4242
- /* @__PURE__ */ jsx9("div", { className: "agg-market-venues flex flex-wrap gap-2", children: chartAvailableOutcomesByVenue.map((item) => {
4243
- var _a3;
4244
- const probability = formatProbabilityPercent(
4245
- (_a3 = wsLivePrices.get(item.outcome.id)) != null ? _a3 : item.outcome.price,
4246
- formatPercent
4247
- );
4248
- const isActiveVenue = selectedGraphVenue === item.venue;
4249
- return /* @__PURE__ */ jsxs7(
4250
- "button",
4251
- {
4252
- type: "button",
4253
- "aria-label": `${item.venue} ${probability}`,
4254
- "aria-pressed": isActiveVenue,
4255
- className: cn(
4256
- "agg-market-venue",
4257
- "cursor-pointer",
4258
- "inline-flex items-center gap-2 rounded-agg-full border px-4 py-2",
4259
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-agg-primary focus-visible:ring-offset-0 focus-visible:ring-offset-agg-secondary-hover",
4260
- isActiveVenue ? "border-agg-primary bg-agg-secondary" : "border-transparent bg-agg-secondary-hover"
4261
- ),
4262
- onClick: (e) => {
4263
- e.preventDefault();
4264
- e.stopPropagation();
4265
- handleGraphVenueToggle(item.venue);
4266
- },
4267
- children: [
4268
- /* @__PURE__ */ jsx9(VenueLogo, { venue: item.venue, size: "small" }),
4269
- /* @__PURE__ */ jsx9("span", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: probability })
4270
- ]
4271
- },
4272
- `${item.market.id}-${item.outcome.id}`
4273
- );
4274
- }) }),
4275
- !isOutcomeSelectionLocked ? /* @__PURE__ */ jsx9(
4276
- SwitchButton,
4277
- {
4278
- ariaLabel: labels.marketDetails.outcomeSelectorAria,
4279
- className: "agg-outcome-switch w-full shrink-0 md:w-fit",
4280
- value: (_d2 = (_c2 = (_a2 = headerOutcomeItems.find(
4281
- (outcome) => outcome.label === resolvedChartOutcomeLabel
4282
- )) == null ? void 0 : _a2.id) != null ? _c2 : (_b2 = headerOutcomeItems[0]) == null ? void 0 : _b2.id) != null ? _d2 : "",
4283
- onValueChange: (outcomeId) => {
4284
- const outcome = headerOutcomeItems.find(
4285
- (headerOutcomeItem) => headerOutcomeItem.id === outcomeId
4286
- );
4287
- if (!outcome) return;
4288
- setChartOutcomeLabel(outcome.label);
4289
- },
4290
- options: headerOutcomeItems.map((outcome) => {
4291
- var _a3, _b3;
4292
- const price = outcome.probability;
4293
- return {
4294
- value: outcome.id,
4295
- label: `${(_a3 = outcome == null ? void 0 : outcome.title) != null ? _a3 : outcome.label} ${formatProbabilityCents(price)}`,
4296
- ariaLabel: `${(_b3 = outcome == null ? void 0 : outcome.title) != null ? _b3 : outcome.label} ${formatProbabilityCents(price)}`
4297
- };
4298
- })
4299
- }
4300
- ) : null
4301
- ] });
4302
- }
4303
- }
4304
- ),
4305
- /* @__PURE__ */ jsxs7(
4306
- "div",
4307
- {
4308
- className: cn(
4309
- "agg-chart-footer",
4310
- "flex flex-row justify-between gap-2 text-agg-sm leading-agg-5 text-agg-muted-foreground md:flex-row md:items-center md:justify-between",
4311
- classNames == null ? void 0 : classNames.footer
4312
- ),
4313
- children: [
4314
- /* @__PURE__ */ jsx9("span", { children: typeof model.market.volume !== "number" ? labels.marketDetails.volumeUnavailable : model.market.volume > 0 ? `${config.formatting.formatCompactCurrency(model.market.volume)} ${labels.marketDetails.meta.volumeSuffix}` : "" }),
4315
- /* @__PURE__ */ jsxs7("div", { className: "flex flex-wrap items-center gap-3 md:gap-4", children: [
4316
- /* @__PURE__ */ jsx9(
4317
- ChartTypeSwitch,
4318
- {
4319
- className: "agg-chart-type-switch shrink-0",
4320
- value: selectedChartType,
4321
- onValueChange: setSelectedChartType
4322
- }
4323
- ),
4324
- /* @__PURE__ */ jsx9(
4325
- "span",
4326
- {
4327
- "aria-hidden": "true",
4328
- className: "hidden h-4 w-px bg-agg-separator md:block"
4329
- }
4330
- ),
4331
- CHART_TIME_RANGES2.map((timeRange) => {
4332
- const isActive = effectiveChartTimeRange === timeRange;
4333
- const isDisabled = isResolvedMarket && timeRange !== "ALL";
4334
- return /* @__PURE__ */ jsx9(
4335
- "button",
4336
- {
4337
- type: "button",
4338
- disabled: isDisabled,
4339
- className: cn(
4340
- "agg-chart-time-range-trigger",
4341
- "cursor-pointer text-agg-sm leading-agg-5",
4342
- isDisabled && "cursor-not-allowed opacity-50",
4343
- isActive ? "font-agg-bold text-agg-foreground" : "font-agg-normal text-agg-muted-foreground"
4344
- ),
4345
- "aria-pressed": isActive,
4346
- "aria-disabled": isDisabled,
4347
- onClick: (e) => {
4348
- e.preventDefault();
4349
- e.stopPropagation();
4350
- if (isDisabled) return;
4351
- setChartRangeOverride(null);
4352
- setSelectedTimeRange(timeRange);
4353
- },
4354
- children: timeRange === "ALL" ? labels.eventItemDetails.allTimeRange : timeRange
4355
- },
4356
- timeRange
4357
- );
4358
- })
4359
- ] })
4360
- ]
4361
- }
4362
- )
4363
- ] }) : null,
4364
- effectiveSelectedTab === "other" ? /* @__PURE__ */ jsx9("div", { className: "agg-market-meta flex flex-col gap-4", children: otherContent != null ? otherContent : /* @__PURE__ */ jsx9("div", { className: "agg-market-meta-list grid grid-cols-1 gap-3", children: otherRows.map((row) => /* @__PURE__ */ jsxs7(
4505
+ isOpened && effectiveSelectedTab === "graph" ? /* @__PURE__ */ jsx10(
4506
+ MarketDetailsGraphPanel,
4507
+ {
4508
+ venueMarkets: model.market.venueMarkets,
4509
+ selectedOutcomeLabel,
4510
+ selectedOutcomeId,
4511
+ livePrices,
4512
+ wsLivePrices,
4513
+ headerOutcomeItems,
4514
+ isResolvedMarket,
4515
+ isOutcomeSelectionLocked,
4516
+ volume: model.market.volume,
4517
+ live,
4518
+ classNames: { graph: classNames == null ? void 0 : classNames.graph, footer: classNames == null ? void 0 : classNames.footer }
4519
+ }
4520
+ ) : null,
4521
+ effectiveSelectedTab === "other" ? /* @__PURE__ */ jsx10("div", { className: "agg-market-meta flex flex-col gap-4", children: otherContent != null ? otherContent : /* @__PURE__ */ jsx10("div", { className: "agg-market-meta-list grid grid-cols-1 gap-3", children: otherRows.map((row) => /* @__PURE__ */ jsxs8(
4365
4522
  "div",
4366
4523
  {
4367
4524
  className: "agg-market-meta-row flex items-center justify-between rounded-agg-xl bg-agg-secondary-hover px-4 py-3",
4368
4525
  children: [
4369
- /* @__PURE__ */ jsx9(Typography, { variant: "label", className: "text-agg-muted-foreground", children: row.label }),
4370
- /* @__PURE__ */ jsx9(Typography, { variant: "body", className: "text-right", children: row.value })
4526
+ /* @__PURE__ */ jsx10(Typography, { variant: "label", className: "text-agg-muted-foreground", children: row.label }),
4527
+ /* @__PURE__ */ jsx10(Typography, { variant: "body", className: "text-right", children: row.value })
4371
4528
  ]
4372
4529
  },
4373
4530
  row.label
@@ -4385,9 +4542,9 @@ var MarketDetailsContent = ({
4385
4542
  };
4386
4543
  var MarketDetails = (_a) => {
4387
4544
  var _b = _a, { isOpened } = _b, props = __objRest(_b, ["isOpened"]);
4388
- const labels = useLabels6();
4545
+ const labels = useLabels7();
4389
4546
  if (props.isLoading) {
4390
- return /* @__PURE__ */ jsx9(
4547
+ return /* @__PURE__ */ jsx10(
4391
4548
  Skeleton,
4392
4549
  {
4393
4550
  view: "market-details-minified",
@@ -4397,7 +4554,7 @@ var MarketDetails = (_a) => {
4397
4554
  );
4398
4555
  }
4399
4556
  if ("venueMarkets" in props && props.venueMarkets) {
4400
- return /* @__PURE__ */ jsx9(
4557
+ return /* @__PURE__ */ jsx10(
4401
4558
  MarketDetailsContent,
4402
4559
  __spreadProps(__spreadValues({}, props), {
4403
4560
  isOpened,
@@ -4409,7 +4566,7 @@ var MarketDetails = (_a) => {
4409
4566
  );
4410
4567
  }
4411
4568
  const { classNames: fallbackClassNames } = props;
4412
- return /* @__PURE__ */ jsx9(MarketDetailsUnavailableState, { classNames: fallbackClassNames });
4569
+ return /* @__PURE__ */ jsx10(MarketDetailsUnavailableState, { classNames: fallbackClassNames });
4413
4570
  };
4414
4571
  MarketDetails.displayName = "MarketDetails";
4415
4572
  var AFFIRMATIVE_WINNER_LABELS = /* @__PURE__ */ new Set(["yes", "up", "buy", "long", "true"]);
@@ -4466,11 +4623,11 @@ var MarketDetailsList = ({
4466
4623
  midpointsResult
4467
4624
  }) => {
4468
4625
  var _a, _b;
4469
- const labels = useLabels6();
4626
+ const labels = useLabels7();
4470
4627
  const tradingContext = useEventTradingContext2();
4471
4628
  const selectedMarketId = (_a = tradingContext == null ? void 0 : tradingContext.selectedMarketId) != null ? _a : null;
4472
- const [expandedMarketId, setExpandedMarketId] = useState4(null);
4473
- const [areResolvedMarketsVisible, setAreResolvedMarketsVisible] = useState4(false);
4629
+ const [expandedMarketId, setExpandedMarketId] = useState5(null);
4630
+ const [areResolvedMarketsVisible, setAreResolvedMarketsVisible] = useState5(false);
4474
4631
  const resolvedEventId = eventId || "";
4475
4632
  const {
4476
4633
  markets: rawMarkets,
@@ -4479,11 +4636,12 @@ var MarketDetailsList = ({
4479
4636
  } = useVenueMarkets2({
4480
4637
  venueEventId: resolvedEventId,
4481
4638
  enabled: !providedMarkets && !!resolvedEventId,
4482
- status: MarketStatus.open,
4483
- sortBy: "yesPrice",
4484
- sortDir: "desc"
4639
+ status: MarketStatus.open
4640
+ // No explicit sortBy: event-scoped /venue-markets sorts by the event's
4641
+ // type-aware order (structureOrderBy), matching the home-card top-3 and the
4642
+ // markets-under-an-event ordering. Passing sortBy here would override it.
4485
4643
  });
4486
- const sourceMarkets = useMemo6(() => {
4644
+ const sourceMarkets = useMemo7(() => {
4487
4645
  var _a2;
4488
4646
  if ((_a2 = eventTradingState == null ? void 0 : eventTradingState.marketStates) == null ? void 0 : _a2.length) {
4489
4647
  return eventTradingState.marketStates.map((item) => item.market);
@@ -4491,10 +4649,10 @@ var MarketDetailsList = ({
4491
4649
  if (providedMarkets) return providedMarkets;
4492
4650
  return rawMarkets;
4493
4651
  }, [eventTradingState == null ? void 0 : eventTradingState.marketStates, providedMarkets, rawMarkets]);
4494
- const isResolvedEvent = useMemo6(() => {
4652
+ const isResolvedEvent = useMemo7(() => {
4495
4653
  return resolveIsResolvedEvent(sourceMarkets, eventTradingState);
4496
4654
  }, [eventTradingState, sourceMarkets]);
4497
- const groupedMarkets = useMemo6(() => {
4655
+ const groupedMarkets = useMemo7(() => {
4498
4656
  if (sourceMarkets.length === 0) {
4499
4657
  return {
4500
4658
  primary: [],
@@ -4534,21 +4692,21 @@ var MarketDetailsList = ({
4534
4692
  return { primary, upcoming, resolved, closed };
4535
4693
  }, [eventTradingState, isResolvedEvent, sourceMarkets]);
4536
4694
  const shouldShowResolvedToggle = !isResolvedEvent && groupedMarkets.resolved.length > 0;
4537
- const visibleResolvedMarkets = useMemo6(() => {
4695
+ const visibleResolvedMarkets = useMemo7(() => {
4538
4696
  if (isResolvedEvent || areResolvedMarketsVisible) return groupedMarkets.resolved;
4539
4697
  return [];
4540
4698
  }, [areResolvedMarketsVisible, groupedMarkets.resolved, isResolvedEvent]);
4541
- const displayedMarkets = useMemo6(() => {
4699
+ const displayedMarkets = useMemo7(() => {
4542
4700
  return [...groupedMarkets.primary, ...visibleResolvedMarkets];
4543
4701
  }, [groupedMarkets.primary, visibleResolvedMarkets]);
4544
4702
  const hasPrefetchedMarkets = !!providedMarkets || !!((_b = eventTradingState == null ? void 0 : eventTradingState.marketStates) == null ? void 0 : _b.length);
4545
- const midpointEligibleMarkets = useMemo6(() => {
4703
+ const midpointEligibleMarkets = useMemo7(() => {
4546
4704
  return displayedMarkets.filter(
4547
4705
  (market) => resolveMarketTradingState(market).kind !== "resolved"
4548
4706
  );
4549
4707
  }, [displayedMarkets]);
4550
4708
  const { prices: midpointsFallback, venueByOutcomeId: midpointsFallbackVenues } = useViewportMidpoints(midpointEligibleMarkets);
4551
- useEffect4(() => {
4709
+ useEffect5(() => {
4552
4710
  if (isResolvedEvent) {
4553
4711
  setAreResolvedMarketsVisible(false);
4554
4712
  return;
@@ -4557,7 +4715,7 @@ var MarketDetailsList = ({
4557
4715
  setAreResolvedMarketsVisible(false);
4558
4716
  }
4559
4717
  }, [groupedMarkets.resolved.length, isResolvedEvent]);
4560
- useEffect4(() => {
4718
+ useEffect5(() => {
4561
4719
  if (displayedMarkets.length === 0) return;
4562
4720
  if (selectedMarketId && displayedMarkets.some((market) => market.id === selectedMarketId)) {
4563
4721
  return;
@@ -4574,7 +4732,7 @@ var MarketDetailsList = ({
4574
4732
  if (!autoSelectFallbackMarket) return;
4575
4733
  tradingContext == null ? void 0 : tradingContext.selectMarket(fallbackSelectableMarket.id, fallbackSelectableMarket);
4576
4734
  }, [autoSelectFallbackMarket, displayedMarkets, selectedMarketId, sourceMarkets, tradingContext]);
4577
- useEffect4(() => {
4735
+ useEffect5(() => {
4578
4736
  if (!expandedMarketId) return;
4579
4737
  if (displayedMarkets.some((market) => market.id === expandedMarketId)) return;
4580
4738
  setExpandedMarketId(null);
@@ -4592,7 +4750,7 @@ var MarketDetailsList = ({
4592
4750
  tradingContext == null ? void 0 : tradingContext.selectMarket(market.id, market);
4593
4751
  };
4594
4752
  if (!hasPrefetchedMarkets && isLoading) {
4595
- return /* @__PURE__ */ jsx9(
4753
+ return /* @__PURE__ */ jsx10(
4596
4754
  Skeleton,
4597
4755
  {
4598
4756
  view: "market-details-minified",
@@ -4602,29 +4760,29 @@ var MarketDetailsList = ({
4602
4760
  );
4603
4761
  }
4604
4762
  if (!hasPrefetchedMarkets && error) {
4605
- return /* @__PURE__ */ jsx9(
4763
+ return /* @__PURE__ */ jsx10(
4606
4764
  StateMessage,
4607
4765
  {
4608
4766
  title: labels.marketDetails.unavailableTitle,
4609
4767
  description: labels.marketDetails.unavailableDescription,
4610
- icon: /* @__PURE__ */ jsx9(SearchEmptyIcon, {}),
4768
+ icon: /* @__PURE__ */ jsx10(SearchEmptyIcon, {}),
4611
4769
  classNames: { root: "min-h-[280px] md:min-h-[320px]" }
4612
4770
  }
4613
4771
  );
4614
4772
  }
4615
4773
  if (displayedMarkets.length === 0 && !shouldShowResolvedToggle) {
4616
4774
  const hasSourceMarkets = sourceMarkets.length > 0;
4617
- return /* @__PURE__ */ jsx9(
4775
+ return /* @__PURE__ */ jsx10(
4618
4776
  StateMessage,
4619
4777
  {
4620
4778
  title: hasSourceMarkets ? isResolvedEvent ? labels.markets.emptyResolved : labels.markets.emptyNoOpen : labels.marketDetails.notFoundTitle,
4621
4779
  description: hasSourceMarkets ? void 0 : labels.marketDetails.notFoundDescription,
4622
- icon: /* @__PURE__ */ jsx9(SearchEmptyIcon, {}),
4780
+ icon: /* @__PURE__ */ jsx10(SearchEmptyIcon, {}),
4623
4781
  classNames: { root: "min-h-[280px] md:min-h-[320px]" }
4624
4782
  }
4625
4783
  );
4626
4784
  }
4627
- const renderMarketCard = (market) => /* @__PURE__ */ jsx9("div", { children: /* @__PURE__ */ jsx9(
4785
+ const renderMarketCard = (market) => /* @__PURE__ */ jsx10("div", { children: /* @__PURE__ */ jsx10(
4628
4786
  MarketDetails,
4629
4787
  {
4630
4788
  marketId: market.id,
@@ -4651,9 +4809,9 @@ var MarketDetailsList = ({
4651
4809
  midpointsResult
4652
4810
  }
4653
4811
  ) }, market.id);
4654
- return /* @__PURE__ */ jsxs7("div", { className: cn("agg-market-list flex flex-col gap-3", classNames == null ? void 0 : classNames.root), children: [
4812
+ return /* @__PURE__ */ jsxs8("div", { className: cn("agg-market-list flex flex-col gap-3", classNames == null ? void 0 : classNames.root), children: [
4655
4813
  groupedMarkets.primary.map((market) => renderMarketCard(market)),
4656
- shouldShowResolvedToggle ? /* @__PURE__ */ jsx9(
4814
+ shouldShowResolvedToggle ? /* @__PURE__ */ jsx10(
4657
4815
  Button,
4658
4816
  {
4659
4817
  variant: "tertiary",
@@ -4663,7 +4821,7 @@ var MarketDetailsList = ({
4663
4821
  setAreResolvedMarketsVisible((isVisible) => !isVisible);
4664
4822
  },
4665
4823
  "aria-expanded": areResolvedMarketsVisible,
4666
- suffix: /* @__PURE__ */ jsx9(
4824
+ suffix: /* @__PURE__ */ jsx10(
4667
4825
  Icon,
4668
4826
  {
4669
4827
  name: areResolvedMarketsVisible ? "chevron-up" : "chevron-down",
@@ -4687,17 +4845,17 @@ import {
4687
4845
  useAppConfig as useAppConfig2,
4688
4846
  useCategories,
4689
4847
  useCategoryChildren,
4690
- useLabels as useLabels8,
4691
- useSdkUiConfig as useSdkUiConfig4,
4848
+ useLabels as useLabels9,
4849
+ useSdkUiConfig as useSdkUiConfig5,
4692
4850
  useVenueEvents
4693
4851
  } from "@agg-build/hooks";
4694
4852
  import { VENUES } from "@agg-build/sdk";
4695
4853
  import * as Dialog from "@radix-ui/react-dialog";
4696
- import { useEffect as useEffect6, useMemo as useMemo9, useRef as useRef7, useState as useState6 } from "react";
4854
+ import { useEffect as useEffect7, useMemo as useMemo10, useRef as useRef7, useState as useState7 } from "react";
4697
4855
 
4698
4856
  // src/events/list/category-sidebar.tsx
4699
- import { useMemo as useMemo7 } from "react";
4700
- import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
4857
+ import { useMemo as useMemo8 } from "react";
4858
+ import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
4701
4859
  var rowBase = cn(
4702
4860
  "flex min-h-11 w-full items-center gap-3 rounded-[6px] px-3 py-3",
4703
4861
  "text-left text-agg-sm font-agg-normal leading-agg-5",
@@ -4719,7 +4877,7 @@ var CategorySidebar = ({
4719
4877
  onToggleCategory
4720
4878
  }) => {
4721
4879
  const isDrilledIn = categoryPath.length > 0;
4722
- const sortedBaseChildren = useMemo7(() => {
4880
+ const sortedBaseChildren = useMemo8(() => {
4723
4881
  var _a;
4724
4882
  if (!baseCategoryId) return [];
4725
4883
  const children = [...(_a = childrenByParentId.get(baseCategoryId)) != null ? _a : []];
@@ -4739,7 +4897,7 @@ var CategorySidebar = ({
4739
4897
  }) => {
4740
4898
  var _a, _b;
4741
4899
  const hasKnownChildren = ((_b = (_a = childrenByParentId.get(entry.id)) == null ? void 0 : _a.length) != null ? _b : 0) > 0;
4742
- return /* @__PURE__ */ jsxs8(
4900
+ return /* @__PURE__ */ jsxs9(
4743
4901
  "button",
4744
4902
  {
4745
4903
  type: "button",
@@ -4747,8 +4905,8 @@ var CategorySidebar = ({
4747
4905
  className: isSelected ? selectedRowClassName : idleRowClassName,
4748
4906
  onClick,
4749
4907
  children: [
4750
- /* @__PURE__ */ jsx10("span", { className: "min-w-0 flex-1 truncate first-letter:uppercase", children: entry.label }),
4751
- hasKnownChildren ? /* @__PURE__ */ jsx10(
4908
+ /* @__PURE__ */ jsx11("span", { className: "min-w-0 flex-1 truncate first-letter:uppercase", children: entry.label }),
4909
+ hasKnownChildren ? /* @__PURE__ */ jsx11(
4752
4910
  Icon,
4753
4911
  {
4754
4912
  name: isExpanded ? "chevron-up" : "chevron-down",
@@ -4756,7 +4914,7 @@ var CategorySidebar = ({
4756
4914
  color: "currentColor",
4757
4915
  className: "shrink-0 text-agg-muted-foreground"
4758
4916
  }
4759
- ) : /* @__PURE__ */ jsx10("span", { className: "shrink-0 text-agg-muted-foreground", children: entry.eventCount })
4917
+ ) : /* @__PURE__ */ jsx11("span", { className: "shrink-0 text-agg-muted-foreground", children: entry.eventCount })
4760
4918
  ]
4761
4919
  },
4762
4920
  entry.id
@@ -4774,27 +4932,27 @@ var CategorySidebar = ({
4774
4932
  const hasKnownChildren = childCategories.length > 0;
4775
4933
  const isExpanded = ((_d = categoryPath[depth]) == null ? void 0 : _d.id) === category.id && !collapsedCategoryIds.has(category.id);
4776
4934
  const isSelected = ((_e = categoryPath[depth]) == null ? void 0 : _e.id) === category.id && categoryPath.length === depth + 1;
4777
- return /* @__PURE__ */ jsxs8("div", { className: "flex w-full flex-col", children: [
4935
+ return /* @__PURE__ */ jsxs9("div", { className: "flex w-full flex-col", children: [
4778
4936
  renderRow({
4779
4937
  entry,
4780
4938
  isExpanded,
4781
4939
  isSelected,
4782
4940
  onClick: () => onToggleCategory({ entry, depth, hasKnownChildren, isExpanded, isSelected })
4783
4941
  }),
4784
- /* @__PURE__ */ jsx10(
4942
+ /* @__PURE__ */ jsx11(
4785
4943
  "div",
4786
4944
  {
4787
4945
  className: cn(
4788
4946
  "grid transition-[grid-template-rows] duration-150 ease-in-out motion-reduce:transition-none",
4789
4947
  isExpanded ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
4790
4948
  ),
4791
- children: /* @__PURE__ */ jsx10("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx10("div", { className: "flex w-full flex-col gap-1 pl-4 pt-1", children: childCategories.map((child) => renderBranch(child, depth + 1)) }) })
4949
+ children: /* @__PURE__ */ jsx11("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx11("div", { className: "flex w-full flex-col gap-1 pl-4 pt-1", children: childCategories.map((child) => renderBranch(child, depth + 1)) }) })
4792
4950
  }
4793
4951
  )
4794
4952
  ] }, category.id);
4795
4953
  };
4796
- return /* @__PURE__ */ jsxs8("div", { className: "flex w-full flex-col gap-1", children: [
4797
- /* @__PURE__ */ jsxs8(
4954
+ return /* @__PURE__ */ jsxs9("div", { className: "flex w-full flex-col gap-1", children: [
4955
+ /* @__PURE__ */ jsxs9(
4798
4956
  "button",
4799
4957
  {
4800
4958
  type: "button",
@@ -4802,8 +4960,8 @@ var CategorySidebar = ({
4802
4960
  className: !isDrilledIn ? selectedRowClassName : idleRowClassName,
4803
4961
  onClick: onSelectAll,
4804
4962
  children: [
4805
- /* @__PURE__ */ jsx10("span", { className: "min-w-0 flex-1 truncate", children: labels.subcategoriesAll }),
4806
- /* @__PURE__ */ jsx10("span", { className: "shrink-0 text-agg-muted-foreground", children: totalEventCount })
4963
+ /* @__PURE__ */ jsx11("span", { className: "min-w-0 flex-1 truncate", children: labels.subcategoriesAll }),
4964
+ /* @__PURE__ */ jsx11("span", { className: "shrink-0 text-agg-muted-foreground", children: totalEventCount })
4807
4965
  ]
4808
4966
  }
4809
4967
  ),
@@ -4813,8 +4971,8 @@ var CategorySidebar = ({
4813
4971
  CategorySidebar.displayName = "CategorySidebar";
4814
4972
 
4815
4973
  // src/events/list/event-list-tabs.tsx
4816
- import { getVenueAvailabilityState, useAppConfig, useGeoBlock, useLabels as useLabels7 } from "@agg-build/hooks";
4817
- import { useCallback as useCallback3, useEffect as useEffect5, useMemo as useMemo8, useRef as useRef6, useState as useState5 } from "react";
4974
+ import { getVenueAvailabilityState, useAppConfig, useGeoBlock, useLabels as useLabels8 } from "@agg-build/hooks";
4975
+ import { useCallback as useCallback3, useEffect as useEffect6, useMemo as useMemo9, useRef as useRef6, useState as useState6 } from "react";
4818
4976
 
4819
4977
  // src/events/list/event-list.constants.ts
4820
4978
  import { MatchStatus, Venue as Venue2 } from "@agg-build/sdk";
@@ -4881,16 +5039,16 @@ var getDefaultEventListTabs = (labels) => {
4881
5039
  };
4882
5040
 
4883
5041
  // src/events/list/event-list-tabs.tsx
4884
- import { jsx as jsx11 } from "react/jsx-runtime";
5042
+ import { jsx as jsx12 } from "react/jsx-runtime";
4885
5043
  var renderTabIcon = (tab, isActive) => {
4886
5044
  if (tab.iconName === "warning-filled") {
4887
- return /* @__PURE__ */ jsx11(Icon, { name: "warning-filled", size: "small", color: "currentColor" });
5045
+ return /* @__PURE__ */ jsx12(Icon, { name: "warning-filled", size: "small", color: "currentColor" });
4888
5046
  }
4889
5047
  if (tab.venueLogo) {
4890
- return /* @__PURE__ */ jsx11(VenueLogo, { venue: tab.venueLogo, size: "small" });
5048
+ return /* @__PURE__ */ jsx12(VenueLogo, { venue: tab.venueLogo, size: "small" });
4891
5049
  }
4892
5050
  if (!tab.iconName) return null;
4893
- return /* @__PURE__ */ jsx11(
5051
+ return /* @__PURE__ */ jsx12(
4894
5052
  Icon,
4895
5053
  {
4896
5054
  name: tab.iconName,
@@ -4900,10 +5058,10 @@ var renderTabIcon = (tab, isActive) => {
4900
5058
  );
4901
5059
  };
4902
5060
  var useEventListTabs = (tabs) => {
4903
- const labels = useLabels7();
5061
+ const labels = useLabels8();
4904
5062
  const { disabledVenues } = useAppConfig();
4905
5063
  const { isLocationBlocked } = useGeoBlock();
4906
- return useMemo8(() => {
5064
+ return useMemo9(() => {
4907
5065
  const baseTabs = tabs != null ? tabs : getDefaultEventListTabs(labels);
4908
5066
  return baseTabs.flatMap((tab) => {
4909
5067
  if (!tab.venueLogo) return [tab];
@@ -4932,13 +5090,13 @@ var EventListTabs = ({
4932
5090
  overflowBehavior
4933
5091
  }) => {
4934
5092
  const resolvedTabs = useEventListTabs(tabs);
4935
- useEffect5(() => {
5093
+ useEffect6(() => {
4936
5094
  const fallbackTab = resolvedTabs.find((tab) => !tab.disabled);
4937
5095
  if (!fallbackTab) return;
4938
5096
  if (resolvedTabs.some((tab) => tab.value === activeTab && !tab.disabled)) return;
4939
5097
  onTabChange(fallbackTab.value);
4940
5098
  }, [activeTab, onTabChange, resolvedTabs]);
4941
- const items = useMemo8(() => {
5099
+ const items = useMemo9(() => {
4942
5100
  return resolvedTabs.map((tab) => {
4943
5101
  const isActive = tab.value === activeTab;
4944
5102
  return {
@@ -4950,7 +5108,7 @@ var EventListTabs = ({
4950
5108
  };
4951
5109
  });
4952
5110
  }, [activeTab, resolvedTabs]);
4953
- return /* @__PURE__ */ jsx11(
5111
+ return /* @__PURE__ */ jsx12(
4954
5112
  Tabs,
4955
5113
  {
4956
5114
  ariaLabel,
@@ -4967,7 +5125,7 @@ var useEventListTabsHeaderOverflow = (recomputeOn, options) => {
4967
5125
  const headerRef = useRef6(null);
4968
5126
  const titleRef = useRef6(null);
4969
5127
  const requiredTabsWidthRef = useRef6(0);
4970
- const [shouldUseSelectOverflow, setShouldUseSelectOverflow] = useState5(false);
5128
+ const [shouldUseSelectOverflow, setShouldUseSelectOverflow] = useState6(false);
4971
5129
  const updateTabsOverflowBehavior = useCallback3(() => {
4972
5130
  var _a;
4973
5131
  if (typeof window === "undefined") return;
@@ -5005,10 +5163,10 @@ var useEventListTabsHeaderOverflow = (recomputeOn, options) => {
5005
5163
  if (requiredTabsWidthRef.current <= 0) return;
5006
5164
  setShouldUseSelectOverflow(requiredTabsWidthRef.current > availableTabsWidth);
5007
5165
  }, [options == null ? void 0 : options.minTabsInlineWidthForSelect, options == null ? void 0 : options.preferSelectOnOverflow]);
5008
- useEffect5(() => {
5166
+ useEffect6(() => {
5009
5167
  updateTabsOverflowBehavior();
5010
5168
  }, [recomputeOn, updateTabsOverflowBehavior]);
5011
- useEffect5(() => {
5169
+ useEffect6(() => {
5012
5170
  if (typeof window === "undefined") return;
5013
5171
  const handleResize = () => {
5014
5172
  updateTabsOverflowBehavior();
@@ -5018,7 +5176,7 @@ var useEventListTabsHeaderOverflow = (recomputeOn, options) => {
5018
5176
  window.removeEventListener("resize", handleResize);
5019
5177
  };
5020
5178
  }, [updateTabsOverflowBehavior]);
5021
- useEffect5(() => {
5179
+ useEffect6(() => {
5022
5180
  if (typeof ResizeObserver === "undefined") return;
5023
5181
  const headerElement = headerRef.current;
5024
5182
  const titleElement = titleRef.current;
@@ -5036,7 +5194,7 @@ var useEventListTabsHeaderOverflow = (recomputeOn, options) => {
5036
5194
  };
5037
5195
 
5038
5196
  // src/events/list/index.tsx
5039
- import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
5197
+ import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
5040
5198
  var SORT_ICON_BY_VALUE = {
5041
5199
  volume24hr: "sort-volume-24hr",
5042
5200
  topArbitrage: "sort-top-arbitrage",
@@ -5074,45 +5232,45 @@ var EventList = ({
5074
5232
  stateRef
5075
5233
  }) => {
5076
5234
  var _a, _b, _c, _d, _e;
5077
- const labels = useLabels8();
5235
+ const labels = useLabels9();
5078
5236
  const { disabledVenues } = useAppConfig2();
5079
5237
  const {
5080
- features: { enableVenueEventDiscoveryFilters }
5081
- } = useSdkUiConfig4();
5238
+ features: { enableVenueEventDiscoveryFilters, showSportsMarkets }
5239
+ } = useSdkUiConfig5();
5082
5240
  const isDiscoveryFiltersEnabled = enableVenueEventDiscoveryFilters && !search;
5083
5241
  const resolvedTabs = useEventListTabs();
5084
- const visibleVenues = useMemo9(
5242
+ const visibleVenues = useMemo10(
5085
5243
  () => disabledVenues.length === 0 ? void 0 : getVisibleVenueIdsByConfig(VENUES, disabledVenues),
5086
5244
  [disabledVenues]
5087
5245
  );
5088
- const [activeTabValue, setActiveTabValue] = useState6(
5246
+ const [activeTabValue, setActiveTabValue] = useState7(
5089
5247
  (_b = initialVenueTab != null ? initialVenueTab : (_a = resolvedTabs[0]) == null ? void 0 : _a.value) != null ? _b : "matched"
5090
5248
  );
5091
- const [selectedSort, setSelectedSort] = useState6("volume24hr");
5092
- const [isSubcategoriesModalOpen, setIsSubcategoriesModalOpen] = useState6(false);
5093
- const [categoryPath, setCategoryPath] = useState6([]);
5094
- const [collapsedCategoryIds, setCollapsedCategoryIds] = useState6(() => /* @__PURE__ */ new Set());
5095
- const sortItems = useMemo9(() => {
5249
+ const [selectedSort, setSelectedSort] = useState7("volume24hr");
5250
+ const [isSubcategoriesModalOpen, setIsSubcategoriesModalOpen] = useState7(false);
5251
+ const [categoryPath, setCategoryPath] = useState7([]);
5252
+ const [collapsedCategoryIds, setCollapsedCategoryIds] = useState7(() => /* @__PURE__ */ new Set());
5253
+ const sortItems = useMemo10(() => {
5096
5254
  return [
5097
5255
  {
5098
5256
  value: "volume24hr",
5099
5257
  label: labels.eventList.sortBy24hVolume,
5100
- icon: /* @__PURE__ */ jsx12(Icon, { name: SORT_ICON_BY_VALUE.volume24hr, size: "small", color: "currentColor" })
5258
+ icon: /* @__PURE__ */ jsx13(Icon, { name: SORT_ICON_BY_VALUE.volume24hr, size: "small", color: "currentColor" })
5101
5259
  },
5102
5260
  {
5103
5261
  value: "topArbitrage",
5104
5262
  label: labels.eventList.sortByTopArbitrage,
5105
- icon: /* @__PURE__ */ jsx12(Icon, { name: SORT_ICON_BY_VALUE.topArbitrage, size: "small", color: "currentColor" })
5263
+ icon: /* @__PURE__ */ jsx13(Icon, { name: SORT_ICON_BY_VALUE.topArbitrage, size: "small", color: "currentColor" })
5106
5264
  },
5107
5265
  {
5108
5266
  value: "volume",
5109
5267
  label: labels.eventList.sortByTotalVolume,
5110
- icon: /* @__PURE__ */ jsx12(Icon, { name: SORT_ICON_BY_VALUE.volume, size: "small", color: "currentColor" })
5268
+ icon: /* @__PURE__ */ jsx13(Icon, { name: SORT_ICON_BY_VALUE.volume, size: "small", color: "currentColor" })
5111
5269
  },
5112
5270
  {
5113
5271
  value: "endDate",
5114
5272
  label: labels.eventList.sortByEndingSoon,
5115
- icon: /* @__PURE__ */ jsx12(Icon, { name: SORT_ICON_BY_VALUE.endDate, size: "small", color: "currentColor" })
5273
+ icon: /* @__PURE__ */ jsx13(Icon, { name: SORT_ICON_BY_VALUE.endDate, size: "small", color: "currentColor" })
5116
5274
  }
5117
5275
  ];
5118
5276
  }, [
@@ -5122,7 +5280,7 @@ var EventList = ({
5122
5280
  labels.eventList.sortByTotalVolume
5123
5281
  ]);
5124
5282
  const baseCategoryId = (_c = categoryIds == null ? void 0 : categoryIds[0]) != null ? _c : null;
5125
- useEffect6(() => {
5283
+ useEffect7(() => {
5126
5284
  if (!isDiscoveryFiltersEnabled) return;
5127
5285
  setCategoryPath([]);
5128
5286
  setCollapsedCategoryIds(/* @__PURE__ */ new Set());
@@ -5132,10 +5290,10 @@ var EventList = ({
5132
5290
  enabled: isDiscoveryFiltersEnabled,
5133
5291
  limit: 100
5134
5292
  });
5135
- const sortedTopLevelCategories = useMemo9(() => {
5293
+ const sortedTopLevelCategories = useMemo10(() => {
5136
5294
  return sortCategoriesForNavigation(topLevelCategories);
5137
5295
  }, [topLevelCategories]);
5138
- const baseCategoryChildPrefetchIds = useMemo9(() => {
5296
+ const baseCategoryChildPrefetchIds = useMemo10(() => {
5139
5297
  return Array.from(
5140
5298
  /* @__PURE__ */ new Set([
5141
5299
  ...sortedTopLevelCategories.map((category) => category.id),
@@ -5149,7 +5307,7 @@ var EventList = ({
5149
5307
  parentIds: baseCategoryChildPrefetchIds,
5150
5308
  limit: 100
5151
5309
  });
5152
- const visibleChildPrefetchIds = useMemo9(() => {
5310
+ const visibleChildPrefetchIds = useMemo10(() => {
5153
5311
  var _a2, _b2;
5154
5312
  const ids = /* @__PURE__ */ new Set();
5155
5313
  if (baseCategoryId) {
@@ -5170,7 +5328,7 @@ var EventList = ({
5170
5328
  parentIds: visibleChildPrefetchIds,
5171
5329
  limit: 100
5172
5330
  });
5173
- const visibleGrandchildPrefetchIds = useMemo9(() => {
5331
+ const visibleGrandchildPrefetchIds = useMemo10(() => {
5174
5332
  var _a2;
5175
5333
  const ids = /* @__PURE__ */ new Set();
5176
5334
  for (const expandedCategory of categoryPath) {
@@ -5186,7 +5344,7 @@ var EventList = ({
5186
5344
  parentIds: visibleGrandchildPrefetchIds,
5187
5345
  limit: 100
5188
5346
  });
5189
- const childrenByParentId = useMemo9(() => {
5347
+ const childrenByParentId = useMemo10(() => {
5190
5348
  return new Map([
5191
5349
  ...baseChildrenByParentId,
5192
5350
  ...visibleChildrenByParentId,
@@ -5194,33 +5352,33 @@ var EventList = ({
5194
5352
  ]);
5195
5353
  }, [baseChildrenByParentId, visibleChildrenByParentId, visibleGrandchildrenByParentId]);
5196
5354
  const shouldRenderSubcategoryFilters = isDiscoveryFiltersEnabled && baseCategoryId !== null && (((_e = (_d = childrenByParentId.get(baseCategoryId)) == null ? void 0 : _d.length) != null ? _e : 0) > 0 || categoryPath.length > 0);
5197
- const baseCategoryEventCount = useMemo9(() => {
5355
+ const baseCategoryEventCount = useMemo10(() => {
5198
5356
  var _a2, _b2;
5199
5357
  return (_b2 = (_a2 = sortedTopLevelCategories.find((c) => c.id === baseCategoryId)) == null ? void 0 : _a2.eventCount) != null ? _b2 : 0;
5200
5358
  }, [baseCategoryId, sortedTopLevelCategories]);
5201
- const resolvedCategoryIds = useMemo9(() => {
5359
+ const resolvedCategoryIds = useMemo10(() => {
5202
5360
  if (!isDiscoveryFiltersEnabled) return categoryIds;
5203
5361
  return resolveCategoryIdsFromPath(categoryPath, baseCategoryId ? [baseCategoryId] : void 0);
5204
5362
  }, [baseCategoryId, categoryIds, categoryPath, isDiscoveryFiltersEnabled]);
5205
- const sortQueryParams = useMemo9(() => {
5363
+ const sortQueryParams = useMemo10(() => {
5206
5364
  return resolveSortQueryParams(selectedSort);
5207
5365
  }, [selectedSort]);
5208
- const activeTab = useMemo9(() => {
5366
+ const activeTab = useMemo10(() => {
5209
5367
  return resolvedTabs.find((tab) => tab.value === activeTabValue);
5210
5368
  }, [activeTabValue, resolvedTabs]);
5211
- const venues = useMemo9(() => {
5369
+ const venues = useMemo10(() => {
5212
5370
  return resolveTabVenus(activeTab, visibleVenues);
5213
5371
  }, [activeTab, visibleVenues]);
5214
- const matchStatus = useMemo9(() => {
5372
+ const matchStatus = useMemo10(() => {
5215
5373
  return activeTabValue === "matched" ? activeTab == null ? void 0 : activeTab.matchStatus : void 0;
5216
5374
  }, [activeTabValue, activeTab]);
5217
- const resolvedMaxVisibleItems = useMemo9(() => {
5375
+ const resolvedMaxVisibleItems = useMemo10(() => {
5218
5376
  if (!Number.isFinite(maxVisibleItems)) return void 0;
5219
5377
  return Math.max(1, Math.floor(maxVisibleItems));
5220
5378
  }, [maxVisibleItems]);
5221
5379
  const requestLimit = resolvedMaxVisibleItems != null ? resolvedMaxVisibleItems : limit;
5222
5380
  const shouldPaginate = resolvedMaxVisibleItems == null;
5223
- const endDateFrom = useMemo9(() => {
5381
+ const endDateFrom = useMemo10(() => {
5224
5382
  if (search) return void 0;
5225
5383
  const BUCKET_MINUTES = 5;
5226
5384
  const bucket = /* @__PURE__ */ new Date();
@@ -5247,23 +5405,27 @@ var EventList = ({
5247
5405
  sortBy: sortQueryParams.sortBy,
5248
5406
  sortDir: sortQueryParams.sortDir,
5249
5407
  endDateFrom,
5408
+ // Fold same-venue companion events into one tile per game when the sports
5409
+ // markets experience is enabled (the sports event-detail view loads the
5410
+ // folded companions via aggKey). Gated on the same flag as that view.
5411
+ grouped: showSportsMarkets,
5250
5412
  initialPages: initialLoadedPageCount
5251
5413
  });
5252
- useEffect6(() => {
5414
+ useEffect7(() => {
5253
5415
  if (stateRef) {
5254
5416
  stateRef.current = { venueTab: activeTabValue, loadedPageCount };
5255
5417
  }
5256
5418
  }, [stateRef, activeTabValue, loadedPageCount]);
5257
- const filteredEvents = useMemo9(() => {
5419
+ const filteredEvents = useMemo10(() => {
5258
5420
  return filterEventsByTabValue(events, activeTabValue);
5259
5421
  }, [events, activeTabValue]);
5260
- const groupedEvents = useMemo9(() => {
5422
+ const groupedEvents = useMemo10(() => {
5261
5423
  return splitEventsByLifecycle(filteredEvents);
5262
5424
  }, [filteredEvents]);
5263
- const orderedEvents = useMemo9(() => {
5425
+ const orderedEvents = useMemo10(() => {
5264
5426
  return groupedEvents.open;
5265
5427
  }, [groupedEvents.open]);
5266
- const tileEvents = useMemo9(() => {
5428
+ const tileEvents = useMemo10(() => {
5267
5429
  const normalizedEvents = orderedEvents.map((event) => mapEventToEventListItemEvent(event)).filter((event) => event != null);
5268
5430
  if (resolvedMaxVisibleItems == null) return normalizedEvents;
5269
5431
  return normalizedEvents.slice(0, resolvedMaxVisibleItems);
@@ -5272,7 +5434,7 @@ var EventList = ({
5272
5434
  const shouldRenderEmptyState = !isLoading && !isError && tileEvents.length === 0;
5273
5435
  const shouldRenderPaginationLoadingItems = shouldPaginate && hasNextPage;
5274
5436
  const loadMoreRef = useRef7(null);
5275
- useEffect6(() => {
5437
+ useEffect7(() => {
5276
5438
  if (!shouldPaginate) return;
5277
5439
  if (!hasNextPage) return;
5278
5440
  if (typeof IntersectionObserver === "undefined") return;
@@ -5323,7 +5485,7 @@ var EventList = ({
5323
5485
  onCategoryRootChange == null ? void 0 : onCategoryRootChange(baseCategoryId != null ? baseCategoryId : void 0);
5324
5486
  };
5325
5487
  if (shouldRenderLoadingState) {
5326
- return /* @__PURE__ */ jsx12(
5488
+ return /* @__PURE__ */ jsx13(
5327
5489
  Skeleton,
5328
5490
  {
5329
5491
  view: "event-list",
@@ -5332,8 +5494,8 @@ var EventList = ({
5332
5494
  }
5333
5495
  );
5334
5496
  }
5335
- return /* @__PURE__ */ jsxs9("section", { className: "agg-event-list flex w-full flex-col gap-2 md:gap-5 t", children: [
5336
- /* @__PURE__ */ jsxs9(
5497
+ return /* @__PURE__ */ jsxs10("section", { className: "agg-event-list flex w-full flex-col gap-2 md:gap-5 t", children: [
5498
+ /* @__PURE__ */ jsxs10(
5337
5499
  "header",
5338
5500
  {
5339
5501
  className: cn(
@@ -5342,9 +5504,9 @@ var EventList = ({
5342
5504
  "gap-2 sm:flex-row sm:items-center sm:gap-4"
5343
5505
  ),
5344
5506
  children: [
5345
- /* @__PURE__ */ jsx12("div", { className: "agg-event-list-title min-w-32", children: /* @__PURE__ */ jsx12(Typography, { as: "h2", variant: "title", className: "truncate first-letter:uppercase", children: title }) }),
5346
- /* @__PURE__ */ jsxs9("div", { className: "hidden min-w-0 max-w-full items-center gap-3 md:flex", children: [
5347
- /* @__PURE__ */ jsx12(
5507
+ /* @__PURE__ */ jsx13("div", { className: "agg-event-list-title min-w-32", children: /* @__PURE__ */ jsx13(Typography, { as: "h2", variant: "title", className: "truncate first-letter:uppercase", children: title }) }),
5508
+ /* @__PURE__ */ jsxs10("div", { className: "hidden min-w-0 max-w-full items-center gap-3 md:flex", children: [
5509
+ /* @__PURE__ */ jsx13(
5348
5510
  EventListTabs,
5349
5511
  {
5350
5512
  ariaLabel: labels.eventList.tabsAria(title),
@@ -5354,7 +5516,7 @@ var EventList = ({
5354
5516
  overflowBehavior: "scroll"
5355
5517
  }
5356
5518
  ),
5357
- /* @__PURE__ */ jsx12(
5519
+ /* @__PURE__ */ jsx13(
5358
5520
  Select,
5359
5521
  {
5360
5522
  ariaLabel: labels.eventList.sortByLabel,
@@ -5370,8 +5532,8 @@ var EventList = ({
5370
5532
  ]
5371
5533
  }
5372
5534
  ),
5373
- /* @__PURE__ */ jsxs9("div", { className: "flex w-full gap-2 md:hidden mb-3", children: [
5374
- /* @__PURE__ */ jsx12(
5535
+ /* @__PURE__ */ jsxs10("div", { className: "flex w-full gap-2 md:hidden mb-3", children: [
5536
+ /* @__PURE__ */ jsx13(
5375
5537
  EventListTabs,
5376
5538
  {
5377
5539
  ariaLabel: labels.eventList.tabsAria(title),
@@ -5381,7 +5543,7 @@ var EventList = ({
5381
5543
  overflowBehavior: "select"
5382
5544
  }
5383
5545
  ),
5384
- /* @__PURE__ */ jsx12(
5546
+ /* @__PURE__ */ jsx13(
5385
5547
  Select,
5386
5548
  {
5387
5549
  ariaLabel: labels.eventList.sortByLabel,
@@ -5392,23 +5554,23 @@ var EventList = ({
5392
5554
  contentClassName: "rounded-[12px] py-2 shadow-[0_8px_16px_rgba(0,0,0,0.1)]"
5393
5555
  }
5394
5556
  ),
5395
- shouldRenderSubcategoryFilters ? /* @__PURE__ */ jsx12(
5557
+ shouldRenderSubcategoryFilters ? /* @__PURE__ */ jsx13(
5396
5558
  "button",
5397
5559
  {
5398
5560
  type: "button",
5399
5561
  className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-[8px] border-2 border-agg-primary bg-agg-secondary text-agg-foreground cursor-pointer",
5400
5562
  "aria-label": labels.eventList.subcategoriesOpenAria,
5401
5563
  onClick: () => setIsSubcategoriesModalOpen(true),
5402
- children: /* @__PURE__ */ jsx12(Icon, { name: "apps", size: "small", color: "currentColor" })
5564
+ children: /* @__PURE__ */ jsx13(Icon, { name: "apps", size: "small", color: "currentColor" })
5403
5565
  }
5404
5566
  ) : null
5405
5567
  ] }),
5406
- /* @__PURE__ */ jsxs9(
5568
+ /* @__PURE__ */ jsxs10(
5407
5569
  "div",
5408
5570
  {
5409
5571
  className: cn("flex w-full gap-6", shouldRenderSubcategoryFilters ? "md:items-start" : ""),
5410
5572
  children: [
5411
- shouldRenderSubcategoryFilters ? /* @__PURE__ */ jsx12("aside", { className: "hidden w-[200px] shrink-0 md:block self-start sticky top-4", children: /* @__PURE__ */ jsx12("div", { className: "agg-sidebar max-h-[calc(100vh-19rem)] overflow-y-auto rounded-[8px] border border-agg-separator bg-agg-secondary p-2", children: /* @__PURE__ */ jsx12(
5573
+ shouldRenderSubcategoryFilters ? /* @__PURE__ */ jsx13("aside", { className: "hidden w-[200px] shrink-0 md:block self-start sticky top-4", children: /* @__PURE__ */ jsx13("div", { className: "agg-sidebar max-h-[calc(100vh-19rem)] overflow-y-auto rounded-[8px] border border-agg-separator bg-agg-secondary p-2", children: /* @__PURE__ */ jsx13(
5412
5574
  CategorySidebar,
5413
5575
  {
5414
5576
  baseCategoryId,
@@ -5421,7 +5583,7 @@ var EventList = ({
5421
5583
  onToggleCategory: handleToggleSubcategory
5422
5584
  }
5423
5585
  ) }) }) : null,
5424
- /* @__PURE__ */ jsxs9(
5586
+ /* @__PURE__ */ jsxs10(
5425
5587
  "div",
5426
5588
  {
5427
5589
  className: cn(
@@ -5432,7 +5594,7 @@ var EventList = ({
5432
5594
  gridClassName
5433
5595
  ),
5434
5596
  children: [
5435
- tileEvents.map((event) => /* @__PURE__ */ jsx12(
5597
+ tileEvents.map((event) => /* @__PURE__ */ jsx13(
5436
5598
  EventListItem,
5437
5599
  {
5438
5600
  event,
@@ -5447,7 +5609,7 @@ var EventList = ({
5447
5609
  },
5448
5610
  event.id
5449
5611
  )),
5450
- shouldRenderPaginationLoadingItems ? Array.from({ length: 6 }).map((_, index) => /* @__PURE__ */ jsx12(
5612
+ shouldRenderPaginationLoadingItems ? Array.from({ length: 6 }).map((_, index) => /* @__PURE__ */ jsx13(
5451
5613
  EventListItem,
5452
5614
  {
5453
5615
  isLoading: true,
@@ -5457,20 +5619,20 @@ var EventList = ({
5457
5619
  },
5458
5620
  `loading-${index}`
5459
5621
  )) : null,
5460
- shouldRenderEmptyState ? /* @__PURE__ */ jsx12("div", { className: "col-span-full w-full", children: /* @__PURE__ */ jsx12(
5622
+ shouldRenderEmptyState ? /* @__PURE__ */ jsx13("div", { className: "col-span-full w-full", children: /* @__PURE__ */ jsx13(
5461
5623
  StateMessage,
5462
5624
  {
5463
5625
  title: labels.eventList.emptyTitle,
5464
5626
  description: labels.eventList.emptyDescription,
5465
- icon: /* @__PURE__ */ jsx12(Icon, { name: "search-empty" })
5627
+ icon: /* @__PURE__ */ jsx13(Icon, { name: "search-empty" })
5466
5628
  }
5467
5629
  ) }) : null,
5468
- isError ? /* @__PURE__ */ jsx12("div", { className: "col-span-full w-full", children: /* @__PURE__ */ jsx12(
5630
+ isError ? /* @__PURE__ */ jsx13("div", { className: "col-span-full w-full", children: /* @__PURE__ */ jsx13(
5469
5631
  StateMessage,
5470
5632
  {
5471
5633
  title: labels.eventList.errorTitle,
5472
5634
  description: labels.eventList.errorDescription,
5473
- icon: /* @__PURE__ */ jsx12(Icon, { name: "warning" })
5635
+ icon: /* @__PURE__ */ jsx13(Icon, { name: "warning" })
5474
5636
  }
5475
5637
  ) }) : null
5476
5638
  ]
@@ -5479,7 +5641,7 @@ var EventList = ({
5479
5641
  ]
5480
5642
  }
5481
5643
  ),
5482
- shouldRenderSubcategoryFilters ? /* @__PURE__ */ jsx12(Modal, { open: isSubcategoriesModalOpen, onOpenChange: setIsSubcategoriesModalOpen, children: /* @__PURE__ */ jsx12(
5644
+ shouldRenderSubcategoryFilters ? /* @__PURE__ */ jsx13(Modal, { open: isSubcategoriesModalOpen, onOpenChange: setIsSubcategoriesModalOpen, children: /* @__PURE__ */ jsx13(
5483
5645
  Modal.Container,
5484
5646
  {
5485
5647
  classNames: {
@@ -5488,20 +5650,20 @@ var EventList = ({
5488
5650
  content: "items-end p-0 pointer-events-none",
5489
5651
  container: "w-full max-w-none border-0 bg-transparent shadow-none"
5490
5652
  },
5491
- children: /* @__PURE__ */ jsxs9("div", { className: "pointer-events-auto w-full rounded-t-[12px] border border-agg-separator bg-agg-secondary", children: [
5492
- /* @__PURE__ */ jsx12("div", { className: "flex justify-center pb-1 pt-3", "aria-hidden": "true", children: /* @__PURE__ */ jsx12("div", { className: "h-1 w-10 rounded-full bg-agg-muted-foreground/30" }) }),
5493
- /* @__PURE__ */ jsxs9("div", { className: "flex items-center justify-between px-4 pb-2 pt-1", children: [
5494
- /* @__PURE__ */ jsx12(Dialog.Title, { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.eventList.subcategoriesLabel }),
5495
- /* @__PURE__ */ jsx12(
5653
+ children: /* @__PURE__ */ jsxs10("div", { className: "pointer-events-auto w-full rounded-t-[12px] border border-agg-separator bg-agg-secondary", children: [
5654
+ /* @__PURE__ */ jsx13("div", { className: "flex justify-center pb-1 pt-3", "aria-hidden": "true", children: /* @__PURE__ */ jsx13("div", { className: "h-1 w-10 rounded-full bg-agg-muted-foreground/30" }) }),
5655
+ /* @__PURE__ */ jsxs10("div", { className: "flex items-center justify-between px-4 pb-2 pt-1", children: [
5656
+ /* @__PURE__ */ jsx13(Dialog.Title, { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.eventList.subcategoriesLabel }),
5657
+ /* @__PURE__ */ jsx13(
5496
5658
  Dialog.Close,
5497
5659
  {
5498
5660
  className: "flex cursor-pointer items-center justify-center rounded-full p-1 text-agg-muted-foreground hover:bg-agg-secondary-hover",
5499
5661
  "aria-label": labels.common.close,
5500
- children: /* @__PURE__ */ jsx12(CloseIcon, { className: "h-5 w-5" })
5662
+ children: /* @__PURE__ */ jsx13(CloseIcon, { className: "h-5 w-5" })
5501
5663
  }
5502
5664
  )
5503
5665
  ] }),
5504
- /* @__PURE__ */ jsx12("div", { className: "flex flex-col gap-1 px-4 pb-4", children: /* @__PURE__ */ jsx12(
5666
+ /* @__PURE__ */ jsx13("div", { className: "flex flex-col gap-1 px-4 pb-4", children: /* @__PURE__ */ jsx13(
5505
5667
  CategorySidebar,
5506
5668
  {
5507
5669
  baseCategoryId,
@@ -5517,7 +5679,7 @@ var EventList = ({
5517
5679
  ] })
5518
5680
  }
5519
5681
  ) }) : null,
5520
- shouldPaginate && hasNextPage ? /* @__PURE__ */ jsx12("div", { ref: loadMoreRef, className: "agg-event-list-sentinel h-px w-full", "aria-hidden": true }) : null
5682
+ shouldPaginate && hasNextPage ? /* @__PURE__ */ jsx13("div", { ref: loadMoreRef, className: "agg-event-list-sentinel h-px w-full", "aria-hidden": true }) : null
5521
5683
  ] });
5522
5684
  };
5523
5685
  EventList.displayName = "EventList";
@@ -5530,6 +5692,7 @@ export {
5530
5692
  collectEligibleVenueOutcomeIds,
5531
5693
  mergeVenueOutcomeOrderbooks,
5532
5694
  SettlementSummary,
5695
+ resolveEventDetailsSyncKey,
5533
5696
  EventListItemDetails,
5534
5697
  orderbookRowLimitDefault,
5535
5698
  useCenterOrderbookSpread,