@agg-build/ui 2.3.0 → 2.4.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.
- package/dist/{chunk-6Z5GQ3KL.mjs → chunk-2ET5CXOU.mjs} +8 -1
- package/dist/{chunk-MXM5PM4A.mjs → chunk-3FLLEJFM.mjs} +3 -3
- package/dist/{chunk-ELLV56FR.mjs → chunk-FIN55CXA.mjs} +41 -15
- package/dist/{chunk-7OVSGWI7.mjs → chunk-G5BXCT5Y.mjs} +1 -1
- package/dist/{chunk-SG573ODC.mjs → chunk-G5Y45GIA.mjs} +1 -1
- package/dist/{chunk-44GSDH2Y.mjs → chunk-GUYFQP7L.mjs} +2 -2
- package/dist/{chunk-3R2CQTNM.mjs → chunk-MDO3NMXP.mjs} +2 -2
- package/dist/events.mjs +3 -3
- package/dist/index.js +43 -11
- package/dist/index.mjs +7 -7
- package/dist/modals.mjs +3 -3
- package/dist/pages.js +43 -11
- package/dist/pages.mjs +6 -6
- package/dist/primitives.js +6 -0
- package/dist/primitives.mjs +1 -1
- package/dist/trading.mjs +4 -4
- package/dist/types/pages/event-market/sports-event-market.utils.d.mts +3 -3
- package/dist/types/pages/event-market/sports-event-market.utils.d.ts +3 -3
- package/package.json +1 -1
|
@@ -5203,7 +5203,8 @@ import {
|
|
|
5203
5203
|
useLiveOutcomePrices,
|
|
5204
5204
|
useMidpoints,
|
|
5205
5205
|
useSdkUiConfig as useSdkUiConfig10,
|
|
5206
|
-
useSearch
|
|
5206
|
+
useSearch,
|
|
5207
|
+
MarketStatus as MarketStatus2
|
|
5207
5208
|
} from "@agg-build/hooks";
|
|
5208
5209
|
import {
|
|
5209
5210
|
useCallback as useCallback3,
|
|
@@ -7386,6 +7387,12 @@ var Search = ({
|
|
|
7386
7387
|
q: shouldFetchResults ? debouncedSearchValue : "",
|
|
7387
7388
|
type: "events",
|
|
7388
7389
|
categoryIds,
|
|
7390
|
+
// Server-side open-only: without it a query whose top results are
|
|
7391
|
+
// resolved history (recurring series) returns a full page that
|
|
7392
|
+
// filterOpenEvents below then empties — rendering "no results" for
|
|
7393
|
+
// markets that exist. filterOpenEvents stays as the residual guard for
|
|
7394
|
+
// events with no open child markets, which the server doesn't check.
|
|
7395
|
+
status: [MarketStatus2.open],
|
|
7389
7396
|
limit: limit != null ? limit : DEFAULT_SEARCH_LIMIT,
|
|
7390
7397
|
enabled: shouldFetchResults
|
|
7391
7398
|
});
|
|
@@ -8,11 +8,11 @@ import {
|
|
|
8
8
|
getTradingValueLabel,
|
|
9
9
|
getTradingVenueLabel,
|
|
10
10
|
resolveOrderEligibilityMessage
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-G5Y45GIA.mjs";
|
|
12
12
|
import {
|
|
13
13
|
GeoBlockBanner,
|
|
14
14
|
subscribeAggDepositNotification
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-G5BXCT5Y.mjs";
|
|
16
16
|
import {
|
|
17
17
|
AGG_TERMS_OF_SERVICE_URL,
|
|
18
18
|
Button,
|
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
resolveResolvedOutcomeLabel,
|
|
45
45
|
skeletonViews,
|
|
46
46
|
useOptionalToast
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-2ET5CXOU.mjs";
|
|
48
48
|
|
|
49
49
|
// src/trading/types.ts
|
|
50
50
|
import { Venue, enumGuard, isFiniteNonNeg, safeParse } from "@agg-build/sdk";
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
isErrorWithStatus,
|
|
11
11
|
useEventListTabs,
|
|
12
12
|
useEventListTabsHeaderOverflow
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-MDO3NMXP.mjs";
|
|
14
14
|
import {
|
|
15
15
|
DEPOSIT_MODAL_OPEN_EVENT,
|
|
16
16
|
PlaceOrder,
|
|
@@ -18,10 +18,10 @@ import {
|
|
|
18
18
|
WITHDRAW_MODAL_OPEN_EVENT,
|
|
19
19
|
useClaimWinnings,
|
|
20
20
|
useResolvedMarketClaim
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-3FLLEJFM.mjs";
|
|
22
22
|
import {
|
|
23
23
|
getDisplayOutcomePrice
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-G5Y45GIA.mjs";
|
|
25
25
|
import {
|
|
26
26
|
AggErrorBoundary,
|
|
27
27
|
Button,
|
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
resolveTabVenus,
|
|
53
53
|
shortenAddress,
|
|
54
54
|
sortCategoriesForNavigation
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-2ET5CXOU.mjs";
|
|
56
56
|
|
|
57
57
|
// src/pages/home/index.tsx
|
|
58
58
|
import {
|
|
@@ -385,6 +385,7 @@ import { useEffect as useEffect4, useMemo as useMemo2, useRef as useRef3, useSta
|
|
|
385
385
|
|
|
386
386
|
// src/pages/event-market/sports-event-market.utils.ts
|
|
387
387
|
var SPORTS_MARKET_TYPE_KEYS = [
|
|
388
|
+
"to_advance",
|
|
388
389
|
"moneyline",
|
|
389
390
|
"spread",
|
|
390
391
|
"total",
|
|
@@ -526,6 +527,7 @@ var SPORTS_PERIOD_ORDER = [
|
|
|
526
527
|
"other"
|
|
527
528
|
];
|
|
528
529
|
var SPORTS_MARKET_TYPE_ORDER = [
|
|
530
|
+
"to_advance",
|
|
529
531
|
"moneyline",
|
|
530
532
|
"spread",
|
|
531
533
|
"total",
|
|
@@ -624,6 +626,9 @@ var resolveFallbackSportsMarketCategory = (market) => {
|
|
|
624
626
|
return null;
|
|
625
627
|
};
|
|
626
628
|
var resolveMarketSectionTabKey = (market) => {
|
|
629
|
+
if (normalizeSportsMarketType(market.sportsMarketType) === "to_advance") {
|
|
630
|
+
return "game_lines";
|
|
631
|
+
}
|
|
627
632
|
const normalizedCategory = normalizeSportsMarketCategory(market.marketCategory);
|
|
628
633
|
const fallbackCategory = !normalizedCategory || normalizedCategory === "other" ? resolveFallbackSportsMarketCategory(market) : null;
|
|
629
634
|
const category = fallbackCategory != null ? fallbackCategory : normalizedCategory;
|
|
@@ -667,25 +672,32 @@ var resolveSportsSectionMarkets = ({
|
|
|
667
672
|
return [...filteredSectionMarkets, ...strayOtherMarkets];
|
|
668
673
|
}
|
|
669
674
|
if (tabKey !== "game_lines") return filteredSectionMarkets;
|
|
670
|
-
const
|
|
675
|
+
const dedupeEventMarketsOfType = (type) => {
|
|
671
676
|
const dedupedMarkets = [];
|
|
672
|
-
const
|
|
677
|
+
const seenKeys = /* @__PURE__ */ new Set();
|
|
673
678
|
for (const market of eventMarkets) {
|
|
674
|
-
if (normalizeSportsMarketType(market.sportsMarketType) !==
|
|
679
|
+
if (normalizeSportsMarketType(market.sportsMarketType) !== type || resolveMarketSectionTabKey(market) !== "game_lines") {
|
|
675
680
|
continue;
|
|
676
681
|
}
|
|
677
|
-
const
|
|
678
|
-
if (
|
|
679
|
-
|
|
682
|
+
const key = resolveSportsMarketAggKey(market) || market.id;
|
|
683
|
+
if (seenKeys.has(key)) continue;
|
|
684
|
+
seenKeys.add(key);
|
|
680
685
|
dedupedMarkets.push(market);
|
|
681
686
|
}
|
|
682
687
|
return dedupedMarkets;
|
|
683
|
-
}
|
|
684
|
-
|
|
685
|
-
const
|
|
688
|
+
};
|
|
689
|
+
const eventMoneylineMarkets = dedupeEventMarketsOfType("moneyline");
|
|
690
|
+
const eventToAdvanceMarkets = dedupeEventMarketsOfType("to_advance");
|
|
691
|
+
const sectionWithoutAdvance = filteredSectionMarkets.filter(
|
|
692
|
+
(market) => normalizeSportsMarketType(market.sportsMarketType) !== "to_advance"
|
|
693
|
+
);
|
|
694
|
+
if (eventMoneylineMarkets.length === 0) {
|
|
695
|
+
return [...eventToAdvanceMarkets, ...sectionWithoutAdvance];
|
|
696
|
+
}
|
|
697
|
+
const lineSectionMarkets = sectionWithoutAdvance.filter(
|
|
686
698
|
(market) => normalizeSportsMarketType(market.sportsMarketType) !== "moneyline" && resolveMarketSectionTabKey(market) === "game_lines"
|
|
687
699
|
);
|
|
688
|
-
return [...eventMoneylineMarkets, ...lineSectionMarkets];
|
|
700
|
+
return [...eventToAdvanceMarkets, ...eventMoneylineMarkets, ...lineSectionMarkets];
|
|
689
701
|
};
|
|
690
702
|
var resolveSportsMarketCardVariant = (market) => {
|
|
691
703
|
var _a;
|
|
@@ -775,6 +787,9 @@ var resolveDisplayGroupFamilyKey = (market) => {
|
|
|
775
787
|
if (isBinarySportsMoneylineMarket(market)) {
|
|
776
788
|
return `${period}|moneyline|${marketCategory}`;
|
|
777
789
|
}
|
|
790
|
+
if (sportsMarketType === "to_advance") {
|
|
791
|
+
return `${period}|to_advance`;
|
|
792
|
+
}
|
|
778
793
|
const lineFamily = resolveSportsLineFamilyKey(market);
|
|
779
794
|
if (sportsMarketType === "spread") {
|
|
780
795
|
const spreadFamily = resolveSpreadFamilyKey(market);
|
|
@@ -810,6 +825,7 @@ var resolveDisplayGroupTitle = (market, groupMarkets = [market]) => {
|
|
|
810
825
|
const sportsMarketType = normalizeSportsMarketType(market.sportsMarketType);
|
|
811
826
|
const question = toTrimmedString(market.question);
|
|
812
827
|
if (isBinarySportsMoneylineMarket(market)) return "Moneyline";
|
|
828
|
+
if (sportsMarketType === "to_advance") return "Team to Advance";
|
|
813
829
|
if (sportsMarketType === "spread") return "Spreads";
|
|
814
830
|
if (!question) {
|
|
815
831
|
return sportsMarketType != null ? sportsMarketType : market.id;
|
|
@@ -852,7 +868,16 @@ var buildSportsMarketDisplayGroups = (markets) => {
|
|
|
852
868
|
}
|
|
853
869
|
const groups = Array.from(groupsByKey.entries()).map(([id, groupMarkets]) => {
|
|
854
870
|
var _a2;
|
|
855
|
-
const
|
|
871
|
+
const isToAdvanceGroup = groupMarkets.some(
|
|
872
|
+
(market) => normalizeSportsMarketType(market.sportsMarketType) === "to_advance"
|
|
873
|
+
);
|
|
874
|
+
const orderedMarkets = isToAdvanceGroup ? [...groupMarkets].sort((left, right) => {
|
|
875
|
+
var _a3, _b;
|
|
876
|
+
const leftSingle = resolveSportsMarketAggKey(left).endsWith("_adv") ? 0 : 1;
|
|
877
|
+
const rightSingle = resolveSportsMarketAggKey(right).endsWith("_adv") ? 0 : 1;
|
|
878
|
+
if (leftSingle !== rightSingle) return leftSingle - rightSingle;
|
|
879
|
+
return ((_a3 = right.volume) != null ? _a3 : 0) - ((_b = left.volume) != null ? _b : 0);
|
|
880
|
+
}) : sortMarketsByLineValue(groupMarkets);
|
|
856
881
|
const firstMarket = orderedMarkets[0];
|
|
857
882
|
const sportsMarketType = normalizeSportsMarketType(firstMarket == null ? void 0 : firstMarket.sportsMarketType);
|
|
858
883
|
const marketCategory = normalizeSportsMarketCategory(firstMarket == null ? void 0 : firstMarket.marketCategory);
|
|
@@ -960,6 +985,7 @@ var resolveHighestVolumeIndex = (markets) => {
|
|
|
960
985
|
return bestIndex;
|
|
961
986
|
};
|
|
962
987
|
var resolveSlideKind = (group) => {
|
|
988
|
+
if (group.sportsMarketType === "to_advance") return "to_advance";
|
|
963
989
|
if (group.sportsMarketType === "moneyline") return "moneyline";
|
|
964
990
|
if (group.sportsMarketType === "spread") return "spread";
|
|
965
991
|
if (group.sportsMarketType === "total") return "total";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
dispatchAggDepositNotification
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-G5BXCT5Y.mjs";
|
|
5
5
|
import {
|
|
6
6
|
BestPricesIcon,
|
|
7
7
|
BoltIcon,
|
|
@@ -41,7 +41,7 @@ import {
|
|
|
41
41
|
shortenAddress,
|
|
42
42
|
useOptionalToast,
|
|
43
43
|
venueLogoLabels
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-2ET5CXOU.mjs";
|
|
45
45
|
|
|
46
46
|
// src/deposit/index.tsx
|
|
47
47
|
import { useAggAuthState, useAggUiConfig, useDepositAddresses, useLabels as useLabels11 } from "@agg-build/hooks";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
resolveUnifiedOrderBookEntries,
|
|
24
24
|
sortOutcomeSelectorOutcomes,
|
|
25
25
|
useEventTradingContext
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-G5Y45GIA.mjs";
|
|
27
27
|
import {
|
|
28
28
|
AutocompleteSelect,
|
|
29
29
|
Badge,
|
|
@@ -75,7 +75,7 @@ import {
|
|
|
75
75
|
sortCategoriesForNavigation,
|
|
76
76
|
sortOutcomes,
|
|
77
77
|
splitEventsByLifecycle
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-2ET5CXOU.mjs";
|
|
79
79
|
|
|
80
80
|
// src/events/item/index.tsx
|
|
81
81
|
import {
|
package/dist/events.mjs
CHANGED
|
@@ -16,13 +16,13 @@ import {
|
|
|
16
16
|
orderbookRowLimitDefault,
|
|
17
17
|
resolveEventDetailsSyncKey,
|
|
18
18
|
useCenterOrderbookSpread
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-MDO3NMXP.mjs";
|
|
20
20
|
import {
|
|
21
21
|
formatProbabilityCents,
|
|
22
22
|
resolveOrderBookRows,
|
|
23
23
|
resolveUnifiedOrderBookEntries
|
|
24
|
-
} from "./chunk-
|
|
25
|
-
import "./chunk-
|
|
24
|
+
} from "./chunk-G5Y45GIA.mjs";
|
|
25
|
+
import "./chunk-2ET5CXOU.mjs";
|
|
26
26
|
export {
|
|
27
27
|
EventList,
|
|
28
28
|
EventListItem,
|
package/dist/index.js
CHANGED
|
@@ -7593,6 +7593,12 @@ var Search = ({
|
|
|
7593
7593
|
q: shouldFetchResults ? debouncedSearchValue : "",
|
|
7594
7594
|
type: "events",
|
|
7595
7595
|
categoryIds,
|
|
7596
|
+
// Server-side open-only: without it a query whose top results are
|
|
7597
|
+
// resolved history (recurring series) returns a full page that
|
|
7598
|
+
// filterOpenEvents below then empties — rendering "no results" for
|
|
7599
|
+
// markets that exist. filterOpenEvents stays as the residual guard for
|
|
7600
|
+
// events with no open child markets, which the server doesn't check.
|
|
7601
|
+
status: [import_hooks27.MarketStatus.open],
|
|
7596
7602
|
limit: limit != null ? limit : DEFAULT_SEARCH_LIMIT,
|
|
7597
7603
|
enabled: shouldFetchResults
|
|
7598
7604
|
});
|
|
@@ -23195,6 +23201,7 @@ var import_react40 = require("react");
|
|
|
23195
23201
|
|
|
23196
23202
|
// src/pages/event-market/sports-event-market.utils.ts
|
|
23197
23203
|
var SPORTS_MARKET_TYPE_KEYS = [
|
|
23204
|
+
"to_advance",
|
|
23198
23205
|
"moneyline",
|
|
23199
23206
|
"spread",
|
|
23200
23207
|
"total",
|
|
@@ -23336,6 +23343,7 @@ var SPORTS_PERIOD_ORDER = [
|
|
|
23336
23343
|
"other"
|
|
23337
23344
|
];
|
|
23338
23345
|
var SPORTS_MARKET_TYPE_ORDER = [
|
|
23346
|
+
"to_advance",
|
|
23339
23347
|
"moneyline",
|
|
23340
23348
|
"spread",
|
|
23341
23349
|
"total",
|
|
@@ -23434,6 +23442,9 @@ var resolveFallbackSportsMarketCategory = (market) => {
|
|
|
23434
23442
|
return null;
|
|
23435
23443
|
};
|
|
23436
23444
|
var resolveMarketSectionTabKey = (market) => {
|
|
23445
|
+
if (normalizeSportsMarketType(market.sportsMarketType) === "to_advance") {
|
|
23446
|
+
return "game_lines";
|
|
23447
|
+
}
|
|
23437
23448
|
const normalizedCategory = normalizeSportsMarketCategory(market.marketCategory);
|
|
23438
23449
|
const fallbackCategory = !normalizedCategory || normalizedCategory === "other" ? resolveFallbackSportsMarketCategory(market) : null;
|
|
23439
23450
|
const category = fallbackCategory != null ? fallbackCategory : normalizedCategory;
|
|
@@ -23477,25 +23488,32 @@ var resolveSportsSectionMarkets = ({
|
|
|
23477
23488
|
return [...filteredSectionMarkets, ...strayOtherMarkets];
|
|
23478
23489
|
}
|
|
23479
23490
|
if (tabKey !== "game_lines") return filteredSectionMarkets;
|
|
23480
|
-
const
|
|
23491
|
+
const dedupeEventMarketsOfType = (type) => {
|
|
23481
23492
|
const dedupedMarkets = [];
|
|
23482
|
-
const
|
|
23493
|
+
const seenKeys = /* @__PURE__ */ new Set();
|
|
23483
23494
|
for (const market of eventMarkets) {
|
|
23484
|
-
if (normalizeSportsMarketType(market.sportsMarketType) !==
|
|
23495
|
+
if (normalizeSportsMarketType(market.sportsMarketType) !== type || resolveMarketSectionTabKey(market) !== "game_lines") {
|
|
23485
23496
|
continue;
|
|
23486
23497
|
}
|
|
23487
|
-
const
|
|
23488
|
-
if (
|
|
23489
|
-
|
|
23498
|
+
const key = resolveSportsMarketAggKey(market) || market.id;
|
|
23499
|
+
if (seenKeys.has(key)) continue;
|
|
23500
|
+
seenKeys.add(key);
|
|
23490
23501
|
dedupedMarkets.push(market);
|
|
23491
23502
|
}
|
|
23492
23503
|
return dedupedMarkets;
|
|
23493
|
-
}
|
|
23494
|
-
|
|
23495
|
-
const
|
|
23504
|
+
};
|
|
23505
|
+
const eventMoneylineMarkets = dedupeEventMarketsOfType("moneyline");
|
|
23506
|
+
const eventToAdvanceMarkets = dedupeEventMarketsOfType("to_advance");
|
|
23507
|
+
const sectionWithoutAdvance = filteredSectionMarkets.filter(
|
|
23508
|
+
(market) => normalizeSportsMarketType(market.sportsMarketType) !== "to_advance"
|
|
23509
|
+
);
|
|
23510
|
+
if (eventMoneylineMarkets.length === 0) {
|
|
23511
|
+
return [...eventToAdvanceMarkets, ...sectionWithoutAdvance];
|
|
23512
|
+
}
|
|
23513
|
+
const lineSectionMarkets = sectionWithoutAdvance.filter(
|
|
23496
23514
|
(market) => normalizeSportsMarketType(market.sportsMarketType) !== "moneyline" && resolveMarketSectionTabKey(market) === "game_lines"
|
|
23497
23515
|
);
|
|
23498
|
-
return [...eventMoneylineMarkets, ...lineSectionMarkets];
|
|
23516
|
+
return [...eventToAdvanceMarkets, ...eventMoneylineMarkets, ...lineSectionMarkets];
|
|
23499
23517
|
};
|
|
23500
23518
|
var resolveSportsMarketCardVariant = (market) => {
|
|
23501
23519
|
var _a;
|
|
@@ -23585,6 +23603,9 @@ var resolveDisplayGroupFamilyKey = (market) => {
|
|
|
23585
23603
|
if (isBinarySportsMoneylineMarket(market)) {
|
|
23586
23604
|
return `${period}|moneyline|${marketCategory}`;
|
|
23587
23605
|
}
|
|
23606
|
+
if (sportsMarketType === "to_advance") {
|
|
23607
|
+
return `${period}|to_advance`;
|
|
23608
|
+
}
|
|
23588
23609
|
const lineFamily = resolveSportsLineFamilyKey(market);
|
|
23589
23610
|
if (sportsMarketType === "spread") {
|
|
23590
23611
|
const spreadFamily = resolveSpreadFamilyKey(market);
|
|
@@ -23620,6 +23641,7 @@ var resolveDisplayGroupTitle = (market, groupMarkets = [market]) => {
|
|
|
23620
23641
|
const sportsMarketType = normalizeSportsMarketType(market.sportsMarketType);
|
|
23621
23642
|
const question = toTrimmedString(market.question);
|
|
23622
23643
|
if (isBinarySportsMoneylineMarket(market)) return "Moneyline";
|
|
23644
|
+
if (sportsMarketType === "to_advance") return "Team to Advance";
|
|
23623
23645
|
if (sportsMarketType === "spread") return "Spreads";
|
|
23624
23646
|
if (!question) {
|
|
23625
23647
|
return sportsMarketType != null ? sportsMarketType : market.id;
|
|
@@ -23662,7 +23684,16 @@ var buildSportsMarketDisplayGroups = (markets) => {
|
|
|
23662
23684
|
}
|
|
23663
23685
|
const groups = Array.from(groupsByKey.entries()).map(([id, groupMarkets]) => {
|
|
23664
23686
|
var _a2;
|
|
23665
|
-
const
|
|
23687
|
+
const isToAdvanceGroup = groupMarkets.some(
|
|
23688
|
+
(market) => normalizeSportsMarketType(market.sportsMarketType) === "to_advance"
|
|
23689
|
+
);
|
|
23690
|
+
const orderedMarkets = isToAdvanceGroup ? [...groupMarkets].sort((left, right) => {
|
|
23691
|
+
var _a3, _b;
|
|
23692
|
+
const leftSingle = resolveSportsMarketAggKey(left).endsWith("_adv") ? 0 : 1;
|
|
23693
|
+
const rightSingle = resolveSportsMarketAggKey(right).endsWith("_adv") ? 0 : 1;
|
|
23694
|
+
if (leftSingle !== rightSingle) return leftSingle - rightSingle;
|
|
23695
|
+
return ((_a3 = right.volume) != null ? _a3 : 0) - ((_b = left.volume) != null ? _b : 0);
|
|
23696
|
+
}) : sortMarketsByLineValue(groupMarkets);
|
|
23666
23697
|
const firstMarket = orderedMarkets[0];
|
|
23667
23698
|
const sportsMarketType = normalizeSportsMarketType(firstMarket == null ? void 0 : firstMarket.sportsMarketType);
|
|
23668
23699
|
const marketCategory = normalizeSportsMarketCategory(firstMarket == null ? void 0 : firstMarket.marketCategory);
|
|
@@ -23770,6 +23801,7 @@ var resolveHighestVolumeIndex = (markets) => {
|
|
|
23770
23801
|
return bestIndex;
|
|
23771
23802
|
};
|
|
23772
23803
|
var resolveSlideKind = (group) => {
|
|
23804
|
+
if (group.sportsMarketType === "to_advance") return "to_advance";
|
|
23773
23805
|
if (group.sportsMarketType === "moneyline") return "moneyline";
|
|
23774
23806
|
if (group.sportsMarketType === "spread") return "spread";
|
|
23775
23807
|
if (group.sportsMarketType === "total") return "total";
|
package/dist/index.mjs
CHANGED
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
UserProfilePage,
|
|
12
12
|
buildAggTxExplorerHref,
|
|
13
13
|
useHomePageModals
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-FIN55CXA.mjs";
|
|
15
15
|
import {
|
|
16
16
|
EventList,
|
|
17
17
|
EventListItem,
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
orderbookRowLimitDefault,
|
|
29
29
|
resolveEventDetailsSyncKey,
|
|
30
30
|
useCenterOrderbookSpread
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-MDO3NMXP.mjs";
|
|
32
32
|
import {
|
|
33
33
|
CARD_NETWORK_OPTIONS,
|
|
34
34
|
ConnectAccountsStep,
|
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
buildTerminalSummary,
|
|
45
45
|
clearPendingCardSession,
|
|
46
46
|
getPendingCardSession
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-GUYFQP7L.mjs";
|
|
48
48
|
import {
|
|
49
49
|
AggNotificationEventsProvider,
|
|
50
50
|
DEPOSIT_MODAL_OPEN_EVENT,
|
|
@@ -59,7 +59,7 @@ import {
|
|
|
59
59
|
requestAggWithdrawModalOpen,
|
|
60
60
|
useClaimWinnings,
|
|
61
61
|
useResolvedMarketClaim
|
|
62
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-3FLLEJFM.mjs";
|
|
63
63
|
import {
|
|
64
64
|
SETTLEMENT_SECTION_ID,
|
|
65
65
|
Settlement,
|
|
@@ -77,10 +77,10 @@ import {
|
|
|
77
77
|
resolveOrderBookRows,
|
|
78
78
|
resolveUnifiedOrderBookEntries,
|
|
79
79
|
useEventTradingContext
|
|
80
|
-
} from "./chunk-
|
|
80
|
+
} from "./chunk-G5Y45GIA.mjs";
|
|
81
81
|
import {
|
|
82
82
|
GeoBlockBanner
|
|
83
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-G5BXCT5Y.mjs";
|
|
84
84
|
import {
|
|
85
85
|
AGG_DEFAULT_URL,
|
|
86
86
|
AGG_DOCS_URL,
|
|
@@ -201,7 +201,7 @@ import {
|
|
|
201
201
|
useOptionalToast,
|
|
202
202
|
useToast,
|
|
203
203
|
venueLogoNames
|
|
204
|
-
} from "./chunk-
|
|
204
|
+
} from "./chunk-2ET5CXOU.mjs";
|
|
205
205
|
|
|
206
206
|
// src/notifications/agg-toast-provider.tsx
|
|
207
207
|
import { jsx } from "react/jsx-runtime";
|
package/dist/modals.mjs
CHANGED
|
@@ -14,11 +14,11 @@ import {
|
|
|
14
14
|
buildTerminalSummary,
|
|
15
15
|
clearPendingCardSession,
|
|
16
16
|
getPendingCardSession
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-GUYFQP7L.mjs";
|
|
18
18
|
import {
|
|
19
19
|
GeoBlockBanner
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-G5BXCT5Y.mjs";
|
|
21
|
+
import "./chunk-2ET5CXOU.mjs";
|
|
22
22
|
export {
|
|
23
23
|
CARD_NETWORK_OPTIONS,
|
|
24
24
|
ConnectAccountsStep,
|
package/dist/pages.js
CHANGED
|
@@ -6823,6 +6823,12 @@ var Search = ({
|
|
|
6823
6823
|
q: shouldFetchResults ? debouncedSearchValue : "",
|
|
6824
6824
|
type: "events",
|
|
6825
6825
|
categoryIds,
|
|
6826
|
+
// Server-side open-only: without it a query whose top results are
|
|
6827
|
+
// resolved history (recurring series) returns a full page that
|
|
6828
|
+
// filterOpenEvents below then empties — rendering "no results" for
|
|
6829
|
+
// markets that exist. filterOpenEvents stays as the residual guard for
|
|
6830
|
+
// events with no open child markets, which the server doesn't check.
|
|
6831
|
+
status: [import_hooks27.MarketStatus.open],
|
|
6826
6832
|
limit: limit != null ? limit : DEFAULT_SEARCH_LIMIT,
|
|
6827
6833
|
enabled: shouldFetchResults
|
|
6828
6834
|
});
|
|
@@ -21006,6 +21012,7 @@ var import_react37 = require("react");
|
|
|
21006
21012
|
|
|
21007
21013
|
// src/pages/event-market/sports-event-market.utils.ts
|
|
21008
21014
|
var SPORTS_MARKET_TYPE_KEYS = [
|
|
21015
|
+
"to_advance",
|
|
21009
21016
|
"moneyline",
|
|
21010
21017
|
"spread",
|
|
21011
21018
|
"total",
|
|
@@ -21147,6 +21154,7 @@ var SPORTS_PERIOD_ORDER = [
|
|
|
21147
21154
|
"other"
|
|
21148
21155
|
];
|
|
21149
21156
|
var SPORTS_MARKET_TYPE_ORDER = [
|
|
21157
|
+
"to_advance",
|
|
21150
21158
|
"moneyline",
|
|
21151
21159
|
"spread",
|
|
21152
21160
|
"total",
|
|
@@ -21245,6 +21253,9 @@ var resolveFallbackSportsMarketCategory = (market) => {
|
|
|
21245
21253
|
return null;
|
|
21246
21254
|
};
|
|
21247
21255
|
var resolveMarketSectionTabKey = (market) => {
|
|
21256
|
+
if (normalizeSportsMarketType(market.sportsMarketType) === "to_advance") {
|
|
21257
|
+
return "game_lines";
|
|
21258
|
+
}
|
|
21248
21259
|
const normalizedCategory = normalizeSportsMarketCategory(market.marketCategory);
|
|
21249
21260
|
const fallbackCategory = !normalizedCategory || normalizedCategory === "other" ? resolveFallbackSportsMarketCategory(market) : null;
|
|
21250
21261
|
const category = fallbackCategory != null ? fallbackCategory : normalizedCategory;
|
|
@@ -21288,25 +21299,32 @@ var resolveSportsSectionMarkets = ({
|
|
|
21288
21299
|
return [...filteredSectionMarkets, ...strayOtherMarkets];
|
|
21289
21300
|
}
|
|
21290
21301
|
if (tabKey !== "game_lines") return filteredSectionMarkets;
|
|
21291
|
-
const
|
|
21302
|
+
const dedupeEventMarketsOfType = (type) => {
|
|
21292
21303
|
const dedupedMarkets = [];
|
|
21293
|
-
const
|
|
21304
|
+
const seenKeys = /* @__PURE__ */ new Set();
|
|
21294
21305
|
for (const market of eventMarkets) {
|
|
21295
|
-
if (normalizeSportsMarketType(market.sportsMarketType) !==
|
|
21306
|
+
if (normalizeSportsMarketType(market.sportsMarketType) !== type || resolveMarketSectionTabKey(market) !== "game_lines") {
|
|
21296
21307
|
continue;
|
|
21297
21308
|
}
|
|
21298
|
-
const
|
|
21299
|
-
if (
|
|
21300
|
-
|
|
21309
|
+
const key = resolveSportsMarketAggKey(market) || market.id;
|
|
21310
|
+
if (seenKeys.has(key)) continue;
|
|
21311
|
+
seenKeys.add(key);
|
|
21301
21312
|
dedupedMarkets.push(market);
|
|
21302
21313
|
}
|
|
21303
21314
|
return dedupedMarkets;
|
|
21304
|
-
}
|
|
21305
|
-
|
|
21306
|
-
const
|
|
21315
|
+
};
|
|
21316
|
+
const eventMoneylineMarkets = dedupeEventMarketsOfType("moneyline");
|
|
21317
|
+
const eventToAdvanceMarkets = dedupeEventMarketsOfType("to_advance");
|
|
21318
|
+
const sectionWithoutAdvance = filteredSectionMarkets.filter(
|
|
21319
|
+
(market) => normalizeSportsMarketType(market.sportsMarketType) !== "to_advance"
|
|
21320
|
+
);
|
|
21321
|
+
if (eventMoneylineMarkets.length === 0) {
|
|
21322
|
+
return [...eventToAdvanceMarkets, ...sectionWithoutAdvance];
|
|
21323
|
+
}
|
|
21324
|
+
const lineSectionMarkets = sectionWithoutAdvance.filter(
|
|
21307
21325
|
(market) => normalizeSportsMarketType(market.sportsMarketType) !== "moneyline" && resolveMarketSectionTabKey(market) === "game_lines"
|
|
21308
21326
|
);
|
|
21309
|
-
return [...eventMoneylineMarkets, ...lineSectionMarkets];
|
|
21327
|
+
return [...eventToAdvanceMarkets, ...eventMoneylineMarkets, ...lineSectionMarkets];
|
|
21310
21328
|
};
|
|
21311
21329
|
var resolveSportsMarketCardVariant = (market) => {
|
|
21312
21330
|
var _a;
|
|
@@ -21396,6 +21414,9 @@ var resolveDisplayGroupFamilyKey = (market) => {
|
|
|
21396
21414
|
if (isBinarySportsMoneylineMarket(market)) {
|
|
21397
21415
|
return `${period}|moneyline|${marketCategory}`;
|
|
21398
21416
|
}
|
|
21417
|
+
if (sportsMarketType === "to_advance") {
|
|
21418
|
+
return `${period}|to_advance`;
|
|
21419
|
+
}
|
|
21399
21420
|
const lineFamily = resolveSportsLineFamilyKey(market);
|
|
21400
21421
|
if (sportsMarketType === "spread") {
|
|
21401
21422
|
const spreadFamily = resolveSpreadFamilyKey(market);
|
|
@@ -21431,6 +21452,7 @@ var resolveDisplayGroupTitle = (market, groupMarkets = [market]) => {
|
|
|
21431
21452
|
const sportsMarketType = normalizeSportsMarketType(market.sportsMarketType);
|
|
21432
21453
|
const question = toTrimmedString(market.question);
|
|
21433
21454
|
if (isBinarySportsMoneylineMarket(market)) return "Moneyline";
|
|
21455
|
+
if (sportsMarketType === "to_advance") return "Team to Advance";
|
|
21434
21456
|
if (sportsMarketType === "spread") return "Spreads";
|
|
21435
21457
|
if (!question) {
|
|
21436
21458
|
return sportsMarketType != null ? sportsMarketType : market.id;
|
|
@@ -21473,7 +21495,16 @@ var buildSportsMarketDisplayGroups = (markets) => {
|
|
|
21473
21495
|
}
|
|
21474
21496
|
const groups = Array.from(groupsByKey.entries()).map(([id, groupMarkets]) => {
|
|
21475
21497
|
var _a2;
|
|
21476
|
-
const
|
|
21498
|
+
const isToAdvanceGroup = groupMarkets.some(
|
|
21499
|
+
(market) => normalizeSportsMarketType(market.sportsMarketType) === "to_advance"
|
|
21500
|
+
);
|
|
21501
|
+
const orderedMarkets = isToAdvanceGroup ? [...groupMarkets].sort((left, right) => {
|
|
21502
|
+
var _a3, _b;
|
|
21503
|
+
const leftSingle = resolveSportsMarketAggKey(left).endsWith("_adv") ? 0 : 1;
|
|
21504
|
+
const rightSingle = resolveSportsMarketAggKey(right).endsWith("_adv") ? 0 : 1;
|
|
21505
|
+
if (leftSingle !== rightSingle) return leftSingle - rightSingle;
|
|
21506
|
+
return ((_a3 = right.volume) != null ? _a3 : 0) - ((_b = left.volume) != null ? _b : 0);
|
|
21507
|
+
}) : sortMarketsByLineValue(groupMarkets);
|
|
21477
21508
|
const firstMarket = orderedMarkets[0];
|
|
21478
21509
|
const sportsMarketType = normalizeSportsMarketType(firstMarket == null ? void 0 : firstMarket.sportsMarketType);
|
|
21479
21510
|
const marketCategory = normalizeSportsMarketCategory(firstMarket == null ? void 0 : firstMarket.marketCategory);
|
|
@@ -21581,6 +21612,7 @@ var resolveHighestVolumeIndex = (markets) => {
|
|
|
21581
21612
|
return bestIndex;
|
|
21582
21613
|
};
|
|
21583
21614
|
var resolveSlideKind = (group) => {
|
|
21615
|
+
if (group.sportsMarketType === "to_advance") return "to_advance";
|
|
21584
21616
|
if (group.sportsMarketType === "moneyline") return "moneyline";
|
|
21585
21617
|
if (group.sportsMarketType === "spread") return "spread";
|
|
21586
21618
|
if (group.sportsMarketType === "total") return "total";
|
package/dist/pages.mjs
CHANGED
|
@@ -8,17 +8,17 @@ import {
|
|
|
8
8
|
UserProfilePage,
|
|
9
9
|
buildAggTxExplorerHref,
|
|
10
10
|
useHomePageModals
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-FIN55CXA.mjs";
|
|
12
|
+
import "./chunk-MDO3NMXP.mjs";
|
|
13
13
|
import {
|
|
14
14
|
DEPOSIT_MODAL_OPEN_EVENT,
|
|
15
15
|
WITHDRAW_MODAL_OPEN_EVENT,
|
|
16
16
|
requestAggDepositModalOpen,
|
|
17
17
|
requestAggWithdrawModalOpen
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-3FLLEJFM.mjs";
|
|
19
|
+
import "./chunk-G5Y45GIA.mjs";
|
|
20
|
+
import "./chunk-G5BXCT5Y.mjs";
|
|
21
|
+
import "./chunk-2ET5CXOU.mjs";
|
|
22
22
|
export {
|
|
23
23
|
DEPOSIT_MODAL_OPEN_EVENT,
|
|
24
24
|
EventMarketPage,
|
package/dist/primitives.js
CHANGED
|
@@ -7173,6 +7173,12 @@ var Search = ({
|
|
|
7173
7173
|
q: shouldFetchResults ? debouncedSearchValue : "",
|
|
7174
7174
|
type: "events",
|
|
7175
7175
|
categoryIds,
|
|
7176
|
+
// Server-side open-only: without it a query whose top results are
|
|
7177
|
+
// resolved history (recurring series) returns a full page that
|
|
7178
|
+
// filterOpenEvents below then empties — rendering "no results" for
|
|
7179
|
+
// markets that exist. filterOpenEvents stays as the residual guard for
|
|
7180
|
+
// events with no open child markets, which the server doesn't check.
|
|
7181
|
+
status: [import_hooks27.MarketStatus.open],
|
|
7176
7182
|
limit: limit != null ? limit : DEFAULT_SEARCH_LIMIT,
|
|
7177
7183
|
enabled: shouldFetchResults
|
|
7178
7184
|
});
|
package/dist/primitives.mjs
CHANGED
package/dist/trading.mjs
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
parseVenue,
|
|
9
9
|
useClaimWinnings,
|
|
10
10
|
useResolvedMarketClaim
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-3FLLEJFM.mjs";
|
|
12
12
|
import {
|
|
13
13
|
SETTLEMENT_SECTION_ID,
|
|
14
14
|
Settlement,
|
|
@@ -23,9 +23,9 @@ import {
|
|
|
23
23
|
getTradingValueLabel,
|
|
24
24
|
getTradingVenueLabel,
|
|
25
25
|
useEventTradingContext
|
|
26
|
-
} from "./chunk-
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-
|
|
26
|
+
} from "./chunk-G5Y45GIA.mjs";
|
|
27
|
+
import "./chunk-G5BXCT5Y.mjs";
|
|
28
|
+
import "./chunk-2ET5CXOU.mjs";
|
|
29
29
|
export {
|
|
30
30
|
PlaceOrder,
|
|
31
31
|
PlaceOrderFailureView,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { VenueEventWithMarkets, VenueMarket } from "@agg-build/hooks";
|
|
2
2
|
export declare const SPORTS_SECTION_TAB_KEYS: readonly ["game_lines", "halves", "exact_score", "corners", "goals", "assists", "shots", "other"];
|
|
3
3
|
export type SportsSectionTabKey = (typeof SPORTS_SECTION_TAB_KEYS)[number];
|
|
4
|
-
export declare const SPORTS_MARKET_TYPE_KEYS: readonly ["moneyline", "spread", "total", "prop", "completion", "other"];
|
|
4
|
+
export declare const SPORTS_MARKET_TYPE_KEYS: readonly ["to_advance", "moneyline", "spread", "total", "prop", "completion", "other"];
|
|
5
5
|
export type SportsMarketTypeKey = (typeof SPORTS_MARKET_TYPE_KEYS)[number];
|
|
6
6
|
export declare const SPORTS_PERIOD_KEYS: readonly ["full", "1h", "2h", "q1", "q2", "q3", "q4", "ot", "first_inning", "second_inning", "third_inning", "first_5_innings", "other"];
|
|
7
7
|
/**
|
|
@@ -81,7 +81,7 @@ export declare const normalizeSportsMarketGroup: (value: string | null | undefin
|
|
|
81
81
|
* recognizable grouping metadata, so the page can fall back to the default,
|
|
82
82
|
* ungrouped market list instead of inventing an empty tab.
|
|
83
83
|
*/
|
|
84
|
-
export declare const resolveMarketSectionTabKey: (market: Pick<VenueMarket, "marketGroup" | "marketCategory" | "marketSubtype" | "question">) => SportsSectionTabKey | null;
|
|
84
|
+
export declare const resolveMarketSectionTabKey: (market: Pick<VenueMarket, "marketGroup" | "marketCategory" | "marketSubtype" | "question" | "sportsMarketType">) => SportsSectionTabKey | null;
|
|
85
85
|
export declare const resolveSportsSectionFilters: (key: SportsSectionTabKey) => {
|
|
86
86
|
marketGroup?: SportsMarketGroupKey[];
|
|
87
87
|
marketCategory?: SportsMarketCategoryKey[];
|
|
@@ -134,7 +134,7 @@ export declare const resolveSpreadOutcomeTeamNames: (activeMarket: VenueMarket,
|
|
|
134
134
|
};
|
|
135
135
|
export declare const buildSportsMarketDisplayGroups: (markets: VenueMarket[]) => SportsMarketDisplayGroup[];
|
|
136
136
|
export declare const groupSportsMarketsByPeriod: (markets: VenueMarket[]) => SportsPeriodGroup[];
|
|
137
|
-
export type SportsGameLineSlideKind = "moneyline" | "spread" | "total" | "other";
|
|
137
|
+
export type SportsGameLineSlideKind = "to_advance" | "moneyline" | "spread" | "total" | "other";
|
|
138
138
|
export type SportsGameLineSlideStop = {
|
|
139
139
|
/** Display value for the ladder chip, e.g. "1.5", "216.5". */
|
|
140
140
|
value: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { VenueEventWithMarkets, VenueMarket } from "@agg-build/hooks";
|
|
2
2
|
export declare const SPORTS_SECTION_TAB_KEYS: readonly ["game_lines", "halves", "exact_score", "corners", "goals", "assists", "shots", "other"];
|
|
3
3
|
export type SportsSectionTabKey = (typeof SPORTS_SECTION_TAB_KEYS)[number];
|
|
4
|
-
export declare const SPORTS_MARKET_TYPE_KEYS: readonly ["moneyline", "spread", "total", "prop", "completion", "other"];
|
|
4
|
+
export declare const SPORTS_MARKET_TYPE_KEYS: readonly ["to_advance", "moneyline", "spread", "total", "prop", "completion", "other"];
|
|
5
5
|
export type SportsMarketTypeKey = (typeof SPORTS_MARKET_TYPE_KEYS)[number];
|
|
6
6
|
export declare const SPORTS_PERIOD_KEYS: readonly ["full", "1h", "2h", "q1", "q2", "q3", "q4", "ot", "first_inning", "second_inning", "third_inning", "first_5_innings", "other"];
|
|
7
7
|
/**
|
|
@@ -81,7 +81,7 @@ export declare const normalizeSportsMarketGroup: (value: string | null | undefin
|
|
|
81
81
|
* recognizable grouping metadata, so the page can fall back to the default,
|
|
82
82
|
* ungrouped market list instead of inventing an empty tab.
|
|
83
83
|
*/
|
|
84
|
-
export declare const resolveMarketSectionTabKey: (market: Pick<VenueMarket, "marketGroup" | "marketCategory" | "marketSubtype" | "question">) => SportsSectionTabKey | null;
|
|
84
|
+
export declare const resolveMarketSectionTabKey: (market: Pick<VenueMarket, "marketGroup" | "marketCategory" | "marketSubtype" | "question" | "sportsMarketType">) => SportsSectionTabKey | null;
|
|
85
85
|
export declare const resolveSportsSectionFilters: (key: SportsSectionTabKey) => {
|
|
86
86
|
marketGroup?: SportsMarketGroupKey[];
|
|
87
87
|
marketCategory?: SportsMarketCategoryKey[];
|
|
@@ -134,7 +134,7 @@ export declare const resolveSpreadOutcomeTeamNames: (activeMarket: VenueMarket,
|
|
|
134
134
|
};
|
|
135
135
|
export declare const buildSportsMarketDisplayGroups: (markets: VenueMarket[]) => SportsMarketDisplayGroup[];
|
|
136
136
|
export declare const groupSportsMarketsByPeriod: (markets: VenueMarket[]) => SportsPeriodGroup[];
|
|
137
|
-
export type SportsGameLineSlideKind = "moneyline" | "spread" | "total" | "other";
|
|
137
|
+
export type SportsGameLineSlideKind = "to_advance" | "moneyline" | "spread" | "total" | "other";
|
|
138
138
|
export type SportsGameLineSlideStop = {
|
|
139
139
|
/** Display value for the ladder chip, e.g. "1.5", "216.5". */
|
|
140
140
|
value: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agg-build/ui",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.1",
|
|
4
4
|
"description": "Pre-built React component library for the AGG prediction market aggregator. Tailwind-based, themeable, with primitives, event surfaces, trading flows, full pages, and modals.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"license": "MIT",
|