@agg-market/ui 8.0.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/{chunk-SBLIHCN2.mjs → chunk-55YYUTBK.mjs} +807 -358
  2. package/dist/{chunk-JE4MV5RL.mjs → chunk-5G4T5R2H.mjs} +6 -2
  3. package/dist/{chunk-TLFRGJ5B.mjs → chunk-GYOCLZGH.mjs} +564 -414
  4. package/dist/{chunk-KRCRD4AJ.mjs → chunk-RYQSVETG.mjs} +212 -174
  5. package/dist/{chunk-WKY3IN52.mjs → chunk-XP7DREIX.mjs} +54 -15
  6. package/dist/events.js +604 -421
  7. package/dist/events.mjs +6 -4
  8. package/dist/index.js +1616 -948
  9. package/dist/index.mjs +10 -6
  10. package/dist/modals.js +1185 -374
  11. package/dist/modals.mjs +4 -2
  12. package/dist/pages.js +1434 -1005
  13. package/dist/pages.mjs +4 -4
  14. package/dist/primitives.js +53 -14
  15. package/dist/primitives.mjs +1 -1
  16. package/dist/styles.css +1 -1
  17. package/dist/tailwind.css +1 -1
  18. package/dist/trading.js +20 -4
  19. package/dist/trading.mjs +2 -2
  20. package/dist/types/events/item/event-list-item.types.d.mts +6 -4
  21. package/dist/types/events/item/event-list-item.types.d.ts +6 -4
  22. package/dist/types/events/item/event-list-item.utils.d.mts +5 -5
  23. package/dist/types/events/item/event-list-item.utils.d.ts +5 -5
  24. package/dist/types/events/item/index.d.mts +1 -1
  25. package/dist/types/events/item/index.d.ts +1 -1
  26. package/dist/types/events/item-details/event-list-item-details.types.d.mts +3 -5
  27. package/dist/types/events/item-details/event-list-item-details.types.d.ts +3 -5
  28. package/dist/types/events/item-details/event-list-item-details.utils.d.mts +42 -3
  29. package/dist/types/events/item-details/event-list-item-details.utils.d.ts +42 -3
  30. package/dist/types/events/list/event-list.types.d.mts +6 -5
  31. package/dist/types/events/list/event-list.types.d.ts +6 -5
  32. package/dist/types/events/list/event-list.utils.d.mts +5 -5
  33. package/dist/types/events/list/event-list.utils.d.ts +5 -5
  34. package/dist/types/events/list/index.d.mts +1 -1
  35. package/dist/types/events/list/index.d.ts +1 -1
  36. package/dist/types/events/market-details/index.d.mts +6 -2
  37. package/dist/types/events/market-details/index.d.ts +6 -2
  38. package/dist/types/events/market-details/market-details.types.d.mts +35 -9
  39. package/dist/types/events/market-details/market-details.types.d.ts +35 -9
  40. package/dist/types/events/market-details/market-details.utils.d.mts +28 -12
  41. package/dist/types/events/market-details/market-details.utils.d.ts +28 -12
  42. package/dist/types/modals/index.d.mts +1 -0
  43. package/dist/types/modals/index.d.ts +1 -0
  44. package/dist/types/onramp/index.d.mts +6 -0
  45. package/dist/types/onramp/index.d.ts +6 -0
  46. package/dist/types/onramp/onramp-modal.constants.d.mts +9 -0
  47. package/dist/types/onramp/onramp-modal.constants.d.ts +9 -0
  48. package/dist/types/onramp/onramp-modal.types.d.mts +64 -0
  49. package/dist/types/onramp/onramp-modal.types.d.ts +64 -0
  50. package/dist/types/onramp/steps/quote-card.d.mts +8 -0
  51. package/dist/types/onramp/steps/quote-card.d.ts +8 -0
  52. package/dist/types/onramp/steps/quote-form.d.mts +12 -0
  53. package/dist/types/onramp/steps/quote-form.d.ts +12 -0
  54. package/dist/types/onramp/steps/quote-selection.d.mts +14 -0
  55. package/dist/types/onramp/steps/quote-selection.d.ts +14 -0
  56. package/dist/types/onramp/steps/widget.d.mts +7 -0
  57. package/dist/types/onramp/steps/widget.d.ts +7 -0
  58. package/dist/types/pages/event-market/event-market.types.d.mts +4 -2
  59. package/dist/types/pages/event-market/event-market.types.d.ts +4 -2
  60. package/dist/types/pages/home/home.constants.d.mts +1 -3
  61. package/dist/types/pages/home/home.constants.d.ts +1 -3
  62. package/dist/types/pages/home/home.types.d.mts +0 -2
  63. package/dist/types/pages/home/home.types.d.ts +0 -2
  64. package/dist/types/pages/home/home.utils.d.mts +4 -0
  65. package/dist/types/pages/home/home.utils.d.ts +4 -0
  66. package/dist/types/pages/home/index.d.mts +1 -1
  67. package/dist/types/pages/home/index.d.ts +1 -1
  68. package/dist/types/primitives/chart/index.d.mts +18 -1
  69. package/dist/types/primitives/chart/index.d.ts +18 -1
  70. package/dist/types/primitives/venue-logo/index.d.mts +1 -1
  71. package/dist/types/primitives/venue-logo/index.d.ts +1 -1
  72. package/dist/types/trading/types.d.mts +2 -2
  73. package/dist/types/trading/types.d.ts +2 -2
  74. package/package.json +3 -3
