@agg-market/ui 0.0.1

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 (192) hide show
  1. package/dist/badge.d.mts +26 -0
  2. package/dist/badge.d.ts +26 -0
  3. package/dist/badge.js +70 -0
  4. package/dist/badge.mjs +9 -0
  5. package/dist/button.d.mts +20 -0
  6. package/dist/button.d.ts +20 -0
  7. package/dist/button.js +197 -0
  8. package/dist/button.mjs +8 -0
  9. package/dist/card.d.mts +8 -0
  10. package/dist/card.d.ts +8 -0
  11. package/dist/card.js +84 -0
  12. package/dist/card.mjs +7 -0
  13. package/dist/chart.d.mts +40 -0
  14. package/dist/chart.d.ts +40 -0
  15. package/dist/chart.js +418 -0
  16. package/dist/chart.mjs +8 -0
  17. package/dist/chunk-2PGUPOXY.mjs +285 -0
  18. package/dist/chunk-3DV3D2LH.mjs +155 -0
  19. package/dist/chunk-44UEI6KD.mjs +280 -0
  20. package/dist/chunk-4ADCXJE6.mjs +297 -0
  21. package/dist/chunk-4GSXVVSA.mjs +64 -0
  22. package/dist/chunk-4NK2FNAG.mjs +581 -0
  23. package/dist/chunk-4XWCYUV3.mjs +355 -0
  24. package/dist/chunk-5MN6ZNFA.mjs +355 -0
  25. package/dist/chunk-6RRBINER.mjs +50 -0
  26. package/dist/chunk-765JPQDG.mjs +280 -0
  27. package/dist/chunk-7CD7GIZC.mjs +850 -0
  28. package/dist/chunk-7XRKA6XF.mjs +462 -0
  29. package/dist/chunk-AOFP74IB.mjs +850 -0
  30. package/dist/chunk-BNDFQPHF.mjs +9 -0
  31. package/dist/chunk-C4OI72SM.mjs +14 -0
  32. package/dist/chunk-CB2MLGCJ.mjs +279 -0
  33. package/dist/chunk-CKTAVEW2.mjs +212 -0
  34. package/dist/chunk-DA6KZWSK.mjs +807 -0
  35. package/dist/chunk-DBD5GHHD.mjs +147 -0
  36. package/dist/chunk-DQ6XFBYJ.mjs +37 -0
  37. package/dist/chunk-FACIYUNK.mjs +217 -0
  38. package/dist/chunk-FUJQIYOF.mjs +37 -0
  39. package/dist/chunk-FZTAHWOS.mjs +82 -0
  40. package/dist/chunk-GC3QIIH7.mjs +112 -0
  41. package/dist/chunk-GPBLZGJ2.mjs +136 -0
  42. package/dist/chunk-H4LELROL.mjs +262 -0
  43. package/dist/chunk-H7P6DIX4.mjs +262 -0
  44. package/dist/chunk-H7YEBGYY.mjs +42 -0
  45. package/dist/chunk-HJOBAMDU.mjs +142 -0
  46. package/dist/chunk-IJG5I642.mjs +462 -0
  47. package/dist/chunk-IY2AA3OL.mjs +50 -0
  48. package/dist/chunk-J6L5BLKX.mjs +136 -0
  49. package/dist/chunk-J7OETCZ7.mjs +147 -0
  50. package/dist/chunk-JLLMIPIX.mjs +42 -0
  51. package/dist/chunk-KBRLFTJT.mjs +741 -0
  52. package/dist/chunk-KDBYDMYV.mjs +64 -0
  53. package/dist/chunk-L6E6Q4C4.mjs +217 -0
  54. package/dist/chunk-LY6474C4.mjs +297 -0
  55. package/dist/chunk-M23S2DVV.mjs +581 -0
  56. package/dist/chunk-MG243DSX.mjs +44 -0
  57. package/dist/chunk-MRHSN2B7.mjs +279 -0
  58. package/dist/chunk-MXWRCVRJ.mjs +285 -0
  59. package/dist/chunk-NFYS557L.mjs +481 -0
  60. package/dist/chunk-NNSY462N.mjs +212 -0
  61. package/dist/chunk-OUOIDPGX.mjs +25 -0
  62. package/dist/chunk-P5PFQX75.mjs +31 -0
  63. package/dist/chunk-P674XRDY.mjs +481 -0
  64. package/dist/chunk-PAQ542ER.mjs +170 -0
  65. package/dist/chunk-QE46DVJG.mjs +323 -0
  66. package/dist/chunk-QXFDXXDB.mjs +792 -0
  67. package/dist/chunk-R3DRVI4J.mjs +741 -0
  68. package/dist/chunk-TTOR7JCT.mjs +155 -0
  69. package/dist/chunk-V5WIYMKS.mjs +25 -0
  70. package/dist/chunk-VAZE267Q.mjs +82 -0
  71. package/dist/chunk-VLIJ7PQK.mjs +792 -0
  72. package/dist/chunk-VYNVBJK6.mjs +44 -0
  73. package/dist/chunk-WIWJ6DIE.mjs +323 -0
  74. package/dist/chunk-XDAEEJYR.mjs +142 -0
  75. package/dist/chunk-YUIZZ6XE.mjs +31 -0
  76. package/dist/connect-button.d.mts +40 -0
  77. package/dist/connect-button.d.ts +40 -0
  78. package/dist/connect-button.js +1815 -0
  79. package/dist/connect-button.mjs +14 -0
  80. package/dist/event-list-item-details.d.mts +11 -0
  81. package/dist/event-list-item-details.d.ts +11 -0
  82. package/dist/event-list-item-details.js +2140 -0
  83. package/dist/event-list-item-details.mjs +19 -0
  84. package/dist/event-list-item-details.types-CMbXOrT-.d.ts +53 -0
  85. package/dist/event-list-item-details.types-CxWr4Qn1.d.ts +53 -0
  86. package/dist/event-list-item-details.types-DRi99PZq.d.mts +53 -0
  87. package/dist/event-list-item-details.types-DekJKeMD.d.mts +53 -0
  88. package/dist/event-list-item.d.mts +10 -0
  89. package/dist/event-list-item.d.ts +10 -0
  90. package/dist/event-list-item.js +2097 -0
  91. package/dist/event-list-item.mjs +17 -0
  92. package/dist/event-list-item.types-B1490EQm.d.mts +46 -0
  93. package/dist/event-list-item.types-B1490EQm.d.ts +46 -0
  94. package/dist/event-list-item.types-Y6IeJ4e4.d.mts +46 -0
  95. package/dist/event-list-item.types-Y6IeJ4e4.d.ts +46 -0
  96. package/dist/event-list.d.mts +9 -0
  97. package/dist/event-list.d.ts +9 -0
  98. package/dist/event-list.js +3151 -0
  99. package/dist/event-list.mjs +20 -0
  100. package/dist/event-list.types-Bpp6Vn-t.d.mts +13 -0
  101. package/dist/event-list.types-Bpp6Vn-t.d.ts +13 -0
  102. package/dist/event-list.types-CkAAUqwW.d.mts +13 -0
  103. package/dist/event-list.types-CkAAUqwW.d.ts +13 -0
  104. package/dist/event-market-page.d.mts +52 -0
  105. package/dist/event-market-page.d.ts +52 -0
  106. package/dist/event-market-page.js +5369 -0
  107. package/dist/event-market-page.mjs +29 -0
  108. package/dist/hello-world.d.mts +8 -0
  109. package/dist/hello-world.d.ts +8 -0
  110. package/dist/hello-world.js +80 -0
  111. package/dist/hello-world.mjs +8 -0
  112. package/dist/home-page.d.mts +51 -0
  113. package/dist/home-page.d.ts +51 -0
  114. package/dist/home-page.js +3415 -0
  115. package/dist/home-page.mjs +21 -0
  116. package/dist/icon.d.mts +123 -0
  117. package/dist/icon.d.ts +123 -0
  118. package/dist/icon.js +922 -0
  119. package/dist/icon.mjs +57 -0
  120. package/dist/index.d.mts +70 -0
  121. package/dist/index.d.ts +70 -0
  122. package/dist/index.js +8184 -0
  123. package/dist/index.mjs +307 -0
  124. package/dist/loading-icon.d.mts +14 -0
  125. package/dist/loading-icon.d.ts +14 -0
  126. package/dist/loading-icon.js +115 -0
  127. package/dist/loading-icon.mjs +8 -0
  128. package/dist/market-details.d.mts +73 -0
  129. package/dist/market-details.d.ts +73 -0
  130. package/dist/market-details.js +3923 -0
  131. package/dist/market-details.mjs +22 -0
  132. package/dist/modal.d.mts +66 -0
  133. package/dist/modal.d.ts +66 -0
  134. package/dist/modal.js +317 -0
  135. package/dist/modal.mjs +9 -0
  136. package/dist/number-value.d.mts +14 -0
  137. package/dist/number-value.d.ts +14 -0
  138. package/dist/number-value.js +67 -0
  139. package/dist/number-value.mjs +7 -0
  140. package/dist/onboarding-modal.d.mts +88 -0
  141. package/dist/onboarding-modal.d.ts +88 -0
  142. package/dist/onboarding-modal.js +2242 -0
  143. package/dist/onboarding-modal.mjs +24 -0
  144. package/dist/place-order.d.mts +20 -0
  145. package/dist/place-order.d.ts +20 -0
  146. package/dist/place-order.js +2916 -0
  147. package/dist/place-order.mjs +18 -0
  148. package/dist/registry-CVn79H3I.d.mts +106 -0
  149. package/dist/registry-CVn79H3I.d.ts +106 -0
  150. package/dist/search.d.mts +69 -0
  151. package/dist/search.d.ts +69 -0
  152. package/dist/search.js +1465 -0
  153. package/dist/search.mjs +12 -0
  154. package/dist/select.d.mts +19 -0
  155. package/dist/select.d.ts +19 -0
  156. package/dist/select.js +920 -0
  157. package/dist/select.mjs +11 -0
  158. package/dist/settlement.d.mts +16 -0
  159. package/dist/settlement.d.ts +16 -0
  160. package/dist/settlement.js +1769 -0
  161. package/dist/settlement.mjs +15 -0
  162. package/dist/skeleton.d.mts +22 -0
  163. package/dist/skeleton.d.ts +22 -0
  164. package/dist/skeleton.js +523 -0
  165. package/dist/skeleton.mjs +10 -0
  166. package/dist/styles.css +2 -0
  167. package/dist/switch-button.d.mts +21 -0
  168. package/dist/switch-button.d.ts +21 -0
  169. package/dist/switch-button.js +184 -0
  170. package/dist/switch-button.mjs +7 -0
  171. package/dist/tabs.d.mts +27 -0
  172. package/dist/tabs.d.ts +27 -0
  173. package/dist/tabs.js +1708 -0
  174. package/dist/tabs.mjs +12 -0
  175. package/dist/tailwind.css +2 -0
  176. package/dist/types-8VUuQVZq.d.mts +387 -0
  177. package/dist/types-8VUuQVZq.d.ts +387 -0
  178. package/dist/types-CayJ8tWA.d.mts +3 -0
  179. package/dist/types-CayJ8tWA.d.ts +3 -0
  180. package/dist/typography.d.mts +16 -0
  181. package/dist/typography.d.ts +16 -0
  182. package/dist/typography.js +62 -0
  183. package/dist/typography.mjs +7 -0
  184. package/dist/venue-logo.d.mts +12 -0
  185. package/dist/venue-logo.d.ts +12 -0
  186. package/dist/venue-logo.js +350 -0
  187. package/dist/venue-logo.mjs +10 -0
  188. package/dist/venue-logo.types-4hmCg3D3.d.ts +17 -0
  189. package/dist/venue-logo.types-B1iPJgiD.d.mts +17 -0
  190. package/dist/venue-logo.types-Bg8eXtGp.d.ts +17 -0
  191. package/dist/venue-logo.types-QNDwiQ77.d.mts +17 -0
  192. package/package.json +195 -0
@@ -0,0 +1,850 @@
1
+ import {
2
+ buildPriceHistoryGroups,
3
+ getTimeWindowByRange,
4
+ resolveOutcomeLabels,
5
+ resolveOutcomesByVenue,
6
+ resolveSeriesColor
7
+ } from "./chunk-XDAEEJYR.mjs";
8
+ import {
9
+ Tabs
10
+ } from "./chunk-QXFDXXDB.mjs";
11
+ import {
12
+ getVenueSummary,
13
+ normalizeProbability,
14
+ resolveTileImage,
15
+ resolveTileTitle,
16
+ selectPrimaryVenueMarket
17
+ } from "./chunk-PAQ542ER.mjs";
18
+ import {
19
+ Skeleton,
20
+ eventListItemDetailsTimeRanges,
21
+ getMarketDetailsTabs,
22
+ marketDetailsBaseCardClassName,
23
+ marketDetailsDefaultIsOpened,
24
+ orderBookRowLimitDefault
25
+ } from "./chunk-NFYS557L.mjs";
26
+ import {
27
+ LoadingIcon
28
+ } from "./chunk-FZTAHWOS.mjs";
29
+ import {
30
+ VenueLogo
31
+ } from "./chunk-LY6474C4.mjs";
32
+ import {
33
+ Typography
34
+ } from "./chunk-DQ6XFBYJ.mjs";
35
+ import {
36
+ Card
37
+ } from "./chunk-YUIZZ6XE.mjs";
38
+ import {
39
+ LineChart
40
+ } from "./chunk-FACIYUNK.mjs";
41
+ import {
42
+ SwitchButton
43
+ } from "./chunk-TTOR7JCT.mjs";
44
+ import {
45
+ __spreadProps,
46
+ __spreadValues,
47
+ cn,
48
+ getMotionClassName
49
+ } from "./chunk-GC3QIIH7.mjs";
50
+
51
+ // src/events/market-details/index.tsx
52
+ import { useEffect, useId, useMemo, useState } from "react";
53
+ import { useEvent, useLabels, useOrderBook, usePriceHistory, useSdkUiConfig } from "@agg-market/hooks";
54
+
55
+ // src/events/market-details/market-details.utils.ts
56
+ import dayjs from "dayjs";
57
+ import { z } from "zod";
58
+ var MarketDetailsTabSchema = z.enum(["order-book", "graph", "other"]);
59
+ var OrderBookLevelSchema = z.object({
60
+ price: z.number().min(0).max(1),
61
+ size: z.number().nonnegative()
62
+ });
63
+ var OrderBookRowSchema = z.object({
64
+ id: z.string(),
65
+ venue: z.enum(["kalshi", "polymarket"]),
66
+ price: z.number().min(0).max(1),
67
+ size: z.number().nonnegative(),
68
+ total: z.number().nonnegative(),
69
+ tone: z.enum(["positive", "negative"])
70
+ });
71
+ var normalizeLabel = (value) => {
72
+ return value.trim().toLowerCase();
73
+ };
74
+ var hasBinaryLabels = (labels) => {
75
+ const normalizedLabels = labels.map(normalizeLabel);
76
+ return normalizedLabels.includes("yes") && normalizedLabels.includes("no");
77
+ };
78
+ var resolveInitialTab = (defaultTab) => {
79
+ const parsedTab = MarketDetailsTabSchema.safeParse(defaultTab);
80
+ if (parsedTab.success)
81
+ return parsedTab.data;
82
+ return "order-book";
83
+ };
84
+ var resolveMarket = (event, marketId) => {
85
+ var _a;
86
+ if (!event.markets.length)
87
+ return void 0;
88
+ if (!marketId)
89
+ return event.markets[0];
90
+ return (_a = event.markets.find((market) => market.id === marketId)) != null ? _a : event.markets[0];
91
+ };
92
+ var resolveDisplayOutcomeLabels = (labels) => {
93
+ if (!hasBinaryLabels(labels))
94
+ return labels;
95
+ return ["Yes", "No"].filter(
96
+ (label) => labels.some((value) => normalizeLabel(value) === normalizeLabel(label))
97
+ );
98
+ };
99
+ var resolveInitialOutcomeLabel = (labels, defaultOutcomeLabel) => {
100
+ var _a;
101
+ if (labels.length === 0)
102
+ return void 0;
103
+ if (defaultOutcomeLabel) {
104
+ const matchedLabel = labels.find(
105
+ (label) => normalizeLabel(label) === normalizeLabel(defaultOutcomeLabel)
106
+ );
107
+ if (matchedLabel)
108
+ return matchedLabel;
109
+ }
110
+ if (hasBinaryLabels(labels)) {
111
+ return (_a = labels.find((label) => normalizeLabel(label) === "yes")) != null ? _a : labels[0];
112
+ }
113
+ return labels[0];
114
+ };
115
+ var resolveAverageProbabilityByLabel = (venueMarkets, labels) => {
116
+ return new Map(
117
+ labels.map((label) => {
118
+ const matchingOutcomes = resolveOutcomesByVenue(venueMarkets, label);
119
+ const probabilities = matchingOutcomes.map((item) => normalizeProbability(item.outcome.price)).filter((value) => value != null);
120
+ if (!probabilities.length) {
121
+ return [label, void 0];
122
+ }
123
+ const averageProbability = probabilities.reduce((sum, value) => sum + value, 0) / probabilities.length;
124
+ return [label, averageProbability];
125
+ })
126
+ );
127
+ };
128
+ var formatProbabilityPercent = (value) => {
129
+ if (value == null)
130
+ return "-";
131
+ return `${Math.round(value * 100)}%`;
132
+ };
133
+ var formatProbabilityCents = (value) => {
134
+ if (value == null)
135
+ return "-";
136
+ const cents = (value * 100).toFixed(1).replace(/\.0$/, "");
137
+ return `${cents}\xA2`;
138
+ };
139
+ var resolveOutcomeTone = (label, index) => {
140
+ const normalizedLabel = normalizeLabel(label);
141
+ if (normalizedLabel === "yes" || normalizedLabel === "up" || normalizedLabel === "buy") {
142
+ return "positive";
143
+ }
144
+ if (normalizedLabel === "no" || normalizedLabel === "down" || normalizedLabel === "sell") {
145
+ return "negative";
146
+ }
147
+ return index === 0 ? "positive" : "negative";
148
+ };
149
+ var resolveHeaderOutcomeItems = (venueMarkets, defaultOutcomeLabel) => {
150
+ const labels = resolveDisplayOutcomeLabels(resolveOutcomeLabels(venueMarkets));
151
+ const probabilityByLabel = resolveAverageProbabilityByLabel(venueMarkets, labels);
152
+ return labels.slice(0, 2).map((label, index) => {
153
+ var _a;
154
+ return {
155
+ label,
156
+ probability: probabilityByLabel.get(label),
157
+ tone: resolveOutcomeTone(label, index),
158
+ isDefault: normalizeLabel(label) === normalizeLabel((_a = defaultOutcomeLabel != null ? defaultOutcomeLabel : labels[0]) != null ? _a : "")
159
+ };
160
+ });
161
+ };
162
+ var resolveSubtitle = ({
163
+ venueMarkets,
164
+ volume,
165
+ formatCompactCurrency,
166
+ labels
167
+ }) => {
168
+ const { venueCount } = getVenueSummary(venueMarkets);
169
+ const parts = [
170
+ `${venueCount} ${venueCount === 1 ? labels.marketDetails.meta.venueSingular : labels.marketDetails.meta.venuePlural}`
171
+ ];
172
+ if (typeof volume === "number") {
173
+ parts.push(`${formatCompactCurrency(volume)} ${labels.marketDetails.meta.volumeSuffix}`);
174
+ }
175
+ return parts.join(" \xB7 ");
176
+ };
177
+ var resolveOrderBookRows = ({
178
+ data,
179
+ side,
180
+ depth
181
+ }) => {
182
+ if (!(data == null ? void 0 : data.length))
183
+ return [];
184
+ const tone = side === "asks" ? "negative" : "positive";
185
+ const rows = data.flatMap((result) => {
186
+ var _a;
187
+ return ((_a = result.orderbook[side]) != null ? _a : []).flatMap((level, index) => {
188
+ const parsedLevel = OrderBookLevelSchema.safeParse(level);
189
+ if (!parsedLevel.success)
190
+ return [];
191
+ const parsedRow = OrderBookRowSchema.safeParse({
192
+ id: `${result.market.id}-${side}-${index}-${parsedLevel.data.price}`,
193
+ venue: result.market.venue,
194
+ price: parsedLevel.data.price,
195
+ size: parsedLevel.data.size,
196
+ total: parsedLevel.data.price * parsedLevel.data.size,
197
+ tone
198
+ });
199
+ if (!parsedRow.success)
200
+ return [];
201
+ return [parsedRow.data];
202
+ });
203
+ });
204
+ const sortedRows = [...rows].sort((left, right) => {
205
+ if (side === "asks")
206
+ return left.price - right.price;
207
+ return right.price - left.price;
208
+ });
209
+ const limitedRows = sortedRows.slice(0, Math.max(1, depth));
210
+ const maxTotal = limitedRows.reduce((currentMax, row) => Math.max(currentMax, row.total), 0) || 1;
211
+ return limitedRows.map((row) => __spreadProps(__spreadValues({}, row), {
212
+ barScale: row.total / maxTotal
213
+ }));
214
+ };
215
+ var resolveOtherTabRows = (market, labels) => {
216
+ var _a;
217
+ const rows = [];
218
+ rows.push({
219
+ label: labels.marketDetails.meta.status,
220
+ value: (_a = market.status) != null ? _a : labels.marketDetails.meta.unknown
221
+ });
222
+ if (market.creationDate) {
223
+ rows.push({
224
+ label: labels.marketDetails.meta.created,
225
+ value: dayjs(market.creationDate).format("MMM D, YYYY")
226
+ });
227
+ }
228
+ if (market.startDate) {
229
+ rows.push({
230
+ label: labels.marketDetails.meta.opens,
231
+ value: dayjs(market.startDate).format("MMM D, YYYY")
232
+ });
233
+ }
234
+ if (market.endDate) {
235
+ rows.push({
236
+ label: labels.marketDetails.meta.closes,
237
+ value: dayjs(market.endDate).format("MMM D, YYYY")
238
+ });
239
+ }
240
+ if (rows.length === 1) {
241
+ rows.push({
242
+ label: labels.marketDetails.meta.markets,
243
+ value: `${market.venueMarkets.length}`
244
+ });
245
+ }
246
+ return rows;
247
+ };
248
+ var buildMarketDetailsModel = ({
249
+ event,
250
+ marketId,
251
+ title,
252
+ image,
253
+ formatCompactCurrency,
254
+ labels
255
+ }) => {
256
+ var _a;
257
+ const market = resolveMarket(event, marketId);
258
+ if (!market)
259
+ return void 0;
260
+ const primaryVenueMarket = selectPrimaryVenueMarket(market.venueMarkets);
261
+ if (!primaryVenueMarket)
262
+ return void 0;
263
+ const resolvedTitle = resolveTileTitle(event, primaryVenueMarket, title);
264
+ const resolvedImage = resolveTileImage(event, primaryVenueMarket, image);
265
+ const resolvedVolume = typeof market.volume === "number" ? market.volume : (_a = primaryVenueMarket.volume) != null ? _a : void 0;
266
+ const subtitle = resolveSubtitle({
267
+ venueMarkets: market.venueMarkets,
268
+ volume: resolvedVolume,
269
+ formatCompactCurrency,
270
+ labels
271
+ });
272
+ const outcomeLabels = resolveDisplayOutcomeLabels(resolveOutcomeLabels(market.venueMarkets));
273
+ const probabilityByLabel = resolveAverageProbabilityByLabel(market.venueMarkets, outcomeLabels);
274
+ return {
275
+ market,
276
+ primaryVenueMarket,
277
+ title: resolvedTitle,
278
+ image: resolvedImage,
279
+ subtitle,
280
+ outcomeLabels,
281
+ probabilityByLabel
282
+ };
283
+ };
284
+
285
+ // src/events/market-details/index.tsx
286
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
287
+ var MarketDetailsLoadingState = ({
288
+ isOpened = marketDetailsDefaultIsOpened,
289
+ ariaLabel,
290
+ classNames
291
+ }) => {
292
+ const labels = useLabels();
293
+ return /* @__PURE__ */ jsx(
294
+ Skeleton,
295
+ {
296
+ view: isOpened ? "market-details-detailed" : "market-details-minified",
297
+ className: classNames == null ? void 0 : classNames.root,
298
+ ariaLabel: ariaLabel != null ? ariaLabel : labels.marketDetails.loading
299
+ }
300
+ );
301
+ };
302
+ var MarketDetailsUnavailableState = ({
303
+ ariaLabel,
304
+ classNames
305
+ }) => {
306
+ const labels = useLabels();
307
+ return /* @__PURE__ */ jsx(
308
+ Card,
309
+ {
310
+ className: cn(marketDetailsBaseCardClassName, classNames == null ? void 0 : classNames.root),
311
+ role: "status",
312
+ "aria-label": ariaLabel != null ? ariaLabel : labels.marketDetails.unavailableAria,
313
+ children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 p-5", children: [
314
+ /* @__PURE__ */ jsx(Typography, { variant: "title", children: labels.marketDetails.unavailableTitle }),
315
+ /* @__PURE__ */ jsx(Typography, { variant: "meta", children: labels.marketDetails.unavailableDescription })
316
+ ] })
317
+ }
318
+ );
319
+ };
320
+ var OrderBookRows = ({
321
+ rows,
322
+ title,
323
+ formatNumber,
324
+ formatCurrency
325
+ }) => {
326
+ const labels = useLabels();
327
+ const isAsks = title === labels.marketDetails.asks;
328
+ const priceClassName = isAsks ? "text-agg-orderbook-ask" : "text-agg-orderbook-bid";
329
+ const barClassName = isAsks ? "bg-agg-orderbook-ask/10" : "bg-agg-orderbook-bid/10";
330
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
331
+ /* @__PURE__ */ jsx(Typography, { variant: "label", className: "text-agg-xs leading-agg-4", children: title }),
332
+ rows.map((row, index) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
333
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[52px_1fr_1fr_52px] items-center gap-2 md:grid-cols-[88px_1fr_1fr_minmax(120px,220px)] md:gap-6", children: [
334
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 md:gap-3", children: [
335
+ /* @__PURE__ */ jsx(VenueLogo, { venue: row.venue, size: "xs" }),
336
+ /* @__PURE__ */ jsx(
337
+ "span",
338
+ {
339
+ className: cn(
340
+ "text-agg-xs font-agg-bold leading-agg-4 md:text-agg-sm md:leading-agg-5",
341
+ priceClassName
342
+ ),
343
+ children: formatProbabilityCents(row.price)
344
+ }
345
+ )
346
+ ] }),
347
+ /* @__PURE__ */ jsx("span", { className: "truncate text-agg-xs leading-agg-4 text-center text-agg-foreground md:text-agg-sm md:leading-agg-5", children: formatNumber(row.size) }),
348
+ /* @__PURE__ */ jsx("span", { className: "truncate text-agg-xs leading-agg-4 text-center text-agg-foreground md:text-agg-sm md:leading-agg-5", children: formatCurrency(row.total) }),
349
+ /* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx(
350
+ "div",
351
+ {
352
+ "aria-hidden": "true",
353
+ className: cn("h-2 rounded-agg-full", barClassName),
354
+ style: {
355
+ width: `${Math.max(20, Math.round(row.barScale * 100))}%`
356
+ }
357
+ }
358
+ ) })
359
+ ] }),
360
+ index < rows.length - 1 ? /* @__PURE__ */ jsx("div", { className: "h-px w-full bg-agg-separator" }) : null
361
+ ] }, row.id))
362
+ ] });
363
+ };
364
+ var getOutcomeButtonClassName = ({
365
+ enableAnimations,
366
+ isPositive,
367
+ isActive
368
+ }) => {
369
+ return cn(
370
+ "h-auto min-h-10 flex-1 rounded-agg-full border px-4 py-1.5 text-agg-base leading-agg-6 shadow-none md:flex-none md:min-w-[168px]",
371
+ getMotionClassName(enableAnimations, "transition-all duration-300"),
372
+ isPositive ? "border-agg-orderbook-bid/50 bg-agg-orderbook-bid/5 text-agg-foreground" : "border-agg-orderbook-ask/50 bg-agg-orderbook-ask/5 text-agg-foreground",
373
+ isActive && (isPositive ? "border-agg-orderbook-bid" : "border-agg-orderbook-ask")
374
+ );
375
+ };
376
+ var MarketDetailsContent = ({
377
+ event,
378
+ marketId,
379
+ title,
380
+ image,
381
+ isOpened: defaultIsOpened = marketDetailsDefaultIsOpened,
382
+ onOpenChange,
383
+ defaultTab,
384
+ defaultOutcomeLabel,
385
+ defaultTimeRange = "1M",
386
+ orderBookDepth = orderBookRowLimitDefault,
387
+ ariaLabel,
388
+ classNames,
389
+ otherContent
390
+ }) => {
391
+ const config = useSdkUiConfig();
392
+ const labels = useLabels();
393
+ const detailsContentId = useId();
394
+ const model = useMemo(() => {
395
+ return buildMarketDetailsModel({
396
+ event,
397
+ marketId,
398
+ title,
399
+ image,
400
+ formatCompactCurrency: config.formatCompactCurrency,
401
+ labels
402
+ });
403
+ }, [config.formatCompactCurrency, event, image, labels, marketId, title]);
404
+ const marketDetailsTabs = useMemo(() => {
405
+ return getMarketDetailsTabs(labels);
406
+ }, [labels]);
407
+ const [selectedTab, setSelectedTab] = useState(
408
+ () => resolveInitialTab(defaultTab)
409
+ );
410
+ const [isOpened, setIsOpened] = useState(defaultIsOpened);
411
+ useEffect(() => {
412
+ setSelectedTab(resolveInitialTab(defaultTab));
413
+ }, [defaultTab]);
414
+ const [selectedTimeRange, setSelectedTimeRange] = useState(defaultTimeRange);
415
+ useEffect(() => {
416
+ setSelectedTimeRange(defaultTimeRange);
417
+ }, [defaultTimeRange]);
418
+ const [selectedOutcomeLabel, setSelectedOutcomeLabel] = useState(
419
+ () => {
420
+ var _a;
421
+ return resolveInitialOutcomeLabel((_a = model == null ? void 0 : model.outcomeLabels) != null ? _a : [], defaultOutcomeLabel);
422
+ }
423
+ );
424
+ useEffect(() => {
425
+ var _a;
426
+ setSelectedOutcomeLabel(
427
+ resolveInitialOutcomeLabel((_a = model == null ? void 0 : model.outcomeLabels) != null ? _a : [], defaultOutcomeLabel)
428
+ );
429
+ }, [defaultOutcomeLabel, model == null ? void 0 : model.outcomeLabels]);
430
+ const headerOutcomeItems = useMemo(() => {
431
+ if (!model)
432
+ return [];
433
+ return resolveHeaderOutcomeItems(model.market.venueMarkets, selectedOutcomeLabel);
434
+ }, [model, selectedOutcomeLabel]);
435
+ const headlineProbability = useMemo(() => {
436
+ if (!model || !selectedOutcomeLabel)
437
+ return void 0;
438
+ return model.probabilityByLabel.get(selectedOutcomeLabel);
439
+ }, [model, selectedOutcomeLabel]);
440
+ const selectedOutcomesByVenue = useMemo(() => {
441
+ if (!model || !selectedOutcomeLabel)
442
+ return [];
443
+ return resolveOutcomesByVenue(model.market.venueMarkets, selectedOutcomeLabel);
444
+ }, [model, selectedOutcomeLabel]);
445
+ const timeWindow = useMemo(() => {
446
+ return getTimeWindowByRange(selectedTimeRange);
447
+ }, [selectedTimeRange]);
448
+ const priceHistoryGroups = useMemo(() => {
449
+ return buildPriceHistoryGroups(selectedOutcomesByVenue);
450
+ }, [selectedOutcomesByVenue]);
451
+ const { data: priceHistoryData, isLoading: isPriceHistoryLoading } = usePriceHistory(__spreadProps(__spreadValues({
452
+ groups: priceHistoryGroups
453
+ }, timeWindow), {
454
+ enabled: isOpened && selectedTab === "graph" && priceHistoryGroups.length > 0
455
+ }));
456
+ const orderBookInputs = useMemo(() => {
457
+ return selectedOutcomesByVenue.map(({ market, outcome }) => ({
458
+ market,
459
+ outcome,
460
+ liveUpdate: true
461
+ }));
462
+ }, [selectedOutcomesByVenue]);
463
+ const { data: orderBookData, isLoading: isOrderBookLoading } = useOrderBook({
464
+ orderbooks: orderBookInputs,
465
+ enabled: isOpened && selectedTab === "order-book" && orderBookInputs.length > 0
466
+ });
467
+ const askRows = useMemo(() => {
468
+ return resolveOrderBookRows({
469
+ data: orderBookData,
470
+ side: "asks",
471
+ depth: orderBookDepth
472
+ });
473
+ }, [orderBookData, orderBookDepth]);
474
+ const bidRows = useMemo(() => {
475
+ return resolveOrderBookRows({
476
+ data: orderBookData,
477
+ side: "bids",
478
+ depth: orderBookDepth
479
+ });
480
+ }, [orderBookData, orderBookDepth]);
481
+ const graphSeries = useMemo(() => {
482
+ if (!(priceHistoryData == null ? void 0 : priceHistoryData.length))
483
+ return [];
484
+ return priceHistoryData.map((history, index) => {
485
+ var _a;
486
+ const matchingOutcome = selectedOutcomesByVenue.find((item) => {
487
+ return item.outcome.id === history.marketId || item.outcome.externalIdentifier === history.marketId || item.market.externalIdentifier === history.marketId;
488
+ });
489
+ return {
490
+ id: `${history.venue}-${history.marketId}-${index}`,
491
+ color: resolveSeriesColor((_a = matchingOutcome == null ? void 0 : matchingOutcome.venue) != null ? _a : history.venue, index),
492
+ points: history.points.map((point) => ({
493
+ time: point.timestamp,
494
+ value: point.price * 100
495
+ }))
496
+ };
497
+ }).filter((seriesItem) => seriesItem.points.length > 0);
498
+ }, [priceHistoryData, selectedOutcomesByVenue]);
499
+ const otherRows = useMemo(() => {
500
+ if (!model)
501
+ return [];
502
+ return resolveOtherTabRows(model.market, labels);
503
+ }, [labels, model]);
504
+ const handleOutcomeKeyDown = (eventToHandle) => {
505
+ var _a;
506
+ if (eventToHandle.key !== "ArrowLeft" && eventToHandle.key !== "ArrowRight") {
507
+ return;
508
+ }
509
+ if (headerOutcomeItems.length <= 1)
510
+ return;
511
+ const activeIndex = headerOutcomeItems.findIndex((item) => {
512
+ return item.label === selectedOutcomeLabel;
513
+ });
514
+ const direction = eventToHandle.key === "ArrowRight" ? 1 : -1;
515
+ const nextIndex = activeIndex < 0 ? 0 : (activeIndex + direction + headerOutcomeItems.length) % headerOutcomeItems.length;
516
+ setSelectedOutcomeLabel((_a = headerOutcomeItems[nextIndex]) == null ? void 0 : _a.label);
517
+ };
518
+ const handleToggleExpanded = () => {
519
+ setIsOpened((prev) => !prev);
520
+ onOpenChange == null ? void 0 : onOpenChange(!isOpened);
521
+ };
522
+ if (!model) {
523
+ return /* @__PURE__ */ jsx(MarketDetailsUnavailableState, { ariaLabel, classNames });
524
+ }
525
+ return /* @__PURE__ */ jsxs(
526
+ Card,
527
+ {
528
+ className: cn(marketDetailsBaseCardClassName, classNames == null ? void 0 : classNames.root),
529
+ "aria-label": ariaLabel != null ? ariaLabel : model.title,
530
+ children: [
531
+ /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-3 px-5 py-4", isOpened && "pb-3", classNames == null ? void 0 : classNames.header), children: [
532
+ /* @__PURE__ */ jsxs(
533
+ "button",
534
+ {
535
+ type: "button",
536
+ className: "flex w-full cursor-pointer items-center justify-between gap-4 rounded-agg-2xl text-left outline-none",
537
+ "aria-expanded": isOpened,
538
+ "aria-controls": detailsContentId,
539
+ "aria-label": isOpened ? labels.marketDetails.toggleCloseDetailsAria(model.title) : labels.marketDetails.toggleOpenDetailsAria(model.title),
540
+ onClick: handleToggleExpanded,
541
+ children: [
542
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-3 md:gap-4", children: [
543
+ model.image ? /* @__PURE__ */ jsx(
544
+ "img",
545
+ {
546
+ src: model.image,
547
+ alt: "",
548
+ className: "size-12 rounded-agg-lg object-cover md:size-[60px]"
549
+ }
550
+ ) : null,
551
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col", children: [
552
+ /* @__PURE__ */ jsx(Typography, { as: "h3", variant: "title", className: "truncate text-agg-lg leading-agg-7", children: model.title }),
553
+ /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: /* @__PURE__ */ jsx(Typography, { variant: "meta", className: "truncate text-agg-sm leading-agg-5", children: model.subtitle }) })
554
+ ] })
555
+ ] }),
556
+ /* @__PURE__ */ jsx(
557
+ Typography,
558
+ {
559
+ as: "div",
560
+ variant: "value",
561
+ className: "shrink-0 text-agg-2xl font-agg-bold leading-agg-8",
562
+ children: formatProbabilityPercent(headlineProbability)
563
+ }
564
+ )
565
+ ]
566
+ }
567
+ ),
568
+ /* @__PURE__ */ jsx(
569
+ "div",
570
+ {
571
+ className: "flex gap-2",
572
+ role: "tablist",
573
+ "aria-label": labels.marketDetails.marketOutcomesAria,
574
+ tabIndex: 0,
575
+ onKeyDown: handleOutcomeKeyDown,
576
+ children: headerOutcomeItems.map((item) => {
577
+ const isPositive = item.tone === "positive";
578
+ return /* @__PURE__ */ jsx(
579
+ "button",
580
+ {
581
+ type: "button",
582
+ role: "tab",
583
+ "aria-selected": item.label === selectedOutcomeLabel,
584
+ tabIndex: item.label === selectedOutcomeLabel ? 0 : -1,
585
+ className: getOutcomeButtonClassName({
586
+ enableAnimations: config.enableAnimations,
587
+ isPositive,
588
+ isActive: item.label === selectedOutcomeLabel
589
+ }),
590
+ onClick: () => {
591
+ setSelectedOutcomeLabel(item.label);
592
+ },
593
+ children: /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-2", children: [
594
+ /* @__PURE__ */ jsx(
595
+ VenueLogo,
596
+ {
597
+ venue: isPositive ? "polymarket" : "probable",
598
+ size: "xs"
599
+ }
600
+ ),
601
+ /* @__PURE__ */ jsx(Typography, { className: "text-agg-base leading-agg-6", children: `${item.label} ${formatProbabilityCents(item.probability)}` })
602
+ ] })
603
+ },
604
+ item.label
605
+ );
606
+ })
607
+ }
608
+ )
609
+ ] }),
610
+ /* @__PURE__ */ jsx(
611
+ "div",
612
+ {
613
+ id: detailsContentId,
614
+ className: cn(
615
+ "grid overflow-hidden",
616
+ getMotionClassName(
617
+ config.enableAnimations,
618
+ "transition-all duration-500 ease-[cubic-bezier(0.4,0,0.2,1)]"
619
+ ),
620
+ isOpened ? "grid-rows-[1fr] opacity-100" : "pointer-events-none grid-rows-[0fr] opacity-0"
621
+ ),
622
+ "aria-hidden": !isOpened,
623
+ children: /* @__PURE__ */ jsxs("div", { className: "min-h-0", children: [
624
+ /* @__PURE__ */ jsx("div", { className: "h-px w-full bg-agg-separator" }),
625
+ /* @__PURE__ */ jsxs(
626
+ "div",
627
+ {
628
+ className: cn(
629
+ getMotionClassName(
630
+ config.enableAnimations,
631
+ "transition-all duration-500 ease-[cubic-bezier(0.4,0,0.2,1)]"
632
+ ),
633
+ isOpened ? cn(
634
+ "translate-y-0 opacity-100",
635
+ getMotionClassName(config.enableAnimations, "delay-100")
636
+ ) : "translate-y-5 opacity-0"
637
+ ),
638
+ children: [
639
+ /* @__PURE__ */ jsx("div", { className: cn("block", classNames == null ? void 0 : classNames.tabs), children: /* @__PURE__ */ jsx(
640
+ Tabs,
641
+ {
642
+ ariaLabel: labels.marketDetails.tabsAria,
643
+ items: marketDetailsTabs,
644
+ value: selectedTab === "other" ? "order-book" : selectedTab,
645
+ onChange: (nextValue) => setSelectedTab(nextValue),
646
+ variant: "underline",
647
+ className: "w-full px-5"
648
+ }
649
+ ) }),
650
+ /* @__PURE__ */ jsx("div", { className: "h-px w-full bg-agg-separator" }),
651
+ /* @__PURE__ */ jsxs("div", { className: cn("p-5", classNames == null ? void 0 : classNames.content), children: [
652
+ selectedTab === "order-book" ? /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-5", classNames == null ? void 0 : classNames.orderBook), children: isOrderBookLoading ? /* @__PURE__ */ jsxs(
653
+ "div",
654
+ {
655
+ className: "flex flex-col gap-2 min-h-40 items-center justify-center",
656
+ role: "status",
657
+ "aria-label": labels.marketDetails.loadingOrderbookAria,
658
+ "aria-busy": true,
659
+ children: [
660
+ /* @__PURE__ */ jsx(LoadingIcon, {}),
661
+ /* @__PURE__ */ jsx(Typography, { variant: "meta", children: labels.marketDetails.loadingOrderbookLabel })
662
+ ]
663
+ }
664
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
665
+ /* @__PURE__ */ jsx(
666
+ OrderBookRows,
667
+ {
668
+ rows: askRows,
669
+ title: labels.marketDetails.asks,
670
+ formatNumber: config.formatNumber,
671
+ formatCurrency: config.formatCurrency
672
+ }
673
+ ),
674
+ /* @__PURE__ */ jsx(
675
+ OrderBookRows,
676
+ {
677
+ rows: bidRows,
678
+ title: labels.marketDetails.bids,
679
+ formatNumber: config.formatNumber,
680
+ formatCurrency: config.formatCurrency
681
+ }
682
+ )
683
+ ] }) }) : null,
684
+ selectedTab === "graph" ? /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-5", classNames == null ? void 0 : classNames.graph), children: [
685
+ /* @__PURE__ */ jsx(
686
+ LineChart,
687
+ {
688
+ series: graphSeries,
689
+ height: 260,
690
+ isLoading: isPriceHistoryLoading,
691
+ classNames: { root: "w-full" },
692
+ showSeriesControls: selectedOutcomesByVenue.length > 0 || headerOutcomeItems.length > 0,
693
+ renderSeriesControls: () => {
694
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 md:flex-row md:items-center md:justify-between", children: [
695
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: selectedOutcomesByVenue.map((item) => {
696
+ const probability = formatProbabilityPercent(item.outcome.price);
697
+ return /* @__PURE__ */ jsxs(
698
+ "div",
699
+ {
700
+ className: "inline-flex items-center gap-2 rounded-agg-full bg-agg-secondary-hover px-4 py-2",
701
+ children: [
702
+ /* @__PURE__ */ jsx(VenueLogo, { venue: item.venue, size: "xs" }),
703
+ /* @__PURE__ */ jsx("span", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: probability })
704
+ ]
705
+ },
706
+ `${item.market.id}-${item.outcome.id}`
707
+ );
708
+ }) }),
709
+ /* @__PURE__ */ jsx(
710
+ SwitchButton,
711
+ {
712
+ ariaLabel: labels.marketDetails.outcomeSelectorAria,
713
+ className: "shrink-0",
714
+ value: selectedOutcomeLabel != null ? selectedOutcomeLabel : "",
715
+ onValueChange: (nextValue) => setSelectedOutcomeLabel(nextValue),
716
+ options: headerOutcomeItems.map((item) => ({
717
+ value: item.label,
718
+ label: `${item.label} ${formatProbabilityCents(item.probability)}`,
719
+ ariaLabel: labels.marketDetails.showOutcomeAria(item.label)
720
+ }))
721
+ }
722
+ )
723
+ ] });
724
+ }
725
+ }
726
+ ),
727
+ /* @__PURE__ */ jsxs(
728
+ "div",
729
+ {
730
+ className: cn(
731
+ "flex flex-col gap-3 text-agg-sm leading-agg-5 text-agg-muted-foreground md:flex-row md:items-center md:justify-between",
732
+ classNames == null ? void 0 : classNames.footer
733
+ ),
734
+ children: [
735
+ /* @__PURE__ */ jsx("span", { children: typeof model.market.volume === "number" ? `${config.formatCompactCurrency(model.market.volume)} ${labels.marketDetails.meta.volumeSuffix}` : labels.marketDetails.volumeUnavailable }),
736
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-3 md:gap-4", children: eventListItemDetailsTimeRanges.map((timeRange) => {
737
+ const isActive = selectedTimeRange === timeRange;
738
+ return /* @__PURE__ */ jsx(
739
+ "button",
740
+ {
741
+ type: "button",
742
+ className: cn(
743
+ "cursor-pointer text-agg-sm leading-agg-5",
744
+ isActive ? "font-agg-bold text-agg-foreground" : "font-agg-normal text-agg-muted-foreground"
745
+ ),
746
+ "aria-pressed": isActive,
747
+ onClick: () => setSelectedTimeRange(timeRange),
748
+ children: timeRange === "ALL" ? labels.eventItemDetails.allTimeRange : timeRange
749
+ },
750
+ timeRange
751
+ );
752
+ }) })
753
+ ]
754
+ }
755
+ )
756
+ ] }) : null,
757
+ selectedTab === "other" ? /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4", children: otherContent != null ? otherContent : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-3", children: otherRows.map((row) => /* @__PURE__ */ jsxs(
758
+ "div",
759
+ {
760
+ className: "flex items-center justify-between rounded-agg-xl bg-agg-secondary-hover px-4 py-3",
761
+ children: [
762
+ /* @__PURE__ */ jsx(Typography, { variant: "meta", children: row.label }),
763
+ /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-right", children: row.value })
764
+ ]
765
+ },
766
+ row.label
767
+ )) }) }) : null
768
+ ] })
769
+ ]
770
+ }
771
+ )
772
+ ] })
773
+ }
774
+ )
775
+ ]
776
+ }
777
+ );
778
+ };
779
+ var MarketDetails = (props) => {
780
+ var _a;
781
+ const [uncontrolledIsOpened, setUncontrolledIsOpened] = useState(
782
+ (_a = props.defaultIsOpened) != null ? _a : marketDetailsDefaultIsOpened
783
+ );
784
+ useEffect(() => {
785
+ if (typeof props.isOpened !== "boolean")
786
+ return;
787
+ setUncontrolledIsOpened(props.isOpened);
788
+ }, [props.isOpened]);
789
+ const resolvedIsOpened = typeof props.isOpened === "boolean" ? props.isOpened : uncontrolledIsOpened;
790
+ const handleOpenChange = (nextIsOpened) => {
791
+ var _a2;
792
+ if (typeof props.isOpened !== "boolean") {
793
+ setUncontrolledIsOpened(nextIsOpened);
794
+ }
795
+ (_a2 = props.onOpenChange) == null ? void 0 : _a2.call(props, nextIsOpened);
796
+ };
797
+ const hasEventProp = "event" in props && !!props.event;
798
+ const { event: fetchedEvent, isLoading: isFetchingEvent } = useEvent(
799
+ hasEventProp ? void 0 : props.eventId,
800
+ {
801
+ enabled: !props.isLoading && !hasEventProp && !!props.eventId
802
+ }
803
+ );
804
+ if (props.isLoading) {
805
+ return /* @__PURE__ */ jsx(
806
+ MarketDetailsLoadingState,
807
+ {
808
+ isOpened: resolvedIsOpened,
809
+ ariaLabel: props.ariaLabel,
810
+ classNames: props.classNames
811
+ }
812
+ );
813
+ }
814
+ if ("event" in props && props.event) {
815
+ return /* @__PURE__ */ jsx(
816
+ MarketDetailsContent,
817
+ __spreadProps(__spreadValues({}, props), {
818
+ isOpened: resolvedIsOpened,
819
+ onOpenChange: handleOpenChange,
820
+ event: props.event
821
+ })
822
+ );
823
+ }
824
+ if (isFetchingEvent) {
825
+ return /* @__PURE__ */ jsx(
826
+ MarketDetailsLoadingState,
827
+ {
828
+ isOpened: resolvedIsOpened,
829
+ ariaLabel: props.ariaLabel,
830
+ classNames: props.classNames
831
+ }
832
+ );
833
+ }
834
+ if (!fetchedEvent) {
835
+ return /* @__PURE__ */ jsx(MarketDetailsUnavailableState, { ariaLabel: props.ariaLabel, classNames: props.classNames });
836
+ }
837
+ return /* @__PURE__ */ jsx(
838
+ MarketDetailsContent,
839
+ __spreadProps(__spreadValues({}, props), {
840
+ isOpened: resolvedIsOpened,
841
+ onOpenChange: handleOpenChange,
842
+ event: fetchedEvent
843
+ })
844
+ );
845
+ };
846
+ MarketDetails.displayName = "MarketDetails";
847
+
848
+ export {
849
+ MarketDetails
850
+ };