@agg-market/ui 9.0.0 → 11.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.
- package/dist/{chunk-6CRY27SQ.mjs → chunk-2KGE5AJQ.mjs} +670 -659
- package/dist/{chunk-N7U7QCSB.mjs → chunk-5FSWOXEG.mjs} +807 -358
- package/dist/{chunk-HJ4UPYM7.mjs → chunk-HMUMJUIL.mjs} +539 -405
- package/dist/{chunk-3G7C6WEC.mjs → chunk-IUJXJEDQ.mjs} +1340 -664
- package/dist/{chunk-3U4VHAP6.mjs → chunk-UONHGMFI.mjs} +12 -4
- package/dist/events.js +1267 -1035
- package/dist/events.mjs +6 -4
- package/dist/index.js +4443 -3205
- package/dist/index.mjs +18 -7
- package/dist/modals.js +1207 -379
- package/dist/modals.mjs +4 -2
- package/dist/pages.js +2942 -1689
- package/dist/pages.mjs +4 -4
- package/dist/primitives.js +1317 -657
- package/dist/primitives.mjs +5 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +1 -1
- package/dist/trading.js +274 -190
- package/dist/trading.mjs +2 -2
- package/dist/types/events/item/event-list-item.types.d.mts +1 -2
- package/dist/types/events/item/event-list-item.types.d.ts +1 -2
- package/dist/types/events/item-details/event-list-item-details.types.d.mts +1 -4
- package/dist/types/events/item-details/event-list-item-details.types.d.ts +1 -4
- package/dist/types/events/item-details/event-list-item-details.utils.d.mts +42 -3
- package/dist/types/events/item-details/event-list-item-details.utils.d.ts +42 -3
- package/dist/types/events/list/event-list.types.d.mts +3 -2
- package/dist/types/events/list/event-list.types.d.ts +3 -2
- package/dist/types/events/list/index.d.mts +1 -1
- package/dist/types/events/list/index.d.ts +1 -1
- package/dist/types/events/market-details/index.d.mts +7 -3
- package/dist/types/events/market-details/index.d.ts +7 -3
- package/dist/types/events/market-details/market-details.types.d.mts +30 -10
- package/dist/types/events/market-details/market-details.types.d.ts +30 -10
- package/dist/types/events/market-details/market-details.utils.d.mts +15 -10
- package/dist/types/events/market-details/market-details.utils.d.ts +15 -10
- package/dist/types/modals/index.d.mts +1 -0
- package/dist/types/modals/index.d.ts +1 -0
- package/dist/types/pages/event-market/event-market.types.d.mts +2 -0
- package/dist/types/pages/event-market/event-market.types.d.ts +2 -0
- package/dist/types/pages/home/home.constants.d.mts +1 -3
- package/dist/types/pages/home/home.constants.d.ts +1 -3
- package/dist/types/pages/home/home.types.d.mts +0 -2
- package/dist/types/pages/home/home.types.d.ts +0 -2
- package/dist/types/pages/home/home.utils.d.mts +4 -0
- package/dist/types/pages/home/home.utils.d.ts +4 -0
- package/dist/types/pages/home/index.d.mts +1 -1
- package/dist/types/pages/home/index.d.ts +1 -1
- package/dist/types/primitives/agg-logo/index.d.mts +6 -0
- package/dist/types/primitives/agg-logo/index.d.ts +6 -0
- package/dist/types/primitives/chart/index.d.mts +9 -1
- package/dist/types/primitives/chart/index.d.ts +9 -1
- package/dist/types/primitives/header/agg-logo.d.mts +2 -0
- package/dist/types/primitives/header/agg-logo.d.ts +2 -0
- package/dist/types/primitives/header/header.constants.d.mts +3 -0
- package/dist/types/primitives/header/header.constants.d.ts +3 -0
- package/dist/types/primitives/header/header.types.d.mts +28 -0
- package/dist/types/primitives/header/header.types.d.ts +28 -0
- package/dist/types/primitives/header/index.d.mts +7 -0
- package/dist/types/primitives/header/index.d.ts +7 -0
- package/dist/types/primitives/index.d.mts +2 -0
- package/dist/types/primitives/index.d.ts +2 -0
- package/dist/types/primitives/search/index.d.mts +1 -1
- package/dist/types/primitives/search/index.d.ts +1 -1
- package/dist/types/primitives/search/search.types.d.mts +9 -59
- package/dist/types/primitives/search/search.types.d.ts +9 -59
- package/dist/types/primitives/search/search.utils.d.mts +4 -0
- package/dist/types/primitives/search/search.utils.d.ts +4 -0
- package/dist/types/primitives/skeleton/skeleton.types.d.mts +1 -0
- package/dist/types/primitives/skeleton/skeleton.types.d.ts +1 -0
- package/dist/types/primitives/skeleton/views/search-skeleton-view.d.mts +5 -0
- package/dist/types/primitives/skeleton/views/search-skeleton-view.d.ts +5 -0
- package/dist/types/primitives/venue-logo/index.d.mts +1 -1
- package/dist/types/primitives/venue-logo/index.d.ts +1 -1
- package/dist/types/trading/types.d.mts +2 -2
- package/dist/types/trading/types.d.ts +2 -2
- package/package.json +4 -4
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EventList,
|
|
3
|
+
EventListItem,
|
|
3
4
|
EventListItemDetails,
|
|
4
5
|
MarketDetails,
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
MarketDetailsList,
|
|
7
|
+
getDefaultEventListTabs,
|
|
8
|
+
isErrorWithStatus,
|
|
9
|
+
resolveTabVenus
|
|
10
|
+
} from "./chunk-2KGE5AJQ.mjs";
|
|
7
11
|
import {
|
|
8
12
|
PlaceOrder,
|
|
9
13
|
Settlement
|
|
10
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-UONHGMFI.mjs";
|
|
11
15
|
import {
|
|
12
16
|
Button,
|
|
13
17
|
Card,
|
|
18
|
+
Header,
|
|
14
19
|
Icon,
|
|
20
|
+
Modal,
|
|
15
21
|
RemoteImage,
|
|
22
|
+
Skeleton,
|
|
16
23
|
StateMessage,
|
|
17
24
|
Tabs,
|
|
18
25
|
Typography,
|
|
@@ -20,106 +27,333 @@ import {
|
|
|
20
27
|
__spreadProps,
|
|
21
28
|
__spreadValues,
|
|
22
29
|
cn
|
|
23
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-IUJXJEDQ.mjs";
|
|
24
31
|
|
|
25
32
|
// src/pages/home/index.tsx
|
|
26
|
-
import { useEffect, useMemo, useState } from "react";
|
|
27
|
-
import { useCategories, useLabels } from "@agg-market/hooks";
|
|
33
|
+
import { useEffect as useEffect2, useMemo as useMemo2, useRef, useState as useState2 } from "react";
|
|
34
|
+
import { useCategories, useLabels as useLabels2, useSdkUiConfig, useVenueEvents } from "@agg-market/hooks";
|
|
28
35
|
|
|
29
|
-
// src/pages/
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
36
|
+
// src/pages/event-market/index.tsx
|
|
37
|
+
import { useMemo, useState } from "react";
|
|
38
|
+
import { useVenueEvent, useLabels } from "@agg-market/hooks";
|
|
39
|
+
import dayjs from "dayjs";
|
|
40
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
41
|
+
var resolveHeroMarketId = (event, heroMarketId) => {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
if (!((_a = event == null ? void 0 : event.venueMarkets) == null ? void 0 : _a.length))
|
|
44
|
+
return void 0;
|
|
45
|
+
if (heroMarketId) {
|
|
46
|
+
const matchingHeroMarket = event.venueMarkets.find(
|
|
47
|
+
(market) => market.id === heroMarketId
|
|
48
|
+
);
|
|
49
|
+
if (matchingHeroMarket)
|
|
50
|
+
return matchingHeroMarket.id;
|
|
51
|
+
}
|
|
52
|
+
return (_b = event.venueMarkets[0]) == null ? void 0 : _b.id;
|
|
53
|
+
};
|
|
54
|
+
var buildHeroEvent = (event, heroMarketId) => {
|
|
55
|
+
if (!heroMarketId)
|
|
56
|
+
return void 0;
|
|
57
|
+
const heroMarket = event.venueMarkets.find((market) => market.id === heroMarketId);
|
|
58
|
+
if (!heroMarket)
|
|
59
|
+
return void 0;
|
|
60
|
+
return __spreadProps(__spreadValues({}, event), {
|
|
61
|
+
venueMarkets: [heroMarket]
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
var EventMarketPageMobileTrade = ({
|
|
65
|
+
placeOrder,
|
|
66
|
+
classNames
|
|
67
|
+
}) => {
|
|
68
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
69
|
+
const handleOpen = () => {
|
|
70
|
+
setIsOpen(true);
|
|
71
|
+
};
|
|
72
|
+
const handleOpenChange = (nextOpen) => {
|
|
73
|
+
setIsOpen(nextOpen);
|
|
74
|
+
};
|
|
75
|
+
const handleClose = () => {
|
|
76
|
+
setIsOpen(false);
|
|
77
|
+
};
|
|
78
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
79
|
+
/* @__PURE__ */ jsx(
|
|
80
|
+
"div",
|
|
81
|
+
{
|
|
82
|
+
className: cn(
|
|
83
|
+
"fixed inset-x-0 bottom-0 z-20 flex justify-end p-4 lg:hidden",
|
|
84
|
+
classNames == null ? void 0 : classNames.mobileTradeCta
|
|
85
|
+
),
|
|
86
|
+
children: /* @__PURE__ */ jsx(
|
|
87
|
+
Button,
|
|
88
|
+
{
|
|
89
|
+
size: "large",
|
|
90
|
+
className: "min-w-[168px] shadow-agg-modal",
|
|
91
|
+
"aria-label": placeOrder.actionLabel,
|
|
92
|
+
"data-testid": "event-market-page-mobile-trade-cta",
|
|
93
|
+
onClick: (e) => {
|
|
94
|
+
e.stopPropagation();
|
|
95
|
+
e.preventDefault();
|
|
96
|
+
handleOpen();
|
|
97
|
+
},
|
|
98
|
+
children: placeOrder.actionLabel
|
|
99
|
+
}
|
|
100
|
+
)
|
|
101
|
+
}
|
|
102
|
+
),
|
|
103
|
+
/* @__PURE__ */ jsx(Modal, { open: isOpen, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsx(
|
|
104
|
+
Modal.Container,
|
|
105
|
+
{
|
|
106
|
+
"aria-label": placeOrder.title,
|
|
107
|
+
maxWidth: "420px",
|
|
108
|
+
classNames: {
|
|
109
|
+
content: "items-end p-0 sm:items-center sm:p-4",
|
|
110
|
+
container: cn(
|
|
111
|
+
"w-full max-w-[420px] border-0 bg-transparent shadow-none",
|
|
112
|
+
classNames == null ? void 0 : classNames.mobileTradeModal
|
|
113
|
+
)
|
|
114
|
+
},
|
|
115
|
+
children: /* @__PURE__ */ jsx(
|
|
116
|
+
PlaceOrder,
|
|
117
|
+
__spreadProps(__spreadValues({}, placeOrder), {
|
|
118
|
+
isDismissible: true,
|
|
119
|
+
className: cn("w-full rounded-t-agg-2xl sm:rounded-agg-xl", classNames == null ? void 0 : classNames.mobileTrade),
|
|
120
|
+
onClose: handleClose
|
|
121
|
+
})
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
) })
|
|
125
|
+
] });
|
|
126
|
+
};
|
|
127
|
+
var EventMarketPageUnavailableState = ({
|
|
128
|
+
ariaLabel
|
|
129
|
+
}) => {
|
|
130
|
+
const labels = useLabels();
|
|
131
|
+
return /* @__PURE__ */ jsx(
|
|
132
|
+
Card,
|
|
50
133
|
{
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
134
|
+
className: "rounded-agg-xl border border-agg-separator bg-agg-secondary p-6 shadow-none hover:shadow-none",
|
|
135
|
+
role: "status",
|
|
136
|
+
"aria-label": ariaLabel != null ? ariaLabel : labels.eventMarketPage.unavailableAria,
|
|
137
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
138
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body-large-strong", children: labels.eventMarketPage.unavailableTitle }),
|
|
139
|
+
/* @__PURE__ */ jsx(Typography, { variant: "label", className: "text-agg-muted-foreground", children: labels.eventMarketPage.unavailableDescription })
|
|
140
|
+
] })
|
|
141
|
+
}
|
|
142
|
+
);
|
|
143
|
+
};
|
|
144
|
+
var EventMarketPageNotFoundState = ({
|
|
145
|
+
ariaLabel
|
|
146
|
+
}) => {
|
|
147
|
+
const labels = useLabels();
|
|
148
|
+
return /* @__PURE__ */ jsx(Card, { className: "overflow-hidden rounded-agg-xl border border-agg-separator bg-agg-secondary p-0 shadow-none hover:shadow-none", children: /* @__PURE__ */ jsx(
|
|
149
|
+
StateMessage,
|
|
57
150
|
{
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
151
|
+
ariaLabel: ariaLabel != null ? ariaLabel : labels.eventItemDetails.notFoundAria,
|
|
152
|
+
title: labels.eventItemDetails.notFoundTitle,
|
|
153
|
+
description: labels.eventItemDetails.notFoundDescription,
|
|
154
|
+
className: "min-h-[320px] md:min-h-[360px]"
|
|
155
|
+
}
|
|
156
|
+
) });
|
|
157
|
+
};
|
|
158
|
+
var EventMarketPageLoadingState = ({
|
|
159
|
+
placeOrder,
|
|
160
|
+
settlement,
|
|
161
|
+
classNames
|
|
162
|
+
}) => {
|
|
163
|
+
const labels = useLabels();
|
|
164
|
+
const fallbackSettlement = settlement != null ? settlement : {
|
|
165
|
+
sectionLabel: labels.trading.settlementSection,
|
|
166
|
+
question: labels.eventMarketPage.loadingSettlementQuestion,
|
|
167
|
+
differencesTitle: labels.eventMarketPage.loadingSettlementDifferencesTitle,
|
|
168
|
+
differences: [labels.eventMarketPage.loadingSettlementPlaceholder],
|
|
169
|
+
venues: [
|
|
170
|
+
{
|
|
171
|
+
venue: "polymarket",
|
|
172
|
+
description: labels.eventMarketPage.loadingSettlementPlaceholder
|
|
173
|
+
}
|
|
174
|
+
]
|
|
175
|
+
};
|
|
176
|
+
return /* @__PURE__ */ jsxs("section", { className: cn("w-full pb-24 lg:pb-0", classNames == null ? void 0 : classNames.root), children: [
|
|
177
|
+
/* @__PURE__ */ jsxs(
|
|
178
|
+
"div",
|
|
179
|
+
{
|
|
180
|
+
className: cn(
|
|
181
|
+
"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",
|
|
182
|
+
classNames == null ? void 0 : classNames.content
|
|
183
|
+
),
|
|
184
|
+
children: [
|
|
185
|
+
/* @__PURE__ */ jsxs("div", { className: cn("flex min-w-0 flex-1 flex-col gap-6", classNames == null ? void 0 : classNames.main), children: [
|
|
186
|
+
/* @__PURE__ */ jsx(
|
|
187
|
+
EventListItemDetails,
|
|
188
|
+
{
|
|
189
|
+
isLoading: true,
|
|
190
|
+
classNames: {
|
|
191
|
+
root: classNames == null ? void 0 : classNames.hero
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
),
|
|
195
|
+
/* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-3", classNames == null ? void 0 : classNames.markets), children: [
|
|
196
|
+
/* @__PURE__ */ jsx(MarketDetails, { isLoading: true, isOpened: true, classNames: { root: "w-full" } }),
|
|
197
|
+
/* @__PURE__ */ jsx(MarketDetails, { isLoading: true, isOpened: false, classNames: { root: "w-full" } }),
|
|
198
|
+
/* @__PURE__ */ jsx(MarketDetails, { isLoading: true, isOpened: false, classNames: { root: "w-full" } })
|
|
199
|
+
] }),
|
|
200
|
+
/* @__PURE__ */ jsx("div", { className: "md:hidden", children: /* @__PURE__ */ jsx(Settlement, __spreadProps(__spreadValues({}, fallbackSettlement), { isLoading: true, className: classNames == null ? void 0 : classNames.settlement })) }),
|
|
201
|
+
/* @__PURE__ */ jsx("div", { className: "hidden md:block", children: /* @__PURE__ */ jsx(Settlement, __spreadProps(__spreadValues({}, fallbackSettlement), { isLoading: true, className: classNames == null ? void 0 : classNames.settlement })) })
|
|
202
|
+
] }),
|
|
203
|
+
placeOrder ? /* @__PURE__ */ jsx(
|
|
204
|
+
"aside",
|
|
205
|
+
{
|
|
206
|
+
className: cn(
|
|
207
|
+
"hidden w-full shrink-0 lg:sticky lg:top-6 lg:block lg:w-[343px]",
|
|
208
|
+
classNames == null ? void 0 : classNames.sidebar
|
|
209
|
+
),
|
|
210
|
+
children: /* @__PURE__ */ jsx(PlaceOrder, __spreadProps(__spreadValues({}, placeOrder), { isLoading: true, className: classNames == null ? void 0 : classNames.trade }))
|
|
211
|
+
}
|
|
212
|
+
) : null
|
|
213
|
+
]
|
|
214
|
+
}
|
|
215
|
+
),
|
|
216
|
+
placeOrder ? /* @__PURE__ */ jsx(
|
|
217
|
+
"div",
|
|
218
|
+
{
|
|
219
|
+
className: cn(
|
|
220
|
+
"fixed inset-x-0 bottom-0 z-20 flex justify-end p-4 lg:hidden",
|
|
221
|
+
classNames == null ? void 0 : classNames.mobileTradeCta
|
|
222
|
+
),
|
|
223
|
+
children: /* @__PURE__ */ jsx(
|
|
224
|
+
Button,
|
|
225
|
+
{
|
|
226
|
+
size: "large",
|
|
227
|
+
className: "min-w-[168px] shadow-agg-modal",
|
|
228
|
+
"aria-label": placeOrder.actionLabel,
|
|
229
|
+
disabled: true,
|
|
230
|
+
children: placeOrder.actionLabel
|
|
231
|
+
}
|
|
232
|
+
)
|
|
233
|
+
}
|
|
234
|
+
) : null
|
|
235
|
+
] });
|
|
236
|
+
};
|
|
237
|
+
var EventMarketPageContent = ({
|
|
238
|
+
event,
|
|
239
|
+
heroMarketId,
|
|
240
|
+
defaultExpandedMarketId,
|
|
241
|
+
expandedMarketId,
|
|
242
|
+
heroDefaultTimeRange,
|
|
243
|
+
placeOrder,
|
|
244
|
+
settlement,
|
|
245
|
+
classNames,
|
|
246
|
+
ariaLabel
|
|
247
|
+
}) => {
|
|
248
|
+
const resolvedHeroMarketId = useMemo(() => {
|
|
249
|
+
return resolveHeroMarketId(event, heroMarketId);
|
|
250
|
+
}, [event, heroMarketId]);
|
|
251
|
+
const heroEvent = useMemo(() => {
|
|
252
|
+
return buildHeroEvent(event, resolvedHeroMarketId);
|
|
253
|
+
}, [event, resolvedHeroMarketId]);
|
|
254
|
+
if (!heroEvent || !event.venueMarkets.length) {
|
|
255
|
+
return /* @__PURE__ */ jsx(EventMarketPageUnavailableState, { ariaLabel });
|
|
256
|
+
}
|
|
257
|
+
return /* @__PURE__ */ jsxs(
|
|
258
|
+
"section",
|
|
63
259
|
{
|
|
64
|
-
|
|
65
|
-
label:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
260
|
+
className: cn("w-full pb-24 lg:pb-0", classNames == null ? void 0 : classNames.root),
|
|
261
|
+
"aria-label": ariaLabel != null ? ariaLabel : event.title,
|
|
262
|
+
children: [
|
|
263
|
+
/* @__PURE__ */ jsxs(
|
|
264
|
+
"div",
|
|
265
|
+
{
|
|
266
|
+
className: cn(
|
|
267
|
+
"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",
|
|
268
|
+
classNames == null ? void 0 : classNames.content
|
|
269
|
+
),
|
|
270
|
+
children: [
|
|
271
|
+
/* @__PURE__ */ jsxs("div", { className: cn("flex min-w-0 flex-1 flex-col gap-6", classNames == null ? void 0 : classNames.main), children: [
|
|
272
|
+
/* @__PURE__ */ jsx(
|
|
273
|
+
EventListItemDetails,
|
|
274
|
+
{
|
|
275
|
+
event: heroEvent,
|
|
276
|
+
defaultTimeRange: heroDefaultTimeRange,
|
|
277
|
+
classNames: {
|
|
278
|
+
root: classNames == null ? void 0 : classNames.hero
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
),
|
|
282
|
+
/* @__PURE__ */ jsx(MarketDetailsList, { eventId: event.id }),
|
|
283
|
+
settlement ? /* @__PURE__ */ jsx("div", { className: "md:hidden", children: /* @__PURE__ */ jsx(Settlement, __spreadProps(__spreadValues({}, settlement), { className: classNames == null ? void 0 : classNames.settlement })) }) : null,
|
|
284
|
+
settlement ? /* @__PURE__ */ jsx("div", { className: "hidden md:block", children: /* @__PURE__ */ jsx(Settlement, __spreadProps(__spreadValues({}, settlement), { className: classNames == null ? void 0 : classNames.settlement })) }) : null
|
|
285
|
+
] }),
|
|
286
|
+
placeOrder ? /* @__PURE__ */ jsx(
|
|
287
|
+
"aside",
|
|
288
|
+
{
|
|
289
|
+
className: cn("hidden w-full lg:block lg:max-w-[360px]", classNames == null ? void 0 : classNames.sidebar),
|
|
290
|
+
"data-testid": "event-market-page-desktop-trade",
|
|
291
|
+
children: /* @__PURE__ */ jsx(PlaceOrder, __spreadProps(__spreadValues({}, placeOrder), { className: classNames == null ? void 0 : classNames.trade }))
|
|
292
|
+
}
|
|
293
|
+
) : null
|
|
294
|
+
]
|
|
295
|
+
}
|
|
296
|
+
),
|
|
297
|
+
placeOrder ? /* @__PURE__ */ jsx(EventMarketPageMobileTrade, { placeOrder, classNames }) : null
|
|
298
|
+
]
|
|
299
|
+
}
|
|
300
|
+
);
|
|
301
|
+
};
|
|
302
|
+
var EventMarketPage = (props) => {
|
|
303
|
+
var _a;
|
|
304
|
+
const hasEventProp = "event" in props && !!props.event;
|
|
305
|
+
const {
|
|
306
|
+
event: fetchedEvent,
|
|
307
|
+
error: eventError,
|
|
308
|
+
isLoading: isFetchingEvent
|
|
309
|
+
} = useVenueEvent({
|
|
310
|
+
eventId: hasEventProp ? "" : (_a = props.eventId) != null ? _a : "",
|
|
311
|
+
enabled: !props.isLoading && !hasEventProp && !!props.eventId
|
|
312
|
+
});
|
|
313
|
+
if (props.isLoading) {
|
|
314
|
+
return /* @__PURE__ */ jsx(EventMarketPageLoadingState, { placeOrder: props.placeOrder, settlement: props.settlement });
|
|
315
|
+
}
|
|
316
|
+
if ("event" in props && props.event) {
|
|
317
|
+
return /* @__PURE__ */ jsx(EventMarketPageContent, __spreadProps(__spreadValues({}, props), { event: props.event }));
|
|
318
|
+
}
|
|
319
|
+
if (isFetchingEvent) {
|
|
320
|
+
return /* @__PURE__ */ jsx(
|
|
321
|
+
EventMarketPageLoadingState,
|
|
322
|
+
{
|
|
323
|
+
placeOrder: props.placeOrder,
|
|
324
|
+
settlement: props.settlement,
|
|
325
|
+
classNames: props.classNames
|
|
326
|
+
}
|
|
327
|
+
);
|
|
328
|
+
}
|
|
329
|
+
if (!fetchedEvent) {
|
|
330
|
+
if (isErrorWithStatus(eventError, 404)) {
|
|
331
|
+
return /* @__PURE__ */ jsx(EventMarketPageNotFoundState, { ariaLabel: props.ariaLabel });
|
|
332
|
+
}
|
|
333
|
+
return /* @__PURE__ */ jsx(EventMarketPageUnavailableState, { ariaLabel: props.ariaLabel });
|
|
334
|
+
}
|
|
335
|
+
return /* @__PURE__ */ jsx(EventMarketPageContent, __spreadProps(__spreadValues({}, props), { event: fetchedEvent }));
|
|
77
336
|
};
|
|
337
|
+
EventMarketPage.displayName = "EventMarketPage";
|
|
338
|
+
|
|
339
|
+
// src/pages/home/home.constants.ts
|
|
340
|
+
var ALL_CATEGORIES_TAB_VALUE = "trending";
|
|
341
|
+
var DEFAULT_CATEGORIES_LIMIT = 100;
|
|
342
|
+
var DEFAULT_ALL_CATEGORY_TAB_LABEL = "Trending";
|
|
78
343
|
var getDefaultEventSectionItems = (labels) => {
|
|
79
344
|
return [
|
|
80
345
|
{
|
|
81
346
|
id: "top-markets",
|
|
82
347
|
title: labels.home.topMarkets,
|
|
83
348
|
maxItemsPerRow: 3,
|
|
84
|
-
limit:
|
|
85
|
-
maxVisibleItems:
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
id: "new-markets",
|
|
89
|
-
title: labels.home.newMarkets,
|
|
90
|
-
maxItemsPerRow: 3,
|
|
91
|
-
limit: 3,
|
|
92
|
-
maxVisibleItems: 3
|
|
349
|
+
limit: 9,
|
|
350
|
+
maxVisibleItems: 9
|
|
93
351
|
}
|
|
94
352
|
];
|
|
95
353
|
};
|
|
96
354
|
|
|
97
355
|
// 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
356
|
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
357
|
const seenCategoryIds = /* @__PURE__ */ new Set();
|
|
124
358
|
const tabs = [
|
|
125
359
|
{
|
|
@@ -128,13 +362,13 @@ var resolveCategoryTabs = (categories, allCategoryTabLabel) => {
|
|
|
128
362
|
iconName: "arrow-trend-up"
|
|
129
363
|
}
|
|
130
364
|
];
|
|
131
|
-
for (const category of
|
|
365
|
+
for (const category of categories) {
|
|
132
366
|
if (seenCategoryIds.has(category.id))
|
|
133
367
|
continue;
|
|
134
368
|
seenCategoryIds.add(category.id);
|
|
135
369
|
tabs.push({
|
|
136
370
|
value: category.id,
|
|
137
|
-
label:
|
|
371
|
+
label: category.name.trim().toLowerCase(),
|
|
138
372
|
categoryIds: [category.id]
|
|
139
373
|
});
|
|
140
374
|
}
|
|
@@ -147,44 +381,211 @@ var resolveInitialTabValue = (tabs, defaultActiveTab) => {
|
|
|
147
381
|
if (hasDefaultTab)
|
|
148
382
|
return defaultActiveTab;
|
|
149
383
|
}
|
|
150
|
-
return (_b = (_a = tabs[0]) == null ? void 0 : _a.value) != null ? _b :
|
|
384
|
+
return (_b = (_a = tabs[0]) == null ? void 0 : _a.value) != null ? _b : ALL_CATEGORIES_TAB_VALUE;
|
|
151
385
|
};
|
|
152
386
|
|
|
153
387
|
// src/pages/home/index.tsx
|
|
154
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
388
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
389
|
+
var MIN_SEARCH_LENGTH = 3;
|
|
390
|
+
var SEARCH_DEBOUNCE_MS = 300;
|
|
391
|
+
var SEARCH_RESULTS_LIMIT = 9;
|
|
392
|
+
var HomeSearchResults = ({
|
|
393
|
+
activeTabValue,
|
|
394
|
+
onTabChange,
|
|
395
|
+
query,
|
|
396
|
+
tabs,
|
|
397
|
+
resolvedTabs,
|
|
398
|
+
className
|
|
399
|
+
}) => {
|
|
400
|
+
const labels = useLabels2();
|
|
401
|
+
const { search: searchConfig } = useSdkUiConfig();
|
|
402
|
+
const [activeVenueTabValue, setActiveVenueTabValue] = useState2("matched");
|
|
403
|
+
const eventListTabs = useMemo2(() => {
|
|
404
|
+
return getDefaultEventListTabs(labels);
|
|
405
|
+
}, [labels]);
|
|
406
|
+
const activeVenueTab = useMemo2(() => {
|
|
407
|
+
return eventListTabs.find((tab) => tab.value === activeVenueTabValue);
|
|
408
|
+
}, [activeVenueTabValue, eventListTabs]);
|
|
409
|
+
const activeCategoryTab = useMemo2(() => {
|
|
410
|
+
return resolvedTabs.find((tab) => tab.value === activeTabValue);
|
|
411
|
+
}, [activeTabValue, resolvedTabs]);
|
|
412
|
+
const { events, isLoading, isError, fetchNextPage, hasNextPage, isFetchingNextPage } = useVenueEvents({
|
|
413
|
+
queryKeyScope: "home-search-results",
|
|
414
|
+
search: query,
|
|
415
|
+
categoryIds: activeTabValue === ALL_CATEGORIES_TAB_VALUE ? void 0 : activeCategoryTab == null ? void 0 : activeCategoryTab.categoryIds,
|
|
416
|
+
venues: resolveTabVenus(activeVenueTab),
|
|
417
|
+
limit: SEARCH_RESULTS_LIMIT
|
|
418
|
+
});
|
|
419
|
+
const loadMoreRef = useRef(null);
|
|
420
|
+
useEffect2(() => {
|
|
421
|
+
if (!hasNextPage)
|
|
422
|
+
return;
|
|
423
|
+
const target = loadMoreRef.current;
|
|
424
|
+
if (!target)
|
|
425
|
+
return;
|
|
426
|
+
const observer = new IntersectionObserver(
|
|
427
|
+
(entries) => {
|
|
428
|
+
const entry = entries[0];
|
|
429
|
+
if (!(entry == null ? void 0 : entry.isIntersecting))
|
|
430
|
+
return;
|
|
431
|
+
if (isLoading || isFetchingNextPage || !hasNextPage)
|
|
432
|
+
return;
|
|
433
|
+
void fetchNextPage();
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
rootMargin: "320px 0px"
|
|
437
|
+
}
|
|
438
|
+
);
|
|
439
|
+
observer.observe(target);
|
|
440
|
+
return () => {
|
|
441
|
+
observer.disconnect();
|
|
442
|
+
};
|
|
443
|
+
}, [fetchNextPage, hasNextPage, isFetchingNextPage, isLoading]);
|
|
444
|
+
const resultsTitle = labels.search.resultsSummary(
|
|
445
|
+
hasNextPage ? `${events.length}+` : `${events.length}`,
|
|
446
|
+
query
|
|
447
|
+
);
|
|
448
|
+
const searchResultTabs = useMemo2(() => {
|
|
449
|
+
return eventListTabs.map((tab) => {
|
|
450
|
+
const isActive = tab.value === activeVenueTabValue;
|
|
451
|
+
return {
|
|
452
|
+
value: tab.value,
|
|
453
|
+
label: tab.label,
|
|
454
|
+
icon: tab.iconName ? /* @__PURE__ */ jsx2(
|
|
455
|
+
Icon,
|
|
456
|
+
{
|
|
457
|
+
name: tab.iconName,
|
|
458
|
+
size: "small",
|
|
459
|
+
color: isActive ? "var(--agg-color-primary)" : "var(--agg-color-foreground)"
|
|
460
|
+
}
|
|
461
|
+
) : tab.venueLogo ? /* @__PURE__ */ jsx2(
|
|
462
|
+
VenueLogo,
|
|
463
|
+
{
|
|
464
|
+
venue: tab.venueLogo,
|
|
465
|
+
size: "small",
|
|
466
|
+
className: cn(isActive ? "text-agg-primary" : "text-agg-foreground")
|
|
467
|
+
}
|
|
468
|
+
) : void 0,
|
|
469
|
+
disabled: tab.disabled
|
|
470
|
+
};
|
|
471
|
+
});
|
|
472
|
+
}, [activeVenueTabValue, eventListTabs]);
|
|
473
|
+
const loadingPlaceholderCount = isFetchingNextPage ? 3 : 0;
|
|
474
|
+
if (isLoading) {
|
|
475
|
+
return /* @__PURE__ */ jsx2(Skeleton, { view: "event-list", ariaLabel: labels.search.loadingResults, className });
|
|
476
|
+
}
|
|
477
|
+
return /* @__PURE__ */ jsxs2("section", { className: cn("flex w-full flex-col gap-5", className), children: [
|
|
478
|
+
/* @__PURE__ */ jsx2("header", { className: "flex flex-col gap-5", children: /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between", children: [
|
|
479
|
+
/* @__PURE__ */ jsx2(Typography, { as: "h2", variant: "title", className: "min-w-0", children: resultsTitle }),
|
|
480
|
+
/* @__PURE__ */ jsx2(
|
|
481
|
+
Tabs,
|
|
482
|
+
{
|
|
483
|
+
ariaLabel: labels.eventList.tabsAria(resultsTitle),
|
|
484
|
+
items: searchResultTabs,
|
|
485
|
+
value: activeVenueTabValue,
|
|
486
|
+
onChange: setActiveVenueTabValue
|
|
487
|
+
}
|
|
488
|
+
)
|
|
489
|
+
] }) }),
|
|
490
|
+
/* @__PURE__ */ jsxs2("div", { className: "grid grid-cols-1 gap-5 md:grid-cols-3", children: [
|
|
491
|
+
events.map((event) => /* @__PURE__ */ jsx2(
|
|
492
|
+
EventListItem,
|
|
493
|
+
{
|
|
494
|
+
event,
|
|
495
|
+
classNames: {
|
|
496
|
+
root: "w-full min-w-0 max-w-none"
|
|
497
|
+
},
|
|
498
|
+
onClick: (selectedEvent) => {
|
|
499
|
+
if (!selectedEvent)
|
|
500
|
+
return;
|
|
501
|
+
searchConfig.onSelect(selectedEvent);
|
|
502
|
+
}
|
|
503
|
+
},
|
|
504
|
+
event.id
|
|
505
|
+
)),
|
|
506
|
+
Array.from({ length: loadingPlaceholderCount }).map((_, index) => /* @__PURE__ */ jsx2(
|
|
507
|
+
EventListItem,
|
|
508
|
+
{
|
|
509
|
+
isLoading: true,
|
|
510
|
+
classNames: {
|
|
511
|
+
root: "w-full min-w-0 max-w-none"
|
|
512
|
+
}
|
|
513
|
+
},
|
|
514
|
+
`search-results-loading-${index}`
|
|
515
|
+
)),
|
|
516
|
+
!isError && events.length === 0 ? /* @__PURE__ */ jsx2(Card, { className: "col-span-full overflow-hidden shadow-none hover:shadow-none p-0! border-none! bg-transparent!", children: /* @__PURE__ */ jsx2(
|
|
517
|
+
StateMessage,
|
|
518
|
+
{
|
|
519
|
+
ariaLabel: labels.eventList.emptyAria,
|
|
520
|
+
title: labels.eventList.emptyTitle,
|
|
521
|
+
description: labels.eventList.emptyDescription
|
|
522
|
+
}
|
|
523
|
+
) }) : null,
|
|
524
|
+
isError ? /* @__PURE__ */ jsx2(
|
|
525
|
+
Typography,
|
|
526
|
+
{
|
|
527
|
+
variant: "body",
|
|
528
|
+
className: "col-span-full flex h-32 w-full items-center justify-center",
|
|
529
|
+
children: labels.eventList.error
|
|
530
|
+
}
|
|
531
|
+
) : null
|
|
532
|
+
] }),
|
|
533
|
+
hasNextPage ? /* @__PURE__ */ jsx2("div", { ref: loadMoreRef, className: "h-px w-full", "aria-hidden": true }) : null
|
|
534
|
+
] });
|
|
535
|
+
};
|
|
155
536
|
var HomePage = ({
|
|
156
537
|
tabs,
|
|
157
538
|
defaultActiveTab,
|
|
158
539
|
onTabChange,
|
|
159
540
|
eventSectionItems,
|
|
160
541
|
classNames,
|
|
161
|
-
useCategoriesTabs = true,
|
|
162
542
|
categoriesLimit = DEFAULT_CATEGORIES_LIMIT,
|
|
163
543
|
allCategoryTabLabel = DEFAULT_ALL_CATEGORY_TAB_LABEL
|
|
164
544
|
}) => {
|
|
165
|
-
const labels =
|
|
545
|
+
const labels = useLabels2();
|
|
546
|
+
const {
|
|
547
|
+
search: {
|
|
548
|
+
value: searchValue,
|
|
549
|
+
result: selectedEvent,
|
|
550
|
+
isShowingAllResults,
|
|
551
|
+
onSelect: onSelectEvent
|
|
552
|
+
}
|
|
553
|
+
} = useSdkUiConfig();
|
|
166
554
|
const hasCustomTabs = !!tabs && tabs.length > 0;
|
|
167
|
-
const
|
|
555
|
+
const normalizedSearchValue = searchValue.trim();
|
|
556
|
+
const [debouncedSearchValue, setDebouncedSearchValue] = useState2(() => {
|
|
557
|
+
return normalizedSearchValue.length >= MIN_SEARCH_LENGTH ? normalizedSearchValue : "";
|
|
558
|
+
});
|
|
559
|
+
useEffect2(() => {
|
|
560
|
+
if (normalizedSearchValue.length < MIN_SEARCH_LENGTH) {
|
|
561
|
+
setDebouncedSearchValue("");
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
const timeoutId = window.setTimeout(() => {
|
|
565
|
+
setDebouncedSearchValue(normalizedSearchValue);
|
|
566
|
+
}, SEARCH_DEBOUNCE_MS);
|
|
567
|
+
return () => {
|
|
568
|
+
window.clearTimeout(timeoutId);
|
|
569
|
+
};
|
|
570
|
+
}, [normalizedSearchValue]);
|
|
168
571
|
const resolvedAllCategoryTabLabel = allCategoryTabLabel === DEFAULT_ALL_CATEGORY_TAB_LABEL ? labels.home.trending : allCategoryTabLabel;
|
|
169
|
-
const { categories } = useCategories({
|
|
572
|
+
const { categories, isLoading: isCategoriesLoading } = useCategories({
|
|
170
573
|
limit: categoriesLimit,
|
|
171
|
-
enabled:
|
|
574
|
+
enabled: !hasCustomTabs
|
|
172
575
|
});
|
|
173
|
-
const categoryTabs =
|
|
576
|
+
const categoryTabs = useMemo2(() => {
|
|
174
577
|
return resolveCategoryTabs(categories, resolvedAllCategoryTabLabel);
|
|
175
578
|
}, [categories, resolvedAllCategoryTabLabel]);
|
|
176
|
-
const resolvedTabs =
|
|
579
|
+
const resolvedTabs = useMemo2(() => {
|
|
177
580
|
if (hasCustomTabs && tabs)
|
|
178
581
|
return tabs;
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
return getDefaultHomePageTabs(resolvedAllCategoryTabLabel);
|
|
182
|
-
}, [categoryTabs, hasCustomTabs, resolvedAllCategoryTabLabel, shouldUseCategoriesTabs, tabs]);
|
|
582
|
+
return categoryTabs;
|
|
583
|
+
}, [categoryTabs, hasCustomTabs, tabs]);
|
|
183
584
|
const resolvedEventSectionItems = eventSectionItems && eventSectionItems.length > 0 ? eventSectionItems : getDefaultEventSectionItems(labels);
|
|
184
|
-
const [activeTabValue, setActiveTabValue] =
|
|
585
|
+
const [activeTabValue, setActiveTabValue] = useState2(() => {
|
|
185
586
|
return resolveInitialTabValue(resolvedTabs, defaultActiveTab);
|
|
186
587
|
});
|
|
187
|
-
|
|
588
|
+
useEffect2(() => {
|
|
188
589
|
setActiveTabValue((currentValue) => {
|
|
189
590
|
const hasCurrentValue = resolvedTabs.some((tab) => tab.value === currentValue);
|
|
190
591
|
if (hasCurrentValue)
|
|
@@ -192,13 +593,13 @@ var HomePage = ({
|
|
|
192
593
|
return resolveInitialTabValue(resolvedTabs, defaultActiveTab);
|
|
193
594
|
});
|
|
194
595
|
}, [defaultActiveTab, resolvedTabs]);
|
|
195
|
-
const tabsItems =
|
|
596
|
+
const tabsItems = useMemo2(() => {
|
|
196
597
|
return resolvedTabs.map((tab) => {
|
|
197
598
|
const isActive = tab.value === activeTabValue;
|
|
198
599
|
return {
|
|
199
600
|
value: tab.value,
|
|
200
601
|
label: tab.label,
|
|
201
|
-
icon: tab.iconName ? /* @__PURE__ */
|
|
602
|
+
icon: tab.iconName ? /* @__PURE__ */ jsx2(
|
|
202
603
|
Icon,
|
|
203
604
|
{
|
|
204
605
|
name: tab.iconName,
|
|
@@ -210,26 +611,24 @@ var HomePage = ({
|
|
|
210
611
|
};
|
|
211
612
|
});
|
|
212
613
|
}, [activeTabValue, resolvedTabs]);
|
|
213
|
-
const activeTab =
|
|
614
|
+
const activeTab = useMemo2(() => {
|
|
214
615
|
return resolvedTabs.find((tab) => tab.value === activeTabValue);
|
|
215
616
|
}, [activeTabValue, resolvedTabs]);
|
|
216
|
-
const resolvedSectionItems =
|
|
217
|
-
var _a, _b, _c, _d
|
|
617
|
+
const resolvedSectionItems = useMemo2(() => {
|
|
618
|
+
var _a, _b, _c, _d;
|
|
218
619
|
if (activeTabValue === ALL_CATEGORIES_TAB_VALUE) {
|
|
219
620
|
return resolvedEventSectionItems;
|
|
220
621
|
}
|
|
221
622
|
const maxItemsPerRow = (_b = (_a = resolvedEventSectionItems[0]) == null ? void 0 : _a.maxItemsPerRow) != null ? _b : 3;
|
|
222
|
-
const
|
|
223
|
-
const firstSectionLimit = (_d = resolvedEventSectionItems[0]) == null ? void 0 : _d.limit;
|
|
623
|
+
const firstSectionLimit = (_c = resolvedEventSectionItems[0]) == null ? void 0 : _c.limit;
|
|
224
624
|
const limit = firstSectionLimit && Number.isFinite(firstSectionLimit) ? Math.max(9, Math.floor(firstSectionLimit)) : 9;
|
|
225
625
|
return [
|
|
226
626
|
{
|
|
227
627
|
id: `${activeTabValue}-markets`,
|
|
228
|
-
title: (
|
|
628
|
+
title: (_d = activeTab == null ? void 0 : activeTab.label) != null ? _d : activeTabValue,
|
|
229
629
|
maxItemsPerRow,
|
|
230
630
|
limit,
|
|
231
631
|
maxVisibleItems: void 0,
|
|
232
|
-
showVenueLogo,
|
|
233
632
|
search: activeTab == null ? void 0 : activeTab.search,
|
|
234
633
|
categoryIds: activeTab == null ? void 0 : activeTab.categoryIds
|
|
235
634
|
}
|
|
@@ -239,12 +638,16 @@ var HomePage = ({
|
|
|
239
638
|
setActiveTabValue(value);
|
|
240
639
|
onTabChange == null ? void 0 : onTabChange(value);
|
|
241
640
|
};
|
|
242
|
-
return /* @__PURE__ */
|
|
243
|
-
/* @__PURE__ */
|
|
641
|
+
return /* @__PURE__ */ jsxs2("section", { className: cn("flex w-full flex-col", classNames == null ? void 0 : classNames.root), children: [
|
|
642
|
+
/* @__PURE__ */ jsx2(Header, { searchProps: {} }),
|
|
643
|
+
!selectedEvent && !isShowingAllResults ? /* @__PURE__ */ jsx2(
|
|
244
644
|
"header",
|
|
245
645
|
{
|
|
246
|
-
className: cn(
|
|
247
|
-
|
|
646
|
+
className: cn(
|
|
647
|
+
"w-full bg-agg-secondary border-b border-agg-separator",
|
|
648
|
+
classNames == null ? void 0 : classNames.header
|
|
649
|
+
),
|
|
650
|
+
children: /* @__PURE__ */ jsx2(
|
|
248
651
|
Tabs,
|
|
249
652
|
{
|
|
250
653
|
ariaLabel: labels.home.categoryTabsAria,
|
|
@@ -256,26 +659,39 @@ var HomePage = ({
|
|
|
256
659
|
}
|
|
257
660
|
)
|
|
258
661
|
}
|
|
259
|
-
),
|
|
260
|
-
/* @__PURE__ */
|
|
662
|
+
) : null,
|
|
663
|
+
/* @__PURE__ */ jsx2(
|
|
261
664
|
"main",
|
|
262
665
|
{
|
|
263
666
|
className: cn(
|
|
264
667
|
"flex w-full flex-col gap-4 md:gap-10 px-4 md:px-10 py-4 md:py-8",
|
|
265
668
|
classNames == null ? void 0 : classNames.sections
|
|
266
669
|
),
|
|
267
|
-
children:
|
|
268
|
-
|
|
269
|
-
|
|
670
|
+
children: selectedEvent ? /* @__PURE__ */ jsx2(EventMarketPage, { eventId: selectedEvent.id }) : isShowingAllResults && debouncedSearchValue ? /* @__PURE__ */ jsx2(
|
|
671
|
+
HomeSearchResults,
|
|
672
|
+
{
|
|
673
|
+
activeTabValue,
|
|
674
|
+
onTabChange: handleTabChange,
|
|
675
|
+
query: debouncedSearchValue,
|
|
676
|
+
tabs: tabsItems,
|
|
677
|
+
resolvedTabs
|
|
678
|
+
}
|
|
679
|
+
) : resolvedSectionItems.map((eventSectionItem) => {
|
|
680
|
+
var _a, _b;
|
|
681
|
+
return /* @__PURE__ */ jsx2(
|
|
270
682
|
EventList,
|
|
271
683
|
{
|
|
272
684
|
title: eventSectionItem.title,
|
|
273
685
|
maxItemsPerRow: eventSectionItem.maxItemsPerRow,
|
|
274
686
|
limit: eventSectionItem.limit,
|
|
275
687
|
maxVisibleItems: eventSectionItem.maxVisibleItems,
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
688
|
+
search: debouncedSearchValue || eventSectionItem.search || (activeTab == null ? void 0 : activeTab.search),
|
|
689
|
+
categoryIds: (_b = eventSectionItem.categoryIds) != null ? _b : activeTab == null ? void 0 : activeTab.categoryIds,
|
|
690
|
+
onClick: (event) => {
|
|
691
|
+
if (!event)
|
|
692
|
+
return;
|
|
693
|
+
onSelectEvent(event);
|
|
694
|
+
}
|
|
279
695
|
},
|
|
280
696
|
(_a = eventSectionItem.id) != null ? _a : eventSectionItem.title
|
|
281
697
|
);
|
|
@@ -286,288 +702,6 @@ var HomePage = ({
|
|
|
286
702
|
};
|
|
287
703
|
HomePage.displayName = "HomePage";
|
|
288
704
|
|
|
289
|
-
// src/pages/event-market/index.tsx
|
|
290
|
-
import { useEffect as useEffect2, useMemo as useMemo2, useState as useState2 } from "react";
|
|
291
|
-
import { useVenueEvent, useLabels as useLabels2 } from "@agg-market/hooks";
|
|
292
|
-
import dayjs from "dayjs";
|
|
293
|
-
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
294
|
-
var getMarketDateValue = (market, fallbackIndex) => {
|
|
295
|
-
var _a, _b, _c;
|
|
296
|
-
const candidateDate = (_c = (_b = (_a = market.endDate) != null ? _a : market.startDate) != null ? _b : market.creationDate) != null ? _c : null;
|
|
297
|
-
if (!candidateDate)
|
|
298
|
-
return Number.MAX_SAFE_INTEGER - 1 + fallbackIndex;
|
|
299
|
-
const parsedDate = dayjs(candidateDate);
|
|
300
|
-
if (!parsedDate.isValid()) {
|
|
301
|
-
return Number.MAX_SAFE_INTEGER - 1 + fallbackIndex;
|
|
302
|
-
}
|
|
303
|
-
return parsedDate.valueOf();
|
|
304
|
-
};
|
|
305
|
-
var resolveHeroMarketId = (event, heroMarketId) => {
|
|
306
|
-
var _a, _b;
|
|
307
|
-
if (!((_a = event == null ? void 0 : event.venueMarkets) == null ? void 0 : _a.length))
|
|
308
|
-
return void 0;
|
|
309
|
-
if (heroMarketId) {
|
|
310
|
-
const matchingHeroMarket = event.venueMarkets.find(
|
|
311
|
-
(market) => market.id === heroMarketId
|
|
312
|
-
);
|
|
313
|
-
if (matchingHeroMarket)
|
|
314
|
-
return matchingHeroMarket.id;
|
|
315
|
-
}
|
|
316
|
-
return (_b = event.venueMarkets[0]) == null ? void 0 : _b.id;
|
|
317
|
-
};
|
|
318
|
-
var buildHeroEvent = (event, heroMarketId) => {
|
|
319
|
-
if (!heroMarketId)
|
|
320
|
-
return void 0;
|
|
321
|
-
const heroMarket = event.venueMarkets.find((market) => market.id === heroMarketId);
|
|
322
|
-
if (!heroMarket)
|
|
323
|
-
return void 0;
|
|
324
|
-
return __spreadProps(__spreadValues({}, event), {
|
|
325
|
-
venueMarkets: [heroMarket]
|
|
326
|
-
});
|
|
327
|
-
};
|
|
328
|
-
var resolveDetailedMarkets = (event, heroMarketId) => {
|
|
329
|
-
return event.venueMarkets.filter((market) => market.id !== heroMarketId).map((market, index) => ({
|
|
330
|
-
market,
|
|
331
|
-
index
|
|
332
|
-
})).sort(
|
|
333
|
-
(leftItem, rightItem) => {
|
|
334
|
-
return getMarketDateValue(leftItem.market, leftItem.index) - getMarketDateValue(rightItem.market, rightItem.index);
|
|
335
|
-
}
|
|
336
|
-
).map((item) => item.market);
|
|
337
|
-
};
|
|
338
|
-
var resolveInitialExpandedMarketId = (detailedMarkets, defaultExpandedMarketId) => {
|
|
339
|
-
var _a, _b;
|
|
340
|
-
if (!detailedMarkets.length)
|
|
341
|
-
return null;
|
|
342
|
-
if (defaultExpandedMarketId) {
|
|
343
|
-
const matchingMarket = detailedMarkets.find((market) => market.id === defaultExpandedMarketId);
|
|
344
|
-
if (matchingMarket)
|
|
345
|
-
return matchingMarket.id;
|
|
346
|
-
}
|
|
347
|
-
return (_b = (_a = detailedMarkets[0]) == null ? void 0 : _a.id) != null ? _b : null;
|
|
348
|
-
};
|
|
349
|
-
var EventMarketPageUnavailableState = ({
|
|
350
|
-
ariaLabel
|
|
351
|
-
}) => {
|
|
352
|
-
const labels = useLabels2();
|
|
353
|
-
return /* @__PURE__ */ jsx2(
|
|
354
|
-
Card,
|
|
355
|
-
{
|
|
356
|
-
className: "rounded-agg-xl border border-agg-separator bg-agg-secondary p-6 shadow-none hover:shadow-none",
|
|
357
|
-
role: "status",
|
|
358
|
-
"aria-label": ariaLabel != null ? ariaLabel : labels.eventMarketPage.unavailableAria,
|
|
359
|
-
children: /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-1", children: [
|
|
360
|
-
/* @__PURE__ */ jsx2(Typography, { variant: "body-large-strong", children: labels.eventMarketPage.unavailableTitle }),
|
|
361
|
-
/* @__PURE__ */ jsx2(Typography, { variant: "label", className: "text-agg-muted-foreground", children: labels.eventMarketPage.unavailableDescription })
|
|
362
|
-
] })
|
|
363
|
-
}
|
|
364
|
-
);
|
|
365
|
-
};
|
|
366
|
-
var EventMarketPageNotFoundState = ({
|
|
367
|
-
ariaLabel
|
|
368
|
-
}) => {
|
|
369
|
-
const labels = useLabels2();
|
|
370
|
-
return /* @__PURE__ */ jsx2(Card, { className: "overflow-hidden rounded-agg-xl border border-agg-separator bg-agg-secondary p-0 shadow-none hover:shadow-none", children: /* @__PURE__ */ jsx2(
|
|
371
|
-
StateMessage,
|
|
372
|
-
{
|
|
373
|
-
ariaLabel: ariaLabel != null ? ariaLabel : labels.eventItemDetails.notFoundAria,
|
|
374
|
-
title: labels.eventItemDetails.notFoundTitle,
|
|
375
|
-
description: labels.eventItemDetails.notFoundDescription,
|
|
376
|
-
className: "min-h-[320px] md:min-h-[360px]"
|
|
377
|
-
}
|
|
378
|
-
) });
|
|
379
|
-
};
|
|
380
|
-
var EventMarketPageLoadingState = ({
|
|
381
|
-
placeOrder,
|
|
382
|
-
settlement,
|
|
383
|
-
classNames
|
|
384
|
-
}) => {
|
|
385
|
-
const labels = useLabels2();
|
|
386
|
-
const fallbackSettlement = settlement != null ? settlement : {
|
|
387
|
-
sectionLabel: labels.trading.settlementSection,
|
|
388
|
-
question: labels.eventMarketPage.loadingSettlementQuestion,
|
|
389
|
-
differencesTitle: labels.eventMarketPage.loadingSettlementDifferencesTitle,
|
|
390
|
-
differences: [labels.eventMarketPage.loadingSettlementPlaceholder],
|
|
391
|
-
venues: [
|
|
392
|
-
{
|
|
393
|
-
venue: "polymarket",
|
|
394
|
-
description: labels.eventMarketPage.loadingSettlementPlaceholder
|
|
395
|
-
}
|
|
396
|
-
]
|
|
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
|
|
413
|
-
}
|
|
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" } })
|
|
420
|
-
] }),
|
|
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",
|
|
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
|
-
};
|
|
439
|
-
var EventMarketPageContent = ({
|
|
440
|
-
event,
|
|
441
|
-
heroMarketId,
|
|
442
|
-
defaultExpandedMarketId,
|
|
443
|
-
expandedMarketId,
|
|
444
|
-
onExpandedMarketChange,
|
|
445
|
-
heroDefaultTimeRange,
|
|
446
|
-
placeOrder,
|
|
447
|
-
settlement,
|
|
448
|
-
classNames,
|
|
449
|
-
ariaLabel
|
|
450
|
-
}) => {
|
|
451
|
-
const labels = useLabels2();
|
|
452
|
-
const resolvedHeroMarketId = useMemo2(() => {
|
|
453
|
-
return resolveHeroMarketId(event, heroMarketId);
|
|
454
|
-
}, [event, heroMarketId]);
|
|
455
|
-
const heroEvent = useMemo2(() => {
|
|
456
|
-
return buildHeroEvent(event, resolvedHeroMarketId);
|
|
457
|
-
}, [event, resolvedHeroMarketId]);
|
|
458
|
-
const detailedMarkets = useMemo2(() => {
|
|
459
|
-
return resolveDetailedMarkets(event, resolvedHeroMarketId);
|
|
460
|
-
}, [event, resolvedHeroMarketId]);
|
|
461
|
-
const [internalExpandedMarketId, setInternalExpandedMarketId] = useState2(() => {
|
|
462
|
-
return resolveInitialExpandedMarketId(detailedMarkets, defaultExpandedMarketId);
|
|
463
|
-
});
|
|
464
|
-
useEffect2(() => {
|
|
465
|
-
if (typeof expandedMarketId === "undefined")
|
|
466
|
-
return;
|
|
467
|
-
setInternalExpandedMarketId(expandedMarketId);
|
|
468
|
-
}, [expandedMarketId]);
|
|
469
|
-
useEffect2(() => {
|
|
470
|
-
if (typeof expandedMarketId !== "undefined")
|
|
471
|
-
return;
|
|
472
|
-
setInternalExpandedMarketId((currentExpandedMarketId) => {
|
|
473
|
-
if (currentExpandedMarketId && detailedMarkets.some((market) => market.id === currentExpandedMarketId)) {
|
|
474
|
-
return currentExpandedMarketId;
|
|
475
|
-
}
|
|
476
|
-
return resolveInitialExpandedMarketId(detailedMarkets, defaultExpandedMarketId);
|
|
477
|
-
});
|
|
478
|
-
}, [defaultExpandedMarketId, detailedMarkets, expandedMarketId]);
|
|
479
|
-
const resolvedExpandedMarketId = typeof expandedMarketId === "undefined" ? internalExpandedMarketId : expandedMarketId;
|
|
480
|
-
const handleExpandedMarketChange = (marketId, isOpened) => {
|
|
481
|
-
const nextExpandedMarketId = isOpened ? marketId : null;
|
|
482
|
-
if (typeof expandedMarketId === "undefined") {
|
|
483
|
-
setInternalExpandedMarketId(nextExpandedMarketId);
|
|
484
|
-
}
|
|
485
|
-
onExpandedMarketChange == null ? void 0 : onExpandedMarketChange(nextExpandedMarketId);
|
|
486
|
-
};
|
|
487
|
-
if (!heroEvent || !event.venueMarkets.length) {
|
|
488
|
-
return /* @__PURE__ */ jsx2(EventMarketPageUnavailableState, { ariaLabel });
|
|
489
|
-
}
|
|
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",
|
|
492
|
-
{
|
|
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
|
-
),
|
|
497
|
-
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
|
|
530
|
-
]
|
|
531
|
-
}
|
|
532
|
-
) });
|
|
533
|
-
};
|
|
534
|
-
var EventMarketPage = (props) => {
|
|
535
|
-
var _a;
|
|
536
|
-
const hasEventProp = "event" in props && !!props.event;
|
|
537
|
-
const {
|
|
538
|
-
event: fetchedEvent,
|
|
539
|
-
error: eventError,
|
|
540
|
-
isLoading: isFetchingEvent
|
|
541
|
-
} = useVenueEvent({
|
|
542
|
-
eventId: hasEventProp ? "" : (_a = props.eventId) != null ? _a : "",
|
|
543
|
-
enabled: !props.isLoading && !hasEventProp && !!props.eventId
|
|
544
|
-
});
|
|
545
|
-
if (props.isLoading) {
|
|
546
|
-
return /* @__PURE__ */ jsx2(EventMarketPageLoadingState, { placeOrder: props.placeOrder, settlement: props.settlement });
|
|
547
|
-
}
|
|
548
|
-
if ("event" in props && props.event) {
|
|
549
|
-
return /* @__PURE__ */ jsx2(EventMarketPageContent, __spreadProps(__spreadValues({}, props), { event: props.event }));
|
|
550
|
-
}
|
|
551
|
-
if (isFetchingEvent) {
|
|
552
|
-
return /* @__PURE__ */ jsx2(
|
|
553
|
-
EventMarketPageLoadingState,
|
|
554
|
-
{
|
|
555
|
-
placeOrder: props.placeOrder,
|
|
556
|
-
settlement: props.settlement,
|
|
557
|
-
classNames: props.classNames
|
|
558
|
-
}
|
|
559
|
-
);
|
|
560
|
-
}
|
|
561
|
-
if (!fetchedEvent) {
|
|
562
|
-
if (isErrorWithStatus(eventError, 404)) {
|
|
563
|
-
return /* @__PURE__ */ jsx2(EventMarketPageNotFoundState, { ariaLabel: props.ariaLabel });
|
|
564
|
-
}
|
|
565
|
-
return /* @__PURE__ */ jsx2(EventMarketPageUnavailableState, { ariaLabel: props.ariaLabel });
|
|
566
|
-
}
|
|
567
|
-
return /* @__PURE__ */ jsx2(EventMarketPageContent, __spreadProps(__spreadValues({}, props), { event: fetchedEvent }));
|
|
568
|
-
};
|
|
569
|
-
EventMarketPage.displayName = "EventMarketPage";
|
|
570
|
-
|
|
571
705
|
// src/pages/user-profile/components/balance-display.tsx
|
|
572
706
|
import { useState as useState3 } from "react";
|
|
573
707
|
|
|
@@ -1204,7 +1338,7 @@ var UserProfilePage = ({
|
|
|
1204
1338
|
UserProfilePage.displayName = "UserProfilePage";
|
|
1205
1339
|
|
|
1206
1340
|
export {
|
|
1207
|
-
HomePage,
|
|
1208
1341
|
EventMarketPage,
|
|
1342
|
+
HomePage,
|
|
1209
1343
|
UserProfilePage
|
|
1210
1344
|
};
|