@@ -3,15 +3,16 @@ import {
3
3
  EventListItemDetails,
4
4
  MarketDetails,
5
5
  isErrorWithStatus
6
- } from "./chunk-TLFRGJ5B.mjs";
6
+ } from "./chunk-GYOCLZGH.mjs";
7
7
  import {
8
8
  PlaceOrder,
9
9
  Settlement
10
- } from "./chunk-JE4MV5RL.mjs";
10
+ } from "./chunk-5G4T5R2H.mjs";
11
11
  import {
12
12
  Button,
13
13
  Card,
14
14
  Icon,
15
+ Modal,
15
16
  RemoteImage,
16
17
  StateMessage,
17
18
  Tabs,
@@ -20,7 +21,7 @@ import {
20
21
  __spreadProps,
21
22
  __spreadValues,
22
23
  cn
23
- } from "./chunk-WKY3IN52.mjs";
24
+ } from "./chunk-XP7DREIX.mjs";
24
25
 
25
26
  // src/pages/home/index.tsx
26
27
  import { useEffect, useMemo, useState } from "react";
@@ -30,51 +31,6 @@ import { useCategories, useLabels } from "@agg-market/hooks";
30
31
  var ALL_CATEGORIES_TAB_VALUE = "trending";
31
32
  var DEFAULT_CATEGORIES_LIMIT = 100;
32
33
  var DEFAULT_ALL_CATEGORY_TAB_LABEL = "Trending";
