@agg-build/ui 1.2.10 → 1.2.11

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 (100) hide show
  1. package/dist/{chunk-5MTIBPDY.mjs → chunk-3ZSNHGAB.mjs} +784 -390
  2. package/dist/{chunk-5PSAIGOT.mjs → chunk-54PCEK6G.mjs} +137 -61
  3. package/dist/{chunk-7JKGAWU5.mjs → chunk-ENAGASVU.mjs} +1538 -1369
  4. package/dist/{chunk-K23CJ5UP.mjs → chunk-J7K2U44E.mjs} +481 -258
  5. package/dist/{chunk-5MDFM2MX.mjs → chunk-NWJHFGBZ.mjs} +1 -1
  6. package/dist/{chunk-QFW5NDJ6.mjs → chunk-SJLHOAKK.mjs} +1001 -1015
  7. package/dist/{chunk-XKADJNAJ.mjs → chunk-YP75TIY6.mjs} +601 -326
  8. package/dist/events.js +1988 -1549
  9. package/dist/events.mjs +3 -3
  10. package/dist/index.js +5343 -4227
  11. package/dist/index.mjs +56 -50
  12. package/dist/modals.js +3262 -2384
  13. package/dist/modals.mjs +3 -3
  14. package/dist/pages.js +3619 -2691
  15. package/dist/pages.mjs +6 -6
  16. package/dist/primitives.js +992 -918
  17. package/dist/primitives.mjs +5 -1
  18. package/dist/styles.css +1 -1
  19. package/dist/tailwind.css +1 -1
  20. package/dist/trading.js +1360 -1129
  21. package/dist/trading.mjs +4 -4
  22. package/dist/types/deposit/deposit-modal.types.d.mts +10 -1
  23. package/dist/types/deposit/deposit-modal.types.d.ts +10 -1
  24. package/dist/types/deposit/index.d.mts +1 -1
  25. package/dist/types/deposit/index.d.ts +1 -1
  26. package/dist/types/deposit/steps/crypto-transfer.d.mts +1 -2
  27. package/dist/types/deposit/steps/crypto-transfer.d.ts +1 -2
  28. package/dist/types/deposit/steps/deposit-method.d.mts +2 -1
  29. package/dist/types/deposit/steps/deposit-method.d.ts +2 -1
  30. package/dist/types/events/item/event-list-item.types.d.mts +3 -1
  31. package/dist/types/events/item/event-list-item.types.d.ts +3 -1
  32. package/dist/types/events/item/event-list-item.utils.d.mts +26 -2
  33. package/dist/types/events/item/event-list-item.utils.d.ts +26 -2
  34. package/dist/types/events/item-details/event-list-item-details.types.d.mts +30 -1
  35. package/dist/types/events/item-details/event-list-item-details.types.d.ts +30 -1
  36. package/dist/types/events/market-details/index.d.mts +1 -1
  37. package/dist/types/events/market-details/index.d.ts +1 -1
  38. package/dist/types/events/market-details/market-details.types.d.mts +27 -2
  39. package/dist/types/events/market-details/market-details.types.d.ts +27 -2
  40. package/dist/types/events/market-details/market-details.utils.d.mts +18 -4
  41. package/dist/types/events/market-details/market-details.utils.d.ts +18 -4
  42. package/dist/types/events/market-details/orderbook-aggregation.d.mts +30 -10
  43. package/dist/types/events/market-details/orderbook-aggregation.d.ts +30 -10
  44. package/dist/types/events/shared/chart-auto-fallback.d.mts +43 -0
  45. package/dist/types/events/shared/chart-auto-fallback.d.ts +43 -0
  46. package/dist/types/events/shared/display-outcome-price.d.mts +14 -0
  47. package/dist/types/events/shared/display-outcome-price.d.ts +14 -0
  48. package/dist/types/events/shared/display-outcome-venue.d.mts +30 -0
  49. package/dist/types/events/shared/display-outcome-venue.d.ts +30 -0
  50. package/dist/types/events/shared/display-reference-price.d.mts +4 -0
  51. package/dist/types/events/shared/display-reference-price.d.ts +4 -0
  52. package/dist/types/events/shared/select-outcome-price.d.mts +21 -0
  53. package/dist/types/events/shared/select-outcome-price.d.ts +21 -0
  54. package/dist/types/pages/user-profile/components/available-balance-card.d.mts +2 -1
  55. package/dist/types/pages/user-profile/components/available-balance-card.d.ts +2 -1
  56. package/dist/types/pages/user-profile/components/positions-value-card.d.mts +2 -1
  57. package/dist/types/pages/user-profile/components/positions-value-card.d.ts +2 -1
  58. package/dist/types/pages/user-profile/index.d.mts +2 -2
  59. package/dist/types/pages/user-profile/index.d.ts +2 -2
  60. package/dist/types/pages/user-profile/user-profile.types.d.mts +54 -1
  61. package/dist/types/pages/user-profile/user-profile.types.d.ts +54 -1
  62. package/dist/types/primitives/chart/chart.utils.d.mts +9 -10
  63. package/dist/types/primitives/chart/chart.utils.d.ts +9 -10
  64. package/dist/types/primitives/icon/index.d.mts +2 -1
  65. package/dist/types/primitives/icon/index.d.ts +2 -1
  66. package/dist/types/primitives/icon/registry.d.mts +8 -0
  67. package/dist/types/primitives/icon/registry.d.ts +8 -0
  68. package/dist/types/primitives/icon/svg/circle-xmark.d.mts +5 -0
  69. package/dist/types/primitives/icon/svg/circle-xmark.d.ts +5 -0
  70. package/dist/types/primitives/icon/svg/spinner.d.mts +5 -0
  71. package/dist/types/primitives/icon/svg/spinner.d.ts +5 -0
  72. package/dist/types/primitives/toast/index.d.mts +2 -0
  73. package/dist/types/primitives/toast/index.d.ts +2 -0
  74. package/dist/types/primitives/tooltip/tooltip.types.d.mts +1 -0
  75. package/dist/types/primitives/tooltip/tooltip.types.d.ts +1 -0
  76. package/dist/types/primitives/typography/index.d.mts +1 -1
  77. package/dist/types/primitives/typography/index.d.ts +1 -1
  78. package/dist/types/primitives/typography/typography.types.d.mts +2 -0
  79. package/dist/types/primitives/typography/typography.types.d.ts +2 -0
  80. package/dist/types/shared/transfer-fee-summary.d.mts +10 -0
  81. package/dist/types/shared/transfer-fee-summary.d.ts +10 -0
  82. package/dist/types/shared/utils.d.mts +3 -0
  83. package/dist/types/shared/utils.d.ts +3 -0
  84. package/dist/types/trading/place-order/index.d.mts +1 -1
  85. package/dist/types/trading/place-order/index.d.ts +1 -1
  86. package/dist/types/trading/place-order/index.place-order.execution-steps.d.mts +9 -0
  87. package/dist/types/trading/place-order/index.place-order.execution-steps.d.ts +9 -0
  88. package/dist/types/trading/place-order/index.place-order.types.d.mts +15 -2
  89. package/dist/types/trading/place-order/index.place-order.types.d.ts +15 -2
  90. package/dist/types/trading/place-order/index.place-order.utils.d.mts +49 -6
  91. package/dist/types/trading/place-order/index.place-order.utils.d.ts +49 -6
  92. package/dist/types/withdraw/index.d.mts +1 -1
  93. package/dist/types/withdraw/index.d.ts +1 -1
  94. package/dist/types/withdraw/steps/withdraw-success.d.mts +13 -7
  95. package/dist/types/withdraw/steps/withdraw-success.d.ts +13 -7
  96. package/dist/types/withdraw/steps/withdraw-success.utils.d.mts +2 -0
  97. package/dist/types/withdraw/steps/withdraw-success.utils.d.ts +2 -0
  98. package/dist/types/withdraw/withdraw-modal.types.d.mts +5 -0
  99. package/dist/types/withdraw/withdraw-modal.types.d.ts +5 -0
  100. package/package.json +3 -3
@@ -17,13 +17,13 @@ import {
17
17
  selectPrimaryVenueMarket,
18
18
  skeletonViews,
19
19
  sortOutcomes
20
- } from "./chunk-QFW5NDJ6.mjs";
20
+ } from "./chunk-SJLHOAKK.mjs";
21
21
 
22
22
  // src/trading/trading-context/index.tsx
23
23
  import { useEventTradingContext } from "@agg-build/hooks";
24
24
 
25
25
  // src/events/orderbook/orderbook.utils.ts
26
- import { safeParse, hasShape } from "@agg-build/sdk";
26
+ import { hasShape, safeParse } from "@agg-build/sdk";
27
27
  var isOrderBookLevel = (v) => hasShape(v, {
28
28
  price: (p) => typeof p === "number" && p >= 0 && p <= 1,
29
29
  size: (s) => typeof s === "number" && s >= 0
@@ -449,6 +449,31 @@ var Settlement = ({
449
449
  };
450
450
  Settlement.displayName = "Settlement";
451
451
 
452
+ // src/events/shared/select-outcome-price.ts
453
+ var selectOutcomePrice = ({
454
+ outcomeId,
455
+ selection,
456
+ bestPrices,
457
+ bestMidpointsByOutcomeId,
458
+ livePrices,
459
+ fallbackPrice
460
+ }) => {
461
+ var _a, _b;
462
+ if (!outcomeId) return void 0;
463
+ if (selection === "buy") {
464
+ const bestAsk = (_a = bestPrices == null ? void 0 : bestPrices.get(outcomeId)) == null ? void 0 : _a.bestAsk;
465
+ if (bestAsk != null) return bestAsk;
466
+ } else if (selection === "sell") {
467
+ const bestBid = (_b = bestPrices == null ? void 0 : bestPrices.get(outcomeId)) == null ? void 0 : _b.bestBid;
468
+ if (bestBid != null) return bestBid;
469
+ }
470
+ const livePrice = livePrices == null ? void 0 : livePrices.get(outcomeId);
471
+ if (livePrice != null) return livePrice;
472
+ const midpointPrice = bestMidpointsByOutcomeId == null ? void 0 : bestMidpointsByOutcomeId.get(outcomeId);
473
+ if (midpointPrice != null) return midpointPrice;
474
+ return fallbackPrice != null ? fallbackPrice : void 0;
475
+ };
476
+
452
477
  // src/events/item-details/event-list-item-details.utils.ts
453
478
  import dayjs2 from "dayjs";
454
479
  var compareOutcomeSelectorLabels = (leftLabel, rightLabel) => {
@@ -507,49 +532,6 @@ var isDateLikeLabel = (value) => {
507
532
  if (!value.trim()) return false;
508
533
  return dayjs2(value).isValid();
509
534
  };
510
- var getTimeWindowByRange = (range) => {
511
- const endTs = dayjs2().unix();
512
- if (range === "1H") {
513
- return {
514
- startTs: dayjs2.unix(endTs).subtract(1, "hour").unix(),
515
- endTs,
516
- intervalMinutes: 5
517
- };
518
- }
519
- if (range === "6H") {
520
- return {
521
- startTs: dayjs2.unix(endTs).subtract(6, "hour").unix(),
522
- endTs,
523
- intervalMinutes: 15
524
- };
525
- }
526
- if (range === "1D") {
527
- return {
528
- startTs: dayjs2.unix(endTs).subtract(1, "day").unix(),
529
- endTs,
530
- intervalMinutes: 30
531
- };
532
- }
533
- if (range === "1W") {
534
- return {
535
- startTs: dayjs2.unix(endTs).subtract(7, "day").unix(),
536
- endTs,
537
- intervalMinutes: 60
538
- };
539
- }
540
- if (range === "1M") {
541
- return {
542
- startTs: dayjs2.unix(endTs).subtract(1, "month").unix(),
543
- endTs,
544
- intervalMinutes: 240
545
- };
546
- }
547
- return {
548
- startTs: dayjs2.unix(endTs).subtract(6, "month").unix(),
549
- endTs,
550
- intervalMinutes: 720
551
- };
552
- };
553
535
  var matchOutcomeByLabel = (outcome, selectedOutcomeLabel) => {
554
536
  const normalizedSelectedLabel = normalizeLabel(selectedOutcomeLabel);
555
537
  const semanticSelectedLabel = toSemanticLabel(selectedOutcomeLabel);
@@ -832,13 +814,13 @@ var resolveMarketDetailsOutcomeLabels = (venueMarkets) => {
832
814
  const label = outcome.label.trim();
833
815
  if (!label) return;
834
816
  const key = normalizeLabel2(label);
835
- const title = ((_a2 = outcome.title) != null ? _a2 : "").trim() || label;
817
+ const title = outcome.title ? (_a2 = outcome.title) == null ? void 0 : _a2.trim() : null;
836
818
  const existing = labels.get(key);
837
819
  if (!existing) {
838
820
  labels.set(key, { label, title });
839
821
  return;
840
822
  }
841
- if (existing.title === existing.label && title !== label) {
823
+ if (existing.title == null && title != null) {
842
824
  labels.set(key, __spreadProps(__spreadValues({}, existing), { title }));
843
825
  }
844
826
  };
@@ -860,6 +842,38 @@ var resolveInitialOutcomeLabel = (labels, defaultOutcomeLabel) => {
860
842
  }
861
843
  return labels[0];
862
844
  };
845
+ var resolveScopedSelectedOutcome = ({
846
+ venueMarkets,
847
+ selectedOutcomeId,
848
+ defaultOutcomeLabel,
849
+ suppressFallbackWhenSelectedOutcomeOutOfScope
850
+ }) => {
851
+ var _a, _b;
852
+ if (selectedOutcomeId) {
853
+ const matchingOutcome = venueMarkets.flatMap((market) => market.venueMarketOutcomes).find((outcome) => outcome.id === selectedOutcomeId);
854
+ if (matchingOutcome) {
855
+ return {
856
+ outcomeId: matchingOutcome.id,
857
+ outcomeLabel: matchingOutcome.label
858
+ };
859
+ }
860
+ if (suppressFallbackWhenSelectedOutcomeOutOfScope) {
861
+ return {
862
+ outcomeId: null,
863
+ outcomeLabel: void 0
864
+ };
865
+ }
866
+ }
867
+ const outcomeLabels = resolveDisplayOutcomeLabels(
868
+ resolveMarketDetailsOutcomeLabels(venueMarkets).map((outcome) => outcome.label)
869
+ );
870
+ const outcomeLabel = resolveInitialOutcomeLabel(outcomeLabels, defaultOutcomeLabel);
871
+ const outcomeId = outcomeLabel ? (_b = (_a = resolveOutcomesByVenue(venueMarkets, outcomeLabel)[0]) == null ? void 0 : _a.outcome.id) != null ? _b : null : null;
872
+ return {
873
+ outcomeId,
874
+ outcomeLabel
875
+ };
876
+ };
863
877
  var resolveAverageProbabilityByLabel = (venueMarkets, labels) => {
864
878
  return new Map(
865
879
  labels.map((label) => {
@@ -886,16 +900,25 @@ var resolveOutcomeTone = (label, index) => {
886
900
  }
887
901
  return index === 0 ? "positive" : "negative";
888
902
  };
889
- var resolveHeaderOutcomeItems = (venueMarkets) => {
903
+ var resolveHeaderOutcomeItems = (venueMarkets, scopedMarket) => {
890
904
  const outcomes = resolveMarketDetailsOutcomeLabels(venueMarkets);
891
905
  const labels = resolveDisplayOutcomeLabels(outcomes.map((outcome) => outcome.label));
892
906
  const probabilityByLabel = resolveAverageProbabilityByLabel(venueMarkets, labels);
893
907
  return labels.slice(0, 2).map((label, index) => {
894
- var _a, _b, _c, _d, _e, _f, _g, _h;
908
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
909
+ const scopedOutcome = (_a = scopedMarket == null ? void 0 : scopedMarket.venueMarketOutcomes) == null ? void 0 : _a.find(
910
+ (outcome) => normalizeLabel2(outcome.label) === normalizeLabel2(label)
911
+ );
912
+ const scopedTitle = ((_b = scopedOutcome == null ? void 0 : scopedOutcome.title) == null ? void 0 : _b.trim()) || null;
913
+ const fallbackTitle = (_d = (_c = outcomes.find((outcome) => normalizeLabel2(outcome.label) === normalizeLabel2(label))) == null ? void 0 : _c.title) != null ? _d : null;
914
+ const title = scopedOutcome ? scopedTitle : fallbackTitle;
915
+ const fallbackOutcomeByVenue = resolveOutcomesByVenue(venueMarkets, label)[0];
916
+ const outcomeId = (_f = (_e = scopedOutcome == null ? void 0 : scopedOutcome.id) != null ? _e : fallbackOutcomeByVenue == null ? void 0 : fallbackOutcomeByVenue.outcome.id) != null ? _f : "";
917
+ const venue = (_j = (_i = (_g = scopedMarket == null ? void 0 : scopedMarket.venue) != null ? _g : fallbackOutcomeByVenue == null ? void 0 : fallbackOutcomeByVenue.venue) != null ? _i : (_h = venueMarkets[0]) == null ? void 0 : _h.venue) != null ? _j : "polymarket";
895
918
  return {
896
- title: (_b = (_a = outcomes.find((outcome) => normalizeLabel2(outcome.label) === normalizeLabel2(label))) == null ? void 0 : _a.title) != null ? _b : label,
897
- id: (_d = (_c = resolveOutcomesByVenue(venueMarkets, label)[0]) == null ? void 0 : _c.outcome.id) != null ? _d : "",
898
- venue: (_h = (_g = (_e = resolveOutcomesByVenue(venueMarkets, label)[0]) == null ? void 0 : _e.venue) != null ? _g : (_f = venueMarkets[0]) == null ? void 0 : _f.venue) != null ? _h : "polymarket",
919
+ title,
920
+ id: outcomeId,
921
+ venue,
899
922
  label,
900
923
  probability: probabilityByLabel.get(label),
901
924
  tone: resolveOutcomeTone(label, index)
@@ -906,9 +929,10 @@ var resolveSubtitle = ({
906
929
  venueMarkets,
907
930
  volume,
908
931
  formatCompactCurrency,
909
- labels
932
+ labels,
933
+ tradableVenues
910
934
  }) => {
911
- const { venueCount } = getVenueSummary(venueMarkets);
935
+ const { venueCount } = getVenueSummary(venueMarkets, { tradableVenues });
912
936
  const parts = [
913
937
  `${venueCount} ${venueCount === 1 ? labels.marketDetails.meta.venueSingular : labels.marketDetails.meta.venuePlural}`
914
938
  ];
@@ -956,21 +980,24 @@ var buildMarketDetailsModel = ({
956
980
  title,
957
981
  image,
958
982
  formatCompactCurrency,
959
- labels
983
+ labels,
984
+ tradableVenues
960
985
  }) => {
961
- var _a, _b;
986
+ var _a, _b, _c, _d;
962
987
  const market = resolveMarketFromVenueMarkets(venueMarkets, marketId);
963
988
  if (!market) return void 0;
964
989
  const primaryVenueMarket = selectPrimaryVenueMarket(market.venueMarkets);
965
990
  if (!primaryVenueMarket) return void 0;
966
- const resolvedTitle = (title == null ? void 0 : title.trim()) || primaryVenueMarket.question || market.question;
967
- const resolvedImage = (_a = typeof image === "string" && image.trim() ? image : void 0) != null ? _a : typeof primaryVenueMarket.image === "string" && primaryVenueMarket.image.trim() ? primaryVenueMarket.image : void 0;
968
- const resolvedVolume = typeof market.volume === "number" ? market.volume : (_b = primaryVenueMarket.volume) != null ? _b : void 0;
991
+ const scopedVenueMarket = (_a = market.venueMarkets.find((venueMarket) => venueMarket.id === market.id)) != null ? _a : primaryVenueMarket;
992
+ const resolvedTitle = (title == null ? void 0 : title.trim()) || scopedVenueMarket.question || market.question || primaryVenueMarket.question;
993
+ const resolvedImage = (_c = (_b = typeof image === "string" && image.trim() ? image : void 0) != null ? _b : typeof scopedVenueMarket.image === "string" && scopedVenueMarket.image.trim() ? scopedVenueMarket.image : void 0) != null ? _c : typeof primaryVenueMarket.image === "string" && primaryVenueMarket.image.trim() ? primaryVenueMarket.image : void 0;
994
+ const resolvedVolume = typeof market.volume === "number" ? market.volume : (_d = primaryVenueMarket.volume) != null ? _d : void 0;
969
995
  const subtitle = resolveSubtitle({
970
996
  venueMarkets: market.venueMarkets,
971
997
  volume: resolvedVolume,
972
998
  formatCompactCurrency,
973
- labels
999
+ labels,
1000
+ tradableVenues
974
1001
  });
975
1002
  const outcomeLabels = resolveDisplayOutcomeLabels(
976
1003
  resolveMarketDetailsOutcomeLabels(market.venueMarkets).map((outcome) => outcome.label)
@@ -987,6 +1014,53 @@ var buildMarketDetailsModel = ({
987
1014
  };
988
1015
  };
989
1016
 
1017
+ // src/events/shared/display-reference-price.ts
1018
+ var getDisplayReferencePrice = ({
1019
+ bestMidpoint,
1020
+ fallbackPrice
1021
+ }) => {
1022
+ var _a;
1023
+ return (_a = bestMidpoint != null ? bestMidpoint : fallbackPrice) != null ? _a : void 0;
1024
+ };
1025
+
1026
+ // src/events/shared/display-outcome-price.ts
1027
+ var normalizeOutcomeLabel = (label) => {
1028
+ return typeof label === "string" ? label.trim().toLowerCase() : "";
1029
+ };
1030
+ var getDisplayOutcomePrice = ({
1031
+ outcomeId,
1032
+ outcomeLabel,
1033
+ selection,
1034
+ bestPrices,
1035
+ bestMidpoint,
1036
+ bestMidpointsByOutcomeId,
1037
+ livePrices,
1038
+ fallbackPrice
1039
+ }) => {
1040
+ var _a;
1041
+ if (selection && outcomeId) {
1042
+ return selectOutcomePrice({
1043
+ outcomeId,
1044
+ selection,
1045
+ bestPrices,
1046
+ bestMidpointsByOutcomeId,
1047
+ livePrices,
1048
+ fallbackPrice
1049
+ });
1050
+ }
1051
+ const livePrice = outcomeId ? livePrices == null ? void 0 : livePrices.get(outcomeId) : void 0;
1052
+ if (livePrice != null) return livePrice;
1053
+ const bestOutcomePrice = outcomeId ? bestMidpointsByOutcomeId == null ? void 0 : bestMidpointsByOutcomeId.get(outcomeId) : void 0;
1054
+ const resolvedFallbackPrice = (_a = bestOutcomePrice != null ? bestOutcomePrice : fallbackPrice) != null ? _a : void 0;
1055
+ if (normalizeOutcomeLabel(outcomeLabel) === "yes") {
1056
+ return getDisplayReferencePrice({
1057
+ bestMidpoint,
1058
+ fallbackPrice: resolvedFallbackPrice
1059
+ });
1060
+ }
1061
+ return resolvedFallbackPrice;
1062
+ };
1063
+
990
1064
  // src/events/shared/event-trading-state.utils.ts
991
1065
  import dayjs4 from "dayjs";
992
1066
  var formatTradingStateDate = (value) => {
@@ -1093,9 +1167,9 @@ var resolveOrderEligibilityMessage = (labels, reason) => {
1093
1167
  };
1094
1168
 
1095
1169
  export {
1170
+ selectOutcomePrice,
1096
1171
  useEventTradingContext,
1097
1172
  sortOutcomeSelectorOutcomes,
1098
- getTimeWindowByRange,
1099
1173
  resolveOutcomesByVenue,
1100
1174
  resolveSeriesColor,
1101
1175
  resolveMarketChartVenueSeries,
@@ -1107,10 +1181,12 @@ export {
1107
1181
  resolveInitialTab,
1108
1182
  resolveMarketFromVenueMarkets,
1109
1183
  resolveInitialOutcomeLabel,
1184
+ resolveScopedSelectedOutcome,
1110
1185
  formatProbabilityPercent,
1111
1186
  resolveHeaderOutcomeItems,
1112
1187
  resolveOtherTabRows,
1113
1188
  buildMarketDetailsModel,
1189
+ getDisplayOutcomePrice,
1114
1190
  defaultSettlementSectionLabel,
1115
1191
  defaultTradingDisclaimer,
1116
1192
  getTradingDateLabel,