33
- var CATEGORY_TAB_NAME_ORDER = [
34
- "crypto",
35
- "economy",
36
- "entertainment",
37
- "finance",
38
- "geopolitics",
39
- "health",
40
- "mentions",
41
- "politics",
42
- "science",
43
- "sports",
44
- "technology",
45
- "weather",
46
- "world"
47
- ];
48
- var getDefaultHomePageTabs = (allCategoryTabLabel) => {
49
- return [
50
- {
51
- value: ALL_CATEGORIES_TAB_VALUE,
52
- label: allCategoryTabLabel,
53
- iconName: "arrow-trend-up"
54
- },
55
- { value: "crypto", label: "crypto", categoryIds: ["crypto"] },
56
- { value: "economy", label: "economy", categoryIds: ["economy"] },
57
- {
58
- value: "entertainment",
59
- label: "entertainment",
60
- categoryIds: ["entertainment"]
61
- },
62
- { value: "finance", label: "finance", categoryIds: ["finance"] },
63
- {
64
- value: "geopolitics",
65
- label: "geopolitics",
66
- categoryIds: ["geopolitics"]
67
- },
68
- { value: "health", label: "health", categoryIds: ["health"] },
69
- { value: "mentions", label: "mentions", categoryIds: ["mentions"] },
70
- { value: "politics", label: "politics", categoryIds: ["politics"] },
71
- { value: "science", label: "science", categoryIds: ["science"] },
72
- { value: "sports", label: "sports", categoryIds: ["sports"] },
73
- { value: "technology", label: "technology", categoryIds: ["technology"] },
74
- { value: "weather", label: "weather", categoryIds: ["weather"] },
75
- { value: "world", label: "world", categoryIds: ["world"] }
76
- ];
77
- };
78
34
  var getDefaultEventSectionItems = (labels) => {
79
35
  return [
80
36
  {
@@ -95,31 +51,7 @@ var getDefaultEventSectionItems = (labels) => {
95
51
  };
96
52
 
97
53
  // src/pages/home/home.utils.ts
98
- var categoryOrderMap = CATEGORY_TAB_NAME_ORDER.reduce(
99
- (accumulator, name, index) => {
100
- accumulator.set(name, index);
101
- return accumulator;
102
- },
103
- /* @__PURE__ */ new Map()
104
- );
105
- var normalizeCategoryName = (name) => {
106
- return name.trim().toLowerCase();
107
- };
108
54
  var resolveCategoryTabs = (categories, allCategoryTabLabel) => {
109
- const sortedCategories = [...categories].sort((left, right) => {
110
- const leftName = normalizeCategoryName(left.name);
111
- const rightName = normalizeCategoryName(right.name);
112
- const leftOrder = categoryOrderMap.get(leftName);
113
- const rightOrder = categoryOrderMap.get(rightName);
114
- if (leftOrder != null && rightOrder != null) {
115
- return leftOrder - rightOrder;
116
- }
117
- if (leftOrder != null)
118
- return -1;
119
- if (rightOrder != null)
120
- return 1;
121
- return leftName.localeCompare(rightName);
122
- });
123
55
  const seenCategoryIds = /* @__PURE__ */ new Set();
124
56
  const tabs = [
125
57
  {
@@ -128,13 +60,13 @@ var resolveCategoryTabs = (categories, allCategoryTabLabel) => {
128
60
  iconName: "arrow-trend-up"
129
61
  }
130
62
  ];
131
- for (const category of sortedCategories) {
63
+ for (const category of categories) {
132
64
  if (seenCategoryIds.has(category.id))
133
65
  continue;
134
66
  seenCategoryIds.add(category.id);
135
67
  tabs.push({
136
68
  value: category.id,
137
- label: normalizeCategoryName(category.name),
69
+ label: category.name.trim().toLowerCase(),
138
70
  categoryIds: [category.id]
139
71
  });
140
72
  }
@@ -147,7 +79,7 @@ var resolveInitialTabValue = (tabs, defaultActiveTab) => {
147
79
  if (hasDefaultTab)
148
80
  return defaultActiveTab;
149
81
  }
150
- return (_b = (_a = tabs[0]) == null ? void 0 : _a.value) != null ? _b : "trending";
82
+ return (_b = (_a = tabs[0]) == null ? void 0 : _a.value) != null ? _b : ALL_CATEGORIES_TAB_VALUE;
151
83
  };
152
84
 
153
85
  // src/pages/home/index.tsx
@@ -158,17 +90,15 @@ var HomePage = ({
158
90
  onTabChange,
159
91
  eventSectionItems,
160
92
  classNames,
161
- useCategoriesTabs = true,
162
93
  categoriesLimit = DEFAULT_CATEGORIES_LIMIT,
163
94
  allCategoryTabLabel = DEFAULT_ALL_CATEGORY_TAB_LABEL
164
95
  }) => {
165
96
  const labels = useLabels();
166
97
  const hasCustomTabs = !!tabs && tabs.length > 0;
167
- const shouldUseCategoriesTabs = !hasCustomTabs && useCategoriesTabs;
168
98
  const resolvedAllCategoryTabLabel = allCategoryTabLabel === DEFAULT_ALL_CATEGORY_TAB_LABEL ? labels.home.trending : allCategoryTabLabel;
169
- const { categories } = useCategories({
99
+ const { categories, isLoading: isCategoriesLoading } = useCategories({
170
100
  limit: categoriesLimit,
171
- enabled: shouldUseCategoriesTabs
101
+ enabled: !hasCustomTabs
172
102
  });
173
103
  const categoryTabs = useMemo(() => {
174
104
  return resolveCategoryTabs(categories, resolvedAllCategoryTabLabel);
@@ -176,10 +106,8 @@ var HomePage = ({
176
106
  const resolvedTabs = useMemo(() => {
177
107
  if (hasCustomTabs && tabs)
178
108
  return tabs;
179
- if (shouldUseCategoriesTabs)
180
- return categoryTabs;
181
- return getDefaultHomePageTabs(resolvedAllCategoryTabLabel);
182
- }, [categoryTabs, hasCustomTabs, resolvedAllCategoryTabLabel, shouldUseCategoriesTabs, tabs]);
109
+ return categoryTabs;
110
+ }, [categoryTabs, hasCustomTabs, tabs]);
183
111
  const resolvedEventSectionItems = eventSectionItems && eventSectionItems.length > 0 ? eventSectionItems : getDefaultEventSectionItems(labels);
184
112
  const [activeTabValue, setActiveTabValue] = useState(() => {
185
113
  return resolveInitialTabValue(resolvedTabs, defaultActiveTab);
@@ -214,22 +142,20 @@ var HomePage = ({
214
142
  return resolvedTabs.find((tab) => tab.value === activeTabValue);
215
143
  }, [activeTabValue, resolvedTabs]);
216
144
  const resolvedSectionItems = useMemo(() => {
217
- var _a, _b, _c, _d, _e;
145
+ var _a, _b, _c, _d;
218
146
  if (activeTabValue === ALL_CATEGORIES_TAB_VALUE) {
219
147
  return resolvedEventSectionItems;
220
148
  }
221
149
  const maxItemsPerRow = (_b = (_a = resolvedEventSectionItems[0]) == null ? void 0 : _a.maxItemsPerRow) != null ? _b : 3;
222
- const showVenueLogo = (_c = resolvedEventSectionItems[0]) == null ? void 0 : _c.showVenueLogo;
223
- const firstSectionLimit = (_d = resolvedEventSectionItems[0]) == null ? void 0 : _d.limit;
150
+ const firstSectionLimit = (_c = resolvedEventSectionItems[0]) == null ? void 0 : _c.limit;
224
151
  const limit = firstSectionLimit && Number.isFinite(firstSectionLimit) ? Math.max(9, Math.floor(firstSectionLimit)) : 9;
225
152
  return [
226
153
  {
227
154
  id: `${activeTabValue}-markets`,
228
- title: (_e = activeTab == null ? void 0 : activeTab.label) != null ? _e : activeTabValue,
155
+ title: (_d = activeTab == null ? void 0 : activeTab.label) != null ? _d : activeTabValue,
229
156
  maxItemsPerRow,
230
157
  limit,
231
158
  maxVisibleItems: void 0,
232
- showVenueLogo,
233
159
  search: activeTab == null ? void 0 : activeTab.search,
234
160
  categoryIds: activeTab == null ? void 0 : activeTab.categoryIds
235
161
  }
@@ -239,6 +165,18 @@ var HomePage = ({
239
165
  setActiveTabValue(value);
240
166
  onTabChange == null ? void 0 : onTabChange(value);
241
167
  };
168
+ if (!hasCustomTabs && isCategoriesLoading) {
169
+ return /* @__PURE__ */ jsx("section", { className: cn("flex w-full flex-col", classNames == null ? void 0 : classNames.root), children: /* @__PURE__ */ jsx(
170
+ "header",
171
+ {
172
+ className: cn(
173
+ "w-full bg-agg-secondary border-b border-agg-separator",
174
+ classNames == null ? void 0 : classNames.header
175
+ ),
176
+ children: /* @__PURE__ */ jsx("div", { className: cn("w-full px-4 md:px-10 h-10", classNames == null ? void 0 : classNames.tabs) })
177
+ }
178
+ ) });
179
+ }
242
180
  return /* @__PURE__ */ jsxs("section", { className: cn("flex w-full flex-col", classNames == null ? void 0 : classNames.root), children: [
243
181
  /* @__PURE__ */ jsx(
244
182
  "header",
@@ -273,7 +211,6 @@ var HomePage = ({
273
211
  maxItemsPerRow: eventSectionItem.maxItemsPerRow,
274
212
  limit: eventSectionItem.limit,
275
213
  maxVisibleItems: eventSectionItem.maxVisibleItems,
276
- showVenueLogo: eventSectionItem.showVenueLogo,
277
214
  search: (_b = eventSectionItem.search) != null ? _b : activeTab == null ? void 0 : activeTab.search,
278
215
  categoryIds: (_c = eventSectionItem.categoryIds) != null ? _c : activeTab == null ? void 0 : activeTab.categoryIds
279
216
  },
@@ -288,9 +225,9 @@ HomePage.displayName = "HomePage";
288
225
 
289
226
  // src/pages/event-market/index.tsx
290
227
  import { useEffect as useEffect2, useMemo as useMemo2, useState as useState2 } from "react";
291
- import { useEvent, useLabels as useLabels2 } from "@agg-market/hooks";
228
+ import { useVenueEvent, useLabels as useLabels2 } from "@agg-market/hooks";
292
229
  import dayjs from "dayjs";
293
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
230
+ import { Fragment, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
294
231
  var getMarketDateValue = (market, fallbackIndex) => {
295
232
  var _a, _b, _c;
296
233
  const candidateDate = (_c = (_b = (_a = market.endDate) != null ? _a : market.startDate) != null ? _b : market.creationDate) != null ? _c : null;
@@ -304,29 +241,29 @@ var getMarketDateValue = (market, fallbackIndex) => {
304
241
  };
305
242
  var resolveHeroMarketId = (event, heroMarketId) => {
306
243
  var _a, _b;
307
- if (!((_a = event == null ? void 0 : event.markets) == null ? void 0 : _a.length))
244
+ if (!((_a = event == null ? void 0 : event.venueMarkets) == null ? void 0 : _a.length))
308
245
  return void 0;
309
246
  if (heroMarketId) {
310
- const matchingHeroMarket = event.markets.find(
247
+ const matchingHeroMarket = event.venueMarkets.find(
311
248
  (market) => market.id === heroMarketId
312
249
  );
313
250
  if (matchingHeroMarket)
314
251
  return matchingHeroMarket.id;
315
252
  }
316
- return (_b = event.markets[0]) == null ? void 0 : _b.id;
253
+ return (_b = event.venueMarkets[0]) == null ? void 0 : _b.id;
317
254
  };
318
255
  var buildHeroEvent = (event, heroMarketId) => {
319
256
  if (!heroMarketId)
320
257
  return void 0;
321
- const heroMarket = event.markets.find((market) => market.id === heroMarketId);
258
+ const heroMarket = event.venueMarkets.find((market) => market.id === heroMarketId);
322
259
  if (!heroMarket)
323
260
  return void 0;
324
261
  return __spreadProps(__spreadValues({}, event), {
325
- markets: [heroMarket]
262
+ venueMarkets: [heroMarket]
326
263
  });
327
264
  };
328
265
  var resolveDetailedMarkets = (event, heroMarketId) => {
329
- return event.markets.filter((market) => market.id !== heroMarketId).map((market, index) => ({
266
+ return event.venueMarkets.filter((market) => market.id !== heroMarketId).map((market, index) => ({
330
267
  market,
331
268
  index
332
269
  })).sort(
@@ -346,6 +283,69 @@ var resolveInitialExpandedMarketId = (detailedMarkets, defaultExpandedMarketId)
346
283
  }
347
284
  return (_b = (_a = detailedMarkets[0]) == null ? void 0 : _a.id) != null ? _b : null;
348
285
  };
286
+ var EventMarketPageMobileTrade = ({
287
+ placeOrder,
288
+ classNames
289
+ }) => {
290
+ const [isOpen, setIsOpen] = useState2(false);
291
+ const handleOpen = () => {
292
+ setIsOpen(true);
293
+ };
294
+ const handleOpenChange = (nextOpen) => {
295
+ setIsOpen(nextOpen);
296
+ };
297
+ const handleClose = () => {
298
+ setIsOpen(false);
299
+ };
300
+ return /* @__PURE__ */ jsxs2(Fragment, { children: [
301
+ /* @__PURE__ */ jsx2(
302
+ "div",
303
+ {
304
+ className: cn(
305
+ "fixed inset-x-0 bottom-0 z-20 flex justify-end p-4 lg:hidden",
306
+ classNames == null ? void 0 : classNames.mobileTradeCta
307
+ ),
308
+ children: /* @__PURE__ */ jsx2(
309
+ Button,
310
+ {
311
+ size: "large",
312
+ className: "min-w-[168px] shadow-agg-modal",
313
+ "aria-label": placeOrder.actionLabel,
314
+ "data-testid": "event-market-page-mobile-trade-cta",
315
+ onClick: (e) => {
316
+ e.stopPropagation();
317
+ e.preventDefault();
318
+ handleOpen();
319
+ },
320
+ children: placeOrder.actionLabel
321
+ }
322
+ )
323
+ }
324
+ ),
325
+ /* @__PURE__ */ jsx2(Modal, { open: isOpen, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsx2(
326
+ Modal.Container,
327
+ {
328
+ "aria-label": placeOrder.title,
329
+ maxWidth: "420px",
330
+ classNames: {
331
+ content: "items-end p-0 sm:items-center sm:p-4",
332
+ container: cn(
333
+ "w-full max-w-[420px] border-0 bg-transparent shadow-none",
334
+ classNames == null ? void 0 : classNames.mobileTradeModal
335
+ )
336
+ },
337
+ children: /* @__PURE__ */ jsx2(
338
+ PlaceOrder,
339
+ __spreadProps(__spreadValues({}, placeOrder), {
340
+ isDismissible: true,
341
+ className: cn("w-full rounded-t-agg-2xl sm:rounded-agg-xl", classNames == null ? void 0 : classNames.mobileTrade),
342
+ onClose: handleClose
343
+ })
344
+ )
345
+ }
346
+ ) })
347
+ ] });
348
+ };
349
349
  var EventMarketPageUnavailableState = ({
350
350
  ariaLabel
351
351
  }) => {
@@ -395,46 +395,66 @@ var EventMarketPageLoadingState = ({
395
395
  }
396
396
  ]
397
397
  };
398
- return /* @__PURE__ */ jsx2("section", { className: cn("w-full", classNames == null ? void 0 : classNames.root), children: /* @__PURE__ */ jsxs2(
399
- "div",
400
- {
401
- className: cn(
402
- "mx-auto flex w-full max-w-[1200px] flex-col gap-6 px-3 py-3 md:px-6 md:py-6 lg:flex-row lg:items-start lg:gap-8",
403
- classNames == null ? void 0 : classNames.content
404
- ),
405
- children: [
406
- /* @__PURE__ */ jsxs2("div", { className: cn("flex min-w-0 flex-1 flex-col gap-6", classNames == null ? void 0 : classNames.main), children: [
407
- /* @__PURE__ */ jsx2(
408
- EventListItemDetails,
409
- {
410
- isLoading: true,
411
- classNames: {
412
- root: classNames == null ? void 0 : classNames.hero
398
+ return /* @__PURE__ */ jsxs2("section", { className: cn("w-full pb-24 lg:pb-0", classNames == null ? void 0 : classNames.root), children: [
399
+ /* @__PURE__ */ jsxs2(
400
+ "div",
401
+ {
402
+ className: cn(
403
+ "mx-auto flex w-full max-w-[1200px] flex-col gap-6 px-3 py-3 md:px-6 md:py-6 lg:flex-row lg:items-start lg:gap-8",
404
+ classNames == null ? void 0 : classNames.content
405
+ ),
406
+ children: [
407
+ /* @__PURE__ */ jsxs2("div", { className: cn("flex min-w-0 flex-1 flex-col gap-6", classNames == null ? void 0 : classNames.main), children: [
408
+ /* @__PURE__ */ jsx2(
409
+ EventListItemDetails,
410
+ {
411
+ isLoading: true,
412
+ classNames: {
413
+ root: classNames == null ? void 0 : classNames.hero
414
+ }
413
415
  }
414
- }
415
- ),
416
- /* @__PURE__ */ jsxs2("div", { className: cn("flex flex-col gap-3", classNames == null ? void 0 : classNames.markets), children: [
417
- /* @__PURE__ */ jsx2(MarketDetails, { isLoading: true, isOpened: true, classNames: { root: "w-full" } }),
418
- /* @__PURE__ */ jsx2(MarketDetails, { isLoading: true, isOpened: false, classNames: { root: "w-full" } }),
419
- /* @__PURE__ */ jsx2(MarketDetails, { isLoading: true, isOpened: false, classNames: { root: "w-full" } })
416
+ ),
417
+ /* @__PURE__ */ jsxs2("div", { className: cn("flex flex-col gap-3", classNames == null ? void 0 : classNames.markets), children: [
418
+ /* @__PURE__ */ jsx2(MarketDetails, { isLoading: true, isOpened: true, classNames: { root: "w-full" } }),
419
+ /* @__PURE__ */ jsx2(MarketDetails, { isLoading: true, isOpened: false, classNames: { root: "w-full" } }),
420
+ /* @__PURE__ */ jsx2(MarketDetails, { isLoading: true, isOpened: false, classNames: { root: "w-full" } })
421
+ ] }),
422
+ /* @__PURE__ */ jsx2("div", { className: "md:hidden", children: /* @__PURE__ */ jsx2(Settlement, __spreadProps(__spreadValues({}, fallbackSettlement), { isLoading: true, className: classNames == null ? void 0 : classNames.settlement })) }),
423
+ /* @__PURE__ */ jsx2("div", { className: "hidden md:block", children: /* @__PURE__ */ jsx2(Settlement, __spreadProps(__spreadValues({}, fallbackSettlement), { isLoading: true, className: classNames == null ? void 0 : classNames.settlement })) })
420
424
  ] }),
421
- /* @__PURE__ */ jsx2("div", { className: "md:hidden", children: /* @__PURE__ */ jsx2(Settlement, __spreadProps(__spreadValues({}, fallbackSettlement), { isLoading: true, className: classNames == null ? void 0 : classNames.settlement })) }),
422
- /* @__PURE__ */ jsx2("div", { className: "hidden md:block", children: /* @__PURE__ */ jsx2(Settlement, __spreadProps(__spreadValues({}, fallbackSettlement), { isLoading: true, className: classNames == null ? void 0 : classNames.settlement })) }),
423
- placeOrder ? /* @__PURE__ */ jsx2("div", { className: "md:hidden", children: /* @__PURE__ */ jsx2(PlaceOrder, __spreadProps(__spreadValues({}, placeOrder), { isLoading: true, className: classNames == null ? void 0 : classNames.mobileTrade })) }) : null
424
- ] }),
425
- placeOrder ? /* @__PURE__ */ jsx2(
426
- "aside",
425
+ placeOrder ? /* @__PURE__ */ jsx2(
426
+ "aside",
427
+ {
428
+ className: cn(
429
+ "hidden w-full shrink-0 lg:sticky lg:top-6 lg:block lg:w-[343px]",
430
+ classNames == null ? void 0 : classNames.sidebar
431
+ ),
432
+ children: /* @__PURE__ */ jsx2(PlaceOrder, __spreadProps(__spreadValues({}, placeOrder), { isLoading: true, className: classNames == null ? void 0 : classNames.trade }))
433
+ }
434
+ ) : null
435
+ ]
436
+ }
437
+ ),
438
+ placeOrder ? /* @__PURE__ */ jsx2(
439
+ "div",
440
+ {
441
+ className: cn(
442
+ "fixed inset-x-0 bottom-0 z-20 flex justify-end p-4 lg:hidden",
443
+ classNames == null ? void 0 : classNames.mobileTradeCta
444
+ ),
445
+ children: /* @__PURE__ */ jsx2(
446
+ Button,
427
447
  {
428
- className: cn(
429
- "hidden w-full shrink-0 lg:sticky lg:top-6 lg:block lg:w-[343px]",
430
- classNames == null ? void 0 : classNames.sidebar
431
- ),
432
- children: /* @__PURE__ */ jsx2(PlaceOrder, __spreadProps(__spreadValues({}, placeOrder), { isLoading: true, className: classNames == null ? void 0 : classNames.trade }))
448
+ size: "large",
449
+ className: "min-w-[168px] shadow-agg-modal",
450
+ "aria-label": placeOrder.actionLabel,
451
+ disabled: true,
452
+ children: placeOrder.actionLabel
433
453
  }
434
- ) : null
435
- ]
436
- }
437
- ) });
454
+ )
455
+ }
456
+ ) : null
457
+ ] });
438
458
  };
439
459
  var EventMarketPageContent = ({
440
460
  event,
@@ -484,60 +504,78 @@ var EventMarketPageContent = ({
484
504
  }
485
505
  onExpandedMarketChange == null ? void 0 : onExpandedMarketChange(nextExpandedMarketId);
486
506
  };
487
- if (!heroEvent || !event.markets.length) {
507
+ if (!heroEvent || !event.venueMarkets.length) {
488
508
  return /* @__PURE__ */ jsx2(EventMarketPageUnavailableState, { ariaLabel });
489
509
  }
490
- return /* @__PURE__ */ jsx2("section", { className: cn("w-full", classNames == null ? void 0 : classNames.root), "aria-label": ariaLabel != null ? ariaLabel : event.title, children: /* @__PURE__ */ jsxs2(
491
- "div",
510
+ return /* @__PURE__ */ jsxs2(
511
+ "section",
492
512
  {
493
- className: cn(
494
- "mx-auto flex w-full max-w-[1200px] flex-row gap-6 px-3 py-3 md:px-6 md:py-6 lg:flex-row lg:items-start lg:gap-8",
495
- classNames == null ? void 0 : classNames.content
496
- ),
513
+ className: cn("w-full pb-24 lg:pb-0", classNames == null ? void 0 : classNames.root),
514
+ "aria-label": ariaLabel != null ? ariaLabel : event.title,
497
515
  children: [
498
- /* @__PURE__ */ jsxs2("div", { className: cn("flex min-w-0 flex-1 flex-col gap-6", classNames == null ? void 0 : classNames.main), children: [
499
- /* @__PURE__ */ jsx2(
500
- EventListItemDetails,
501
- {
502
- event: heroEvent,
503
- defaultTimeRange: heroDefaultTimeRange,
504
- classNames: {
505
- root: classNames == null ? void 0 : classNames.hero
506
- }
507
- }
508
- ),
509
- detailedMarkets.length > 0 ? /* @__PURE__ */ jsx2("div", { className: cn("flex flex-col gap-3", classNames == null ? void 0 : classNames.markets), children: detailedMarkets.map((market) => {
510
- const isOpened = resolvedExpandedMarketId === market.id;
511
- return /* @__PURE__ */ jsx2(
512
- MarketDetails,
513
- {
514
- event,
515
- marketId: market.id,
516
- isOpened,
517
- defaultTab: "order-book",
518
- ariaLabel: market.endDate && dayjs(market.endDate).isValid() ? labels.eventMarketPage.marketDetailsAriaByDate(
519
- dayjs(market.endDate).format("MMM D, YYYY")
520
- ) : labels.eventMarketPage.marketDetailsAriaByQuestion(market.question),
521
- onOpenChange: (nextIsOpened) => handleExpandedMarketChange(market.id, nextIsOpened)
522
- },
523
- market.id
524
- );
525
- }) }) : null,
526
- settlement ? /* @__PURE__ */ jsx2("div", { className: "md:hidden", children: /* @__PURE__ */ jsx2(Settlement, __spreadProps(__spreadValues({}, settlement), { className: classNames == null ? void 0 : classNames.settlement })) }) : null,
527
- settlement ? /* @__PURE__ */ jsx2("div", { className: "hidden md:block", children: /* @__PURE__ */ jsx2(Settlement, __spreadProps(__spreadValues({}, settlement), { className: classNames == null ? void 0 : classNames.settlement })) }) : null
528
- ] }),
529
- placeOrder ? /* @__PURE__ */ jsx2("aside", { className: cn("w-full lg:block lg:max-w-[360px]", classNames == null ? void 0 : classNames.sidebar), children: /* @__PURE__ */ jsx2(PlaceOrder, __spreadProps(__spreadValues({}, placeOrder), { className: classNames == null ? void 0 : classNames.trade })) }) : null
516
+ /* @__PURE__ */ jsxs2(
517
+ "div",
518
+ {
519
+ className: cn(
520
+ "mx-auto flex w-full max-w-[1200px] flex-row gap-6 px-3 py-3 md:px-6 md:py-6 lg:flex-row lg:items-start lg:gap-8",
521
+ classNames == null ? void 0 : classNames.content
522
+ ),
523
+ children: [
524
+ /* @__PURE__ */ jsxs2("div", { className: cn("flex min-w-0 flex-1 flex-col gap-6", classNames == null ? void 0 : classNames.main), children: [
525
+ /* @__PURE__ */ jsx2(
526
+ EventListItemDetails,
527
+ {
528
+ event: heroEvent,
529
+ defaultTimeRange: heroDefaultTimeRange,
530
+ classNames: {
531
+ root: classNames == null ? void 0 : classNames.hero
532
+ }
533
+ }
534
+ ),
535
+ detailedMarkets.length > 0 ? /* @__PURE__ */ jsx2("div", { className: cn("flex flex-col gap-3", classNames == null ? void 0 : classNames.markets), children: detailedMarkets.map((market) => {
536
+ const isOpened = resolvedExpandedMarketId === market.id;
537
+ return /* @__PURE__ */ jsx2(
538
+ MarketDetails,
539
+ {
540
+ venueMarkets: [market],
541
+ isOpened,
542
+ defaultTab: "order-book",
543
+ ariaLabel: market.endDate && dayjs(market.endDate).isValid() ? labels.eventMarketPage.marketDetailsAriaByDate(
544
+ dayjs(market.endDate).format("MMM D, YYYY")
545
+ ) : labels.eventMarketPage.marketDetailsAriaByQuestion(market.question),
546
+ onOpenChange: (nextIsOpened) => handleExpandedMarketChange(market.id, nextIsOpened)
547
+ },
548
+ market.id
549
+ );
550
+ }) }) : null,
551
+ settlement ? /* @__PURE__ */ jsx2("div", { className: "md:hidden", children: /* @__PURE__ */ jsx2(Settlement, __spreadProps(__spreadValues({}, settlement), { className: classNames == null ? void 0 : classNames.settlement })) }) : null,
552
+ settlement ? /* @__PURE__ */ jsx2("div", { className: "hidden md:block", children: /* @__PURE__ */ jsx2(Settlement, __spreadProps(__spreadValues({}, settlement), { className: classNames == null ? void 0 : classNames.settlement })) }) : null
553
+ ] }),
554
+ placeOrder ? /* @__PURE__ */ jsx2(
555
+ "aside",
556
+ {
557
+ className: cn("hidden w-full lg:block lg:max-w-[360px]", classNames == null ? void 0 : classNames.sidebar),
558
+ "data-testid": "event-market-page-desktop-trade",
559
+ children: /* @__PURE__ */ jsx2(PlaceOrder, __spreadProps(__spreadValues({}, placeOrder), { className: classNames == null ? void 0 : classNames.trade }))
560
+ }
561
+ ) : null
562
+ ]
563
+ }
564
+ ),
565
+ placeOrder ? /* @__PURE__ */ jsx2(EventMarketPageMobileTrade, { placeOrder, classNames }) : null
530
566
  ]
531
567
  }
532
- ) });
568
+ );
533
569
  };
534
570
  var EventMarketPage = (props) => {
571
+ var _a;
535
572
  const hasEventProp = "event" in props && !!props.event;
536
573
  const {
537
574
  event: fetchedEvent,
538
575
  error: eventError,
539
576
  isLoading: isFetchingEvent
540
- } = useEvent(hasEventProp ? void 0 : props.eventId, {
577
+ } = useVenueEvent({
578
+ eventId: hasEventProp ? "" : (_a = props.eventId) != null ? _a : "",
541
579
  enabled: !props.isLoading && !hasEventProp && !!props.eventId
542
580
  });
543
581
  if (props.isLoading) {