@agg-market/ui 6.0.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +17 -2
  2. package/dist/{chunk-LMOJKJOY.mjs → chunk-6I474QXG.mjs} +319 -199
  3. package/dist/{chunk-5ZKPBMRK.mjs → chunk-AVHMI47G.mjs} +18 -20
  4. package/dist/{chunk-ADGL6RFX.mjs → chunk-EEQPPN7N.mjs} +1 -1
  5. package/dist/{chunk-UBBOLLOS.mjs → chunk-EERL6BZF.mjs} +2 -4
  6. package/dist/{chunk-G6YKGVQR.mjs → chunk-KQKLLL4D.mjs} +15 -54
  7. package/dist/{chunk-2ICOSP7N.mjs → chunk-L5U7RGJV.mjs} +5 -5
  8. package/dist/{chunk-HI4EEDN5.mjs → chunk-MUB7NYWZ.mjs} +799 -228
  9. package/dist/chunk-OAJBTVZT.mjs +119 -0
  10. package/dist/{chunk-JE3Z52FD.mjs → chunk-OVQVAUAI.mjs} +110 -35
  11. package/dist/{chunk-CN7GI2RJ.mjs → chunk-ZYUJ7YEJ.mjs} +68 -8
  12. package/dist/events.js +1364 -771
  13. package/dist/events.mjs +4 -5
  14. package/dist/index.js +2353 -1541
  15. package/dist/index.mjs +597 -19
  16. package/dist/modals.js +1058 -651
  17. package/dist/modals.mjs +3 -4
  18. package/dist/pages.js +1717 -1055
  19. package/dist/pages.mjs +7 -7
  20. package/dist/primitives.js +936 -336
  21. package/dist/primitives.mjs +25 -11
  22. package/dist/styles.css +1 -1
  23. package/dist/tailwind.css +1 -1
  24. package/dist/trading.js +994 -512
  25. package/dist/trading.mjs +4 -4
  26. package/dist/types/auth/connect-button-view/connect-button-view.constants.d.mts +31 -0
  27. package/dist/types/auth/connect-button-view/connect-button-view.constants.d.ts +31 -0
  28. package/dist/types/auth/connect-button-view/connect-button-view.types.d.mts +83 -0
  29. package/dist/types/auth/connect-button-view/connect-button-view.types.d.ts +83 -0
  30. package/dist/types/auth/connect-button-view/index.d.mts +7 -0
  31. package/dist/types/auth/connect-button-view/index.d.ts +7 -0
  32. package/dist/types/auth/index.d.mts +1 -1
  33. package/dist/types/auth/index.d.ts +1 -1
  34. package/dist/types/index.d.mts +1 -1
  35. package/dist/types/index.d.ts +1 -1
  36. package/dist/types/primitives/chart/chart-type-switch.d.mts +10 -0
  37. package/dist/types/primitives/chart/chart-type-switch.d.ts +10 -0
  38. package/dist/types/primitives/chart/index.d.mts +7 -1
  39. package/dist/types/primitives/chart/index.d.ts +7 -1
  40. package/dist/types/primitives/icon/index.d.mts +8 -1
  41. package/dist/types/primitives/icon/index.d.ts +8 -1
  42. package/dist/types/primitives/icon/registry.d.mts +28 -0
  43. package/dist/types/primitives/icon/registry.d.ts +28 -0
  44. package/dist/types/primitives/icon/svg/apple.d.mts +5 -0
  45. package/dist/types/primitives/icon/svg/apple.d.ts +5 -0
  46. package/dist/types/primitives/icon/svg/chart-candlestick.d.mts +5 -0
  47. package/dist/types/primitives/icon/svg/chart-candlestick.d.ts +5 -0
  48. package/dist/types/primitives/icon/svg/chart-line.d.mts +5 -0
  49. package/dist/types/primitives/icon/svg/chart-line.d.ts +5 -0
  50. package/dist/types/primitives/icon/svg/error-filled.d.mts +5 -0
  51. package/dist/types/primitives/icon/svg/error-filled.d.ts +5 -0
  52. package/dist/types/primitives/icon/svg/ethereum.d.mts +5 -0
  53. package/dist/types/primitives/icon/svg/ethereum.d.ts +5 -0
  54. package/dist/types/primitives/icon/svg/google.d.mts +5 -0
  55. package/dist/types/primitives/icon/svg/google.d.ts +5 -0
  56. package/dist/types/primitives/icon/svg/solana.d.mts +5 -0
  57. package/dist/types/primitives/icon/svg/solana.d.ts +5 -0
  58. package/dist/types/primitives/index.d.mts +1 -0
  59. package/dist/types/primitives/index.d.ts +1 -0
  60. package/dist/types/primitives/inline-alert/index.d.mts +16 -0
  61. package/dist/types/primitives/inline-alert/index.d.ts +16 -0
  62. package/dist/types/primitives/venue-logo/svg/logo-limitless.d.mts +5 -0
  63. package/dist/types/primitives/venue-logo/svg/logo-limitless.d.ts +5 -0
  64. package/dist/types/primitives/venue-logo/venue-logo.types.d.mts +1 -1
  65. package/dist/types/primitives/venue-logo/venue-logo.types.d.ts +1 -1
  66. package/dist/types/trading/types.d.mts +26 -26
  67. package/dist/types/trading/types.d.ts +26 -26
  68. package/package.json +3 -15
  69. package/dist/auth.d.mts +0 -1
  70. package/dist/auth.d.ts +0 -1
  71. package/dist/auth.js +0 -2290
  72. package/dist/auth.mjs +0 -8
  73. package/dist/chunk-INRG3D4M.mjs +0 -450
  74. package/dist/chunk-MHCHR65A.mjs +0 -165
  75. package/dist/chunk-PASXFYKQ.mjs +0 -81
  76. package/dist/types/auth/connect-button/connect-button.constants.d.mts +0 -10
  77. package/dist/types/auth/connect-button/connect-button.constants.d.ts +0 -10
  78. package/dist/types/auth/connect-button/connect-button.types.d.mts +0 -33
  79. package/dist/types/auth/connect-button/connect-button.types.d.ts +0 -33
  80. package/dist/types/auth/connect-button/index.d.mts +0 -7
  81. package/dist/types/auth/connect-button/index.d.ts +0 -7
@@ -4,7 +4,7 @@ import {
4
4
  StateMessage,
5
5
  SwitchButton,
6
6
  Typography
7
- } from "./chunk-CN7GI2RJ.mjs";
7
+ } from "./chunk-ZYUJ7YEJ.mjs";
8
8
  import {
9
9
  Card,
10
10
  MarketDetailsOderbookSkeleton,
@@ -19,7 +19,7 @@ import {
19
19
  marketDetailsBaseCardClassName,
20
20
  marketDetailsDefaultIsOpened,
21
21
  orderBookRowLimitDefault
22
- } from "./chunk-UBBOLLOS.mjs";
22
+ } from "./chunk-EERL6BZF.mjs";
23
23
  import {
24
24
  Button,
25
25
  Icon,
@@ -30,7 +30,7 @@ import {
30
30
  cn,
31
31
  getMotionClassName,
32
32
  toDate
33
- } from "./chunk-HI4EEDN5.mjs";
33
+ } from "./chunk-MUB7NYWZ.mjs";
34
34
 
35
35
  // src/events/item/index.tsx
36
36
  import dayjs from "dayjs";
@@ -475,8 +475,88 @@ var EventListItem = (props) => {
475
475
  EventListItem.displayName = "EventListItem";
476
476
 
477
477
  // src/events/item-details/index.tsx
478
- import { useEffect, useMemo as useMemo2, useState } from "react";
479
- import { useEvent as useEvent2, useLabels as useLabels2, usePriceHistory, useSdkUiConfig as useSdkUiConfig2 } from "@agg-market/hooks";
478
+ import { useEffect, useMemo as useMemo3, useState } from "react";
479
+ import { useEvent as useEvent2, useLabels as useLabels3, usePriceHistory, useSdkUiConfig as useSdkUiConfig2 } from "@agg-market/hooks";
480
+
481
+ // src/primitives/chart/chart-type-switch.tsx
482
+ import { useLabels as useLabels2 } from "@agg-market/hooks";
483
+ import { useMemo as useMemo2 } from "react";
484
+ import { jsx as jsx2 } from "react/jsx-runtime";
485
+ var ChartTypeSwitch = ({
486
+ value,
487
+ onValueChange,
488
+ className
489
+ }) => {
490
+ const labels = useLabels2();
491
+ const options = useMemo2(
492
+ () => [
493
+ {
494
+ value: "line",
495
+ iconName: "chart-line",
496
+ ariaLabel: labels.common.lineChartType
497
+ },
498
+ {
499
+ value: "candlestick",
500
+ iconName: "chart-candlestick",
501
+ ariaLabel: labels.common.candlestickChartType
502
+ }
503
+ ],
504
+ [labels]
505
+ );
506
+ const handleKeyDown = (event, index) => {
507
+ if (event.key !== "ArrowLeft" && event.key !== "ArrowRight") {
508
+ return;
509
+ }
510
+ event.preventDefault();
511
+ const direction = event.key === "ArrowRight" ? 1 : -1;
512
+ const nextIndex = (index + direction + options.length) % options.length;
513
+ const nextOption = options[nextIndex];
514
+ if (!nextOption || nextOption.value === value) {
515
+ return;
516
+ }
517
+ onValueChange(nextOption.value);
518
+ };
519
+ return /* @__PURE__ */ jsx2(
520
+ "div",
521
+ {
522
+ className: cn("inline-flex items-center gap-2", className),
523
+ role: "tablist",
524
+ "aria-label": labels.common.chartTypeSwitchAria,
525
+ children: options.map((option, index) => {
526
+ const isActive = option.value === value;
527
+ return /* @__PURE__ */ jsx2(
528
+ "button",
529
+ {
530
+ type: "button",
531
+ role: "tab",
532
+ "aria-selected": isActive,
533
+ "aria-label": option.ariaLabel,
534
+ tabIndex: isActive ? 0 : -1,
535
+ className: cn(
536
+ "cursor-pointer hover:text-agg-foreground",
537
+ "inline-flex size-5 items-center justify-center rounded-agg-sm bg-transparent p-0",
538
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-agg-primary focus-visible:ring-offset-2 focus-visible:ring-offset-agg-background",
539
+ "transition-colors duration-200 ease-in-out",
540
+ isActive ? "text-agg-foreground" : "text-agg-muted-foreground"
541
+ ),
542
+ onClick: () => {
543
+ if (isActive) {
544
+ return;
545
+ }
546
+ onValueChange(option.value);
547
+ },
548
+ onKeyDown: (event) => {
549
+ handleKeyDown(event, index);
550
+ },
551
+ children: /* @__PURE__ */ jsx2(Icon, { name: option.iconName, color: "currentColor", className: "h-5 w-5" })
552
+ },
553
+ option.value
554
+ );
555
+ })
556
+ }
557
+ );
558
+ };
559
+ ChartTypeSwitch.displayName = "ChartTypeSwitch";
480
560
 
481
561
  // src/events/item-details/event-list-item-details.utils.ts
482
562
  import dayjs2 from "dayjs";
@@ -604,13 +684,13 @@ var resolveSeriesColor = (venue, index) => {
604
684
  };
605
685
 
606
686
  // src/events/item-details/index.tsx
607
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
687
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
608
688
  var EventListItemDetailsLoadingState = ({
609
689
  classNames,
610
690
  ariaLabel
611
691
  }) => {
612
- const labels = useLabels2();
613
- return /* @__PURE__ */ jsx2(
692
+ const labels = useLabels3();
693
+ return /* @__PURE__ */ jsx3(
614
694
  Skeleton,
615
695
  {
616
696
  view: "event-list-item-details",
@@ -623,16 +703,16 @@ var EventListItemDetailsUnavailableState = ({
623
703
  classNames,
624
704
  ariaLabel
625
705
  }) => {
626
- const labels = useLabels2();
627
- return /* @__PURE__ */ jsx2(
706
+ const labels = useLabels3();
707
+ return /* @__PURE__ */ jsx3(
628
708
  Card,
629
709
  {
630
710
  className: cn(detailsBaseCardClassName, classNames == null ? void 0 : classNames.root),
631
711
  role: "status",
632
712
  "aria-label": ariaLabel != null ? ariaLabel : labels.eventItemDetails.unavailableAria,
633
713
  children: /* @__PURE__ */ jsxs2("div", { className: cn("flex flex-col gap-1", classNames == null ? void 0 : classNames.header), children: [
634
- /* @__PURE__ */ jsx2(Typography, { variant: "body-large-strong", className: cn("truncate", classNames == null ? void 0 : classNames.title), children: labels.eventItemDetails.unavailableTitle }),
635
- /* @__PURE__ */ jsx2(Typography, { variant: "body", className: "text-agg-muted-foreground", children: labels.eventItemDetails.unavailableDescription })
714
+ /* @__PURE__ */ jsx3(Typography, { variant: "body-large-strong", className: cn("truncate", classNames == null ? void 0 : classNames.title), children: labels.eventItemDetails.unavailableTitle }),
715
+ /* @__PURE__ */ jsx3(Typography, { variant: "body", className: "text-agg-muted-foreground", children: labels.eventItemDetails.unavailableDescription })
636
716
  ] })
637
717
  }
638
718
  );
@@ -641,8 +721,8 @@ var EventListItemDetailsNotFoundState = ({
641
721
  classNames,
642
722
  ariaLabel
643
723
  }) => {
644
- const labels = useLabels2();
645
- return /* @__PURE__ */ jsx2(Card, { className: cn(detailsBaseCardClassName, classNames == null ? void 0 : classNames.root), children: /* @__PURE__ */ jsx2(
724
+ const labels = useLabels3();
725
+ return /* @__PURE__ */ jsx3(Card, { className: cn(detailsBaseCardClassName, classNames == null ? void 0 : classNames.root), children: /* @__PURE__ */ jsx3(
646
726
  StateMessage,
647
727
  {
648
728
  ariaLabel: ariaLabel != null ? ariaLabel : labels.eventItemDetails.notFoundAria,
@@ -687,12 +767,13 @@ var EventListItemDetailsGraphSection = ({
687
767
  showVenueLogo,
688
768
  venueInfo,
689
769
  formatPercent,
690
- selectedTimeRange
770
+ selectedTimeRange,
771
+ selectedChartType
691
772
  }) => {
692
- const labels = useLabels2();
773
+ const labels = useLabels3();
693
774
  const [selectedVenue, setSelectedVenue] = useState(null);
694
775
  const [activeProbabilityMode, setActiveProbabilityMode] = useState("yes");
695
- const probabilityModeConfigs = useMemo2(() => {
776
+ const probabilityModeConfigs = useMemo3(() => {
696
777
  if (isDateOutcomeMarket) {
697
778
  return {
698
779
  yes: {
@@ -720,7 +801,7 @@ var EventListItemDetailsGraphSection = ({
720
801
  }
721
802
  };
722
803
  }, [isDateOutcomeMarket, selectedOutcomeLabel, switchLabels]);
723
- const selectedOutcomesByMode = useMemo2(() => {
804
+ const selectedOutcomesByMode = useMemo3(() => {
724
805
  return {
725
806
  yes: resolveOutcomesByVenue(venueMarkets, probabilityModeConfigs.yes.sourceOutcomeLabel),
726
807
  no: resolveOutcomesByVenue(venueMarkets, probabilityModeConfigs.no.sourceOutcomeLabel)
@@ -737,7 +818,7 @@ var EventListItemDetailsGraphSection = ({
737
818
  const nextMode = selectedOutcomeLabel === probabilityModeConfigs.no.sourceOutcomeLabel ? "no" : "yes";
738
819
  setActiveProbabilityMode(nextMode);
739
820
  }, [isDateOutcomeMarket, probabilityModeConfigs.no.sourceOutcomeLabel, selectedOutcomeLabel]);
740
- const normalizedVenueDataByMode = useMemo2(() => {
821
+ const normalizedVenueDataByMode = useMemo3(() => {
741
822
  const buildModeData = (mode) => {
742
823
  const modeConfig = probabilityModeConfigs[mode];
743
824
  return selectedOutcomesByMode[mode].map((outcomeByVenue, index) => {
@@ -758,7 +839,7 @@ var EventListItemDetailsGraphSection = ({
758
839
  no: buildModeData("no")
759
840
  };
760
841
  }, [labels, probabilityModeConfigs, selectedOutcomesByMode, venueInfo]);
761
- const allOutcomesForHistory = useMemo2(() => {
842
+ const allOutcomesForHistory = useMemo3(() => {
762
843
  const outcomeByModeAndId = /* @__PURE__ */ new Map();
763
844
  probabilityModeOrder.forEach((mode) => {
764
845
  selectedOutcomesByMode[mode].forEach((outcomeByVenue) => {
@@ -770,10 +851,10 @@ var EventListItemDetailsGraphSection = ({
770
851
  });
771
852
  return [...outcomeByModeAndId.values()];
772
853
  }, [selectedOutcomesByMode]);
773
- const priceHistoryGroups = useMemo2(() => {
854
+ const priceHistoryGroups = useMemo3(() => {
774
855
  return buildPriceHistoryGroups(allOutcomesForHistory, canonicalMarketId);
775
856
  }, [allOutcomesForHistory, canonicalMarketId]);
776
- const timeWindow = useMemo2(() => {
857
+ const timeWindow = useMemo3(() => {
777
858
  return getTimeWindowByRange(selectedTimeRange);
778
859
  }, [selectedTimeRange]);
779
860
  const {
@@ -786,7 +867,7 @@ var EventListItemDetailsGraphSection = ({
786
867
  }, timeWindow), {
787
868
  enabled: priceHistoryGroups.length > 0
788
869
  }));
789
- const priceHistoryByVenue = useMemo2(() => {
870
+ const priceHistoryByVenue = useMemo3(() => {
790
871
  const historyByVenue = /* @__PURE__ */ new Map();
791
872
  if (!(priceHistoryData == null ? void 0 : priceHistoryData.length)) {
792
873
  return historyByVenue;
@@ -802,7 +883,7 @@ var EventListItemDetailsGraphSection = ({
802
883
  });
803
884
  return historyByVenue;
804
885
  }, [priceHistoryData]);
805
- const chartSeriesByMode = useMemo2(() => {
886
+ const chartSeriesByMode = useMemo3(() => {
806
887
  const buildSeries = (mode) => {
807
888
  const modeConfig = probabilityModeConfigs[mode];
808
889
  const chartSeries = [];
@@ -819,10 +900,19 @@ var EventListItemDetailsGraphSection = ({
819
900
  const probability = normalizeProbability(point.price);
820
901
  if (probability == null || !Number.isFinite(point.timestamp))
821
902
  return null;
822
- return {
903
+ const open = normalizeProbability(point.open);
904
+ const high = normalizeProbability(point.high);
905
+ const low = normalizeProbability(point.low);
906
+ const close = normalizeProbability(point.close);
907
+ const transformedPoint = {
823
908
  time: point.timestamp,
824
- value: clampProbability(modeConfig.transformProbability(probability)) * 100
909
+ value: clampProbability(modeConfig.transformProbability(probability)) * 100,
910
+ open: open == null ? void 0 : clampProbability(modeConfig.transformProbability(open)) * 100,
911
+ high: high == null ? void 0 : clampProbability(modeConfig.transformProbability(high)) * 100,
912
+ low: low == null ? void 0 : clampProbability(modeConfig.transformProbability(low)) * 100,
913
+ close: close == null ? void 0 : clampProbability(modeConfig.transformProbability(close)) * 100
825
914
  };
915
+ return transformedPoint;
826
916
  }).filter((point) => point != null);
827
917
  if (points.length === 0)
828
918
  return;
@@ -842,13 +932,13 @@ var EventListItemDetailsGraphSection = ({
842
932
  no: buildSeries("no")
843
933
  };
844
934
  }, [normalizedVenueDataByMode, priceHistoryByVenue, probabilityModeConfigs]);
845
- const visibleChartSeries = useMemo2(() => {
935
+ const visibleChartSeries = useMemo3(() => {
846
936
  const modeSeries = chartSeriesByMode[activeProbabilityMode];
847
937
  if (!selectedVenue)
848
938
  return modeSeries;
849
939
  return modeSeries.filter((seriesItem) => seriesItem.venue === selectedVenue);
850
940
  }, [activeProbabilityMode, chartSeriesByMode, selectedVenue]);
851
- const segmentedDisplayItems = useMemo2(() => {
941
+ const segmentedDisplayItems = useMemo3(() => {
852
942
  return probabilityModeOrder.map((mode) => {
853
943
  const averageProbability = resolveAverageProbability(
854
944
  normalizedVenueDataByMode[mode].map((venueData) => venueData.probability)
@@ -889,14 +979,14 @@ var EventListItemDetailsGraphSection = ({
889
979
  void Promise.all(priceHistoryResults.map((result) => result.refetch()));
890
980
  };
891
981
  if (priceHistoryError) {
892
- return /* @__PURE__ */ jsx2(
982
+ return /* @__PURE__ */ jsx3(
893
983
  "div",
894
984
  {
895
985
  className: cn(
896
986
  "w-full rounded-agg-xl border border-agg-separator bg-agg-secondary",
897
987
  classNames == null ? void 0 : classNames.chart
898
988
  ),
899
- children: /* @__PURE__ */ jsx2(
989
+ children: /* @__PURE__ */ jsx3(
900
990
  StateMessage,
901
991
  {
902
992
  ariaLabel: labels.eventItemDetails.chartUnavailableAria,
@@ -911,13 +1001,14 @@ var EventListItemDetailsGraphSection = ({
911
1001
  }
912
1002
  );
913
1003
  }
914
- return /* @__PURE__ */ jsx2(
1004
+ return /* @__PURE__ */ jsx3(
915
1005
  LineChart,
916
1006
  {
917
1007
  classNames: { root: classNames == null ? void 0 : classNames.chart },
918
1008
  series: visibleChartSeries,
919
1009
  height: 300,
920
1010
  isLoading: isPriceHistoryLoading,
1011
+ chartType: selectedChartType,
921
1012
  showSeriesControls: activeModeVenueData.length > 0 || segmentedDisplayItems.length > 0,
922
1013
  renderSeriesControls: () => {
923
1014
  return /* @__PURE__ */ jsxs2(
@@ -925,7 +1016,7 @@ var EventListItemDetailsGraphSection = ({
925
1016
  {
926
1017
  className: cn("flex flex-row items-center justify-between gap-4", classNames == null ? void 0 : classNames.summary),
927
1018
  children: [
928
- /* @__PURE__ */ jsx2(
1019
+ /* @__PURE__ */ jsx3(
929
1020
  "div",
930
1021
  {
931
1022
  className: cn(
@@ -936,7 +1027,7 @@ var EventListItemDetailsGraphSection = ({
936
1027
  var _a;
937
1028
  const text = venueData.probability == null ? "-" : formatPercent(venueData.probability);
938
1029
  const isActiveVenue = selectedVenue === venueData.venue;
939
- return /* @__PURE__ */ jsx2(
1030
+ return /* @__PURE__ */ jsx3(
940
1031
  "button",
941
1032
  {
942
1033
  type: "button",
@@ -945,12 +1036,12 @@ var EventListItemDetailsGraphSection = ({
945
1036
  className: cn(
946
1037
  "rounded-agg-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-agg-primary focus-visible:ring-offset-2 focus-visible:ring-offset-agg-secondary-hover"
947
1038
  ),
948
- children: /* @__PURE__ */ jsx2(
1039
+ children: /* @__PURE__ */ jsx3(
949
1040
  Badge,
950
1041
  {
951
1042
  text,
952
1043
  size: "large",
953
- prefix: showVenueLogo ? /* @__PURE__ */ jsx2(
1044
+ prefix: showVenueLogo ? /* @__PURE__ */ jsx3(
954
1045
  VenueLogo,
955
1046
  {
956
1047
  venue: venueData.venue,
@@ -975,7 +1066,7 @@ var EventListItemDetailsGraphSection = ({
975
1066
  })
976
1067
  }
977
1068
  ),
978
- /* @__PURE__ */ jsx2(
1069
+ /* @__PURE__ */ jsx3(
979
1070
  SwitchButton,
980
1071
  {
981
1072
  ariaLabel: labels.eventItemDetails.outcomeSelectorAria,
@@ -1009,15 +1100,15 @@ var EventListItemDetailsContent = ({
1009
1100
  }) => {
1010
1101
  var _a, _b;
1011
1102
  const config = useSdkUiConfig2();
1012
- const labels = useLabels2();
1013
- const venueMarkets = useMemo2(() => {
1103
+ const labels = useLabels3();
1104
+ const venueMarkets = useMemo3(() => {
1014
1105
  var _a2, _b2, _c;
1015
1106
  return (_c = (_b2 = (_a2 = event.markets) == null ? void 0 : _a2[0]) == null ? void 0 : _b2.venueMarkets) != null ? _c : [];
1016
1107
  }, [event.markets]);
1017
- const primaryVenueMarket = useMemo2(() => {
1108
+ const primaryVenueMarket = useMemo3(() => {
1018
1109
  return selectPrimaryVenueMarket(venueMarkets);
1019
1110
  }, [venueMarkets]);
1020
- const outcomeLabels = useMemo2(() => {
1111
+ const outcomeLabels = useMemo3(() => {
1021
1112
  return resolveOutcomeLabels(venueMarkets);
1022
1113
  }, [venueMarkets]);
1023
1114
  const [selectedOutcomeLabel, setSelectedOutcomeLabel] = useState(() => {
@@ -1026,6 +1117,7 @@ var EventListItemDetailsContent = ({
1026
1117
  const [selectedTimeRange, setSelectedTimeRange] = useState(() => {
1027
1118
  return getDefaultSelectedTimeRange(defaultTimeRange);
1028
1119
  });
1120
+ const [selectedChartType, setSelectedChartType] = useState("line");
1029
1121
  useEffect(() => {
1030
1122
  setSelectedTimeRange(getDefaultSelectedTimeRange(defaultTimeRange));
1031
1123
  }, [defaultTimeRange]);
@@ -1033,7 +1125,7 @@ var EventListItemDetailsContent = ({
1033
1125
  const resolvedImage = resolveTileImage(event, primaryVenueMarket, image);
1034
1126
  const isDateOutcomeMarket = outcomeLabels.length > 2 && outcomeLabels.every(isDateLikeLabel);
1035
1127
  const outcomeSelectorLabels = outcomeLabels;
1036
- const probabilityByLabel = useMemo2(() => {
1128
+ const probabilityByLabel = useMemo3(() => {
1037
1129
  return new Map(
1038
1130
  outcomeLabels.map((label) => {
1039
1131
  const outcomesByVenue = resolveOutcomesByVenue(venueMarkets, label);
@@ -1046,7 +1138,7 @@ var EventListItemDetailsContent = ({
1046
1138
  })
1047
1139
  );
1048
1140
  }, [outcomeLabels, venueMarkets]);
1049
- const mainOutcomeLabel = useMemo2(() => {
1141
+ const mainOutcomeLabel = useMemo3(() => {
1050
1142
  if (outcomeLabels.length === 0)
1051
1143
  return void 0;
1052
1144
  return [...outcomeLabels].sort((left, right) => {
@@ -1067,7 +1159,7 @@ var EventListItemDetailsContent = ({
1067
1159
  const fallbackOutcomeLabel = isDateOutcomeMarket ? resolveDefaultOutcomeLabel(outcomeLabels) : mainOutcomeLabel != null ? mainOutcomeLabel : resolveDefaultOutcomeLabel(outcomeLabels);
1068
1160
  setSelectedOutcomeLabel(fallbackOutcomeLabel);
1069
1161
  }, [isDateOutcomeMarket, mainOutcomeLabel, outcomeLabels, selectedOutcomeLabel]);
1070
- const switchLabels = useMemo2(() => {
1162
+ const switchLabels = useMemo3(() => {
1071
1163
  var _a2, _b2;
1072
1164
  if (isDateOutcomeMarket) {
1073
1165
  return [labels.eventItemDetails.yes, labels.eventItemDetails.no];
@@ -1088,7 +1180,7 @@ var EventListItemDetailsContent = ({
1088
1180
  outcomeLabels,
1089
1181
  probabilityByLabel
1090
1182
  ]);
1091
- const volumeLabel = useMemo2(() => {
1183
+ const volumeLabel = useMemo3(() => {
1092
1184
  var _a2;
1093
1185
  const resolvedVolume = typeof event.volume === "number" ? event.volume : (_a2 = primaryVenueMarket == null ? void 0 : primaryVenueMarket.volume) != null ? _a2 : void 0;
1094
1186
  if (typeof resolvedVolume !== "number")
@@ -1096,7 +1188,7 @@ var EventListItemDetailsContent = ({
1096
1188
  return `${config.formatCompactCurrency(resolvedVolume)} ${labels.eventItemDetails.volumeSuffix}`;
1097
1189
  }, [config, event.volume, labels.eventItemDetails.volumeSuffix, primaryVenueMarket == null ? void 0 : primaryVenueMarket.volume]);
1098
1190
  if (!primaryVenueMarket || !selectedOutcomeLabel) {
1099
- return /* @__PURE__ */ jsx2(EventListItemDetailsUnavailableState, { classNames, ariaLabel });
1191
+ return /* @__PURE__ */ jsx3(EventListItemDetailsUnavailableState, { classNames, ariaLabel });
1100
1192
  }
1101
1193
  return /* @__PURE__ */ jsxs2(
1102
1194
  Card,
@@ -1113,7 +1205,7 @@ var EventListItemDetailsContent = ({
1113
1205
  classNames == null ? void 0 : classNames.header
1114
1206
  ),
1115
1207
  children: [
1116
- resolvedImage ? /* @__PURE__ */ jsx2(
1208
+ resolvedImage ? /* @__PURE__ */ jsx3(
1117
1209
  "img",
1118
1210
  {
1119
1211
  src: resolvedImage,
@@ -1122,7 +1214,7 @@ var EventListItemDetailsContent = ({
1122
1214
  }
1123
1215
  ) : null,
1124
1216
  /* @__PURE__ */ jsxs2("div", { className: "flex min-w-0 flex-1 flex-col gap-3", children: [
1125
- /* @__PURE__ */ jsx2(
1217
+ /* @__PURE__ */ jsx3(
1126
1218
  Typography,
1127
1219
  {
1128
1220
  variant: "body-strong",
@@ -1134,7 +1226,7 @@ var EventListItemDetailsContent = ({
1134
1226
  children: resolvedTitle
1135
1227
  }
1136
1228
  ),
1137
- outcomeSelectorLabels.length > 2 ? /* @__PURE__ */ jsx2(
1229
+ outcomeSelectorLabels.length > 2 ? /* @__PURE__ */ jsx3(
1138
1230
  "div",
1139
1231
  {
1140
1232
  className: cn(
@@ -1144,7 +1236,7 @@ var EventListItemDetailsContent = ({
1144
1236
  children: outcomeSelectorLabels.map((outcomeSelectorLabel) => {
1145
1237
  const isActive = outcomeSelectorLabel === selectedOutcomeLabel;
1146
1238
  const displayLabel = isDateLikeLabel(outcomeSelectorLabel) ? formatDateLabel(outcomeSelectorLabel) : outcomeSelectorLabel;
1147
- return /* @__PURE__ */ jsx2(
1239
+ return /* @__PURE__ */ jsx3(
1148
1240
  Button,
1149
1241
  {
1150
1242
  size: "small",
@@ -1167,12 +1259,12 @@ var EventListItemDetailsContent = ({
1167
1259
  ]
1168
1260
  }
1169
1261
  ),
1170
- detailsStats && detailsStats.length > 0 ? /* @__PURE__ */ jsx2("div", { className: cn("flex flex-wrap items-start gap-4 md:gap-6", classNames == null ? void 0 : classNames.headerStats), children: detailsStats.map((statItem) => {
1262
+ detailsStats && detailsStats.length > 0 ? /* @__PURE__ */ jsx3("div", { className: cn("flex flex-wrap items-start gap-4 md:gap-6", classNames == null ? void 0 : classNames.headerStats), children: detailsStats.map((statItem) => {
1171
1263
  const deltaClassName = statItem.deltaTone === "positive" ? "text-agg-success!" : statItem.deltaTone === "negative" ? "text-agg-error!" : "text-agg-muted-foreground";
1172
1264
  return /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-1", children: [
1173
- /* @__PURE__ */ jsx2(Typography, { variant: "caption-caps", className: "text-agg-muted-foreground", children: statItem.label }),
1265
+ /* @__PURE__ */ jsx3(Typography, { variant: "caption-caps", className: "text-agg-muted-foreground", children: statItem.label }),
1174
1266
  /* @__PURE__ */ jsxs2("div", { className: "flex items-baseline gap-1", children: [
1175
- /* @__PURE__ */ jsx2(
1267
+ /* @__PURE__ */ jsx3(
1176
1268
  Typography,
1177
1269
  {
1178
1270
  variant: "body",
@@ -1180,11 +1272,11 @@ var EventListItemDetailsContent = ({
1180
1272
  children: statItem.value
1181
1273
  }
1182
1274
  ),
1183
- statItem.delta ? /* @__PURE__ */ jsx2(Typography, { variant: "label", className: cn(deltaClassName), children: statItem.delta }) : null
1275
+ statItem.delta ? /* @__PURE__ */ jsx3(Typography, { variant: "label", className: cn(deltaClassName), children: statItem.delta }) : null
1184
1276
  ] })
1185
1277
  ] }, `${statItem.label}-${statItem.value}`);
1186
1278
  }) }) : null,
1187
- /* @__PURE__ */ jsx2(
1279
+ /* @__PURE__ */ jsx3(
1188
1280
  EventListItemDetailsGraphSection,
1189
1281
  {
1190
1282
  venueMarkets,
@@ -1197,31 +1289,36 @@ var EventListItemDetailsContent = ({
1197
1289
  showVenueLogo,
1198
1290
  venueInfo,
1199
1291
  formatPercent: config.formatPercent,
1200
- selectedTimeRange
1292
+ selectedTimeRange,
1293
+ selectedChartType
1201
1294
  }
1202
1295
  ),
1203
1296
  /* @__PURE__ */ jsxs2("div", { className: cn("flex flex-wrap items-center justify-between gap-4", classNames == null ? void 0 : classNames.footer), children: [
1204
- /* @__PURE__ */ jsx2(Typography, { variant: "label", className: "text-agg-muted-foreground", children: volumeLabel || "-" }),
1205
- /* @__PURE__ */ jsx2("div", { className: cn("flex items-center gap-2 md:gap-3", classNames == null ? void 0 : classNames.timeRange), children: eventListItemDetailsTimeRanges.map((timeRange) => {
1206
- const isActive = timeRange === selectedTimeRange;
1207
- return /* @__PURE__ */ jsx2(
1208
- Button,
1209
- {
1210
- size: "small",
1211
- variant: "tertiary",
1212
- className: cn(
1213
- "h-auto min-w-0 rounded-none px-0 py-0 text-agg-xs leading-agg-4 md:text-agg-sm md:leading-agg-5",
1214
- "border-0 bg-transparent shadow-none",
1215
- "hover:text-agg-foreground!",
1216
- isActive ? "font-agg-bold! text-agg-foreground!" : "font-agg-normal! text-agg-muted-foreground!"
1217
- ),
1218
- "aria-pressed": isActive,
1219
- onClick: () => setSelectedTimeRange(timeRange),
1220
- children: timeRange === "ALL" ? labels.eventItemDetails.allTimeRange : timeRange
1221
- },
1222
- timeRange
1223
- );
1224
- }) })
1297
+ /* @__PURE__ */ jsx3(Typography, { variant: "label", className: "text-agg-muted-foreground", children: volumeLabel || "-" }),
1298
+ /* @__PURE__ */ jsxs2("div", { className: cn("flex flex-wrap items-center gap-2 md:gap-3", classNames == null ? void 0 : classNames.timeRange), children: [
1299
+ /* @__PURE__ */ jsx3(ChartTypeSwitch, { value: selectedChartType, onValueChange: setSelectedChartType }),
1300
+ /* @__PURE__ */ jsx3("span", { "aria-hidden": "true", className: "hidden h-4 w-px bg-agg-separator md:block" }),
1301
+ eventListItemDetailsTimeRanges.map((timeRange) => {
1302
+ const isActive = timeRange === selectedTimeRange;
1303
+ return /* @__PURE__ */ jsx3(
1304
+ Button,
1305
+ {
1306
+ size: "small",
1307
+ variant: "tertiary",
1308
+ className: cn(
1309
+ "h-auto min-w-0 rounded-none px-0 py-0 text-agg-xs leading-agg-4 md:text-agg-sm md:leading-agg-5",
1310
+ "border-0 bg-transparent shadow-none",
1311
+ "hover:text-agg-foreground!",
1312
+ isActive ? "font-agg-bold! text-agg-foreground!" : "font-agg-normal! text-agg-muted-foreground!"
1313
+ ),
1314
+ "aria-pressed": isActive,
1315
+ onClick: () => setSelectedTimeRange(timeRange),
1316
+ children: timeRange === "ALL" ? labels.eventItemDetails.allTimeRange : timeRange
1317
+ },
1318
+ timeRange
1319
+ );
1320
+ })
1321
+ ] })
1225
1322
  ] })
1226
1323
  ]
1227
1324
  }
@@ -1241,11 +1338,11 @@ var EventListItemDetailsByEventId = (_a) => {
1241
1338
  } = useEvent2(eventId, {
1242
1339
  enabled: !!eventId
1243
1340
  });
1244
- const resolvedEvent = useMemo2(() => {
1341
+ const resolvedEvent = useMemo3(() => {
1245
1342
  return resolveEventListItemEvent(fetchedEvent);
1246
1343
  }, [fetchedEvent]);
1247
1344
  if (!eventId) {
1248
- return /* @__PURE__ */ jsx2(
1345
+ return /* @__PURE__ */ jsx3(
1249
1346
  EventListItemDetailsUnavailableState,
1250
1347
  {
1251
1348
  classNames: rest.classNames,
@@ -1254,16 +1351,16 @@ var EventListItemDetailsByEventId = (_a) => {
1254
1351
  );
1255
1352
  }
1256
1353
  if (isLoading) {
1257
- return /* @__PURE__ */ jsx2(EventListItemDetailsLoadingState, { classNames: rest.classNames, ariaLabel: rest.ariaLabel });
1354
+ return /* @__PURE__ */ jsx3(EventListItemDetailsLoadingState, { classNames: rest.classNames, ariaLabel: rest.ariaLabel });
1258
1355
  }
1259
1356
  if (isErrorWithStatus(error, 404)) {
1260
- return /* @__PURE__ */ jsx2(EventListItemDetailsNotFoundState, { classNames: rest.classNames, ariaLabel: rest.ariaLabel });
1357
+ return /* @__PURE__ */ jsx3(EventListItemDetailsNotFoundState, { classNames: rest.classNames, ariaLabel: rest.ariaLabel });
1261
1358
  }
1262
1359
  if (!fetchedEvent && !isError) {
1263
- return /* @__PURE__ */ jsx2(EventListItemDetailsLoadingState, { classNames: rest.classNames, ariaLabel: rest.ariaLabel });
1360
+ return /* @__PURE__ */ jsx3(EventListItemDetailsLoadingState, { classNames: rest.classNames, ariaLabel: rest.ariaLabel });
1264
1361
  }
1265
1362
  if (!resolvedEvent) {
1266
- return /* @__PURE__ */ jsx2(
1363
+ return /* @__PURE__ */ jsx3(
1267
1364
  EventListItemDetailsUnavailableState,
1268
1365
  {
1269
1366
  classNames: rest.classNames,
@@ -1271,15 +1368,15 @@ var EventListItemDetailsByEventId = (_a) => {
1271
1368
  }
1272
1369
  );
1273
1370
  }
1274
- return /* @__PURE__ */ jsx2(EventListItemDetailsContent, __spreadValues({ event: resolvedEvent }, rest));
1371
+ return /* @__PURE__ */ jsx3(EventListItemDetailsContent, __spreadValues({ event: resolvedEvent }, rest));
1275
1372
  };
1276
1373
  var EventListItemDetails = (props) => {
1277
1374
  if (props.isLoading) {
1278
- return /* @__PURE__ */ jsx2(EventListItemDetailsLoadingState, { classNames: props.classNames, ariaLabel: props.ariaLabel });
1375
+ return /* @__PURE__ */ jsx3(EventListItemDetailsLoadingState, { classNames: props.classNames, ariaLabel: props.ariaLabel });
1279
1376
  }
1280
1377
  if ("event" in props && props.event) {
1281
1378
  const _a = props, { event } = _a, rest = __objRest(_a, ["event"]);
1282
- return /* @__PURE__ */ jsx2(EventListItemDetailsContent, __spreadValues({ event }, rest));
1379
+ return /* @__PURE__ */ jsx3(EventListItemDetailsContent, __spreadValues({ event }, rest));
1283
1380
  }
1284
1381
  if ("eventId" in props && typeof props.eventId === "string") {
1285
1382
  const {
@@ -1304,9 +1401,9 @@ var EventListItemDetails = (props) => {
1304
1401
  ariaLabel: ariaLabelOverride,
1305
1402
  defaultTimeRange: defaultTimeRangeOverride
1306
1403
  };
1307
- return /* @__PURE__ */ jsx2(EventListItemDetailsByEventId, __spreadValues({}, byEventIdProps));
1404
+ return /* @__PURE__ */ jsx3(EventListItemDetailsByEventId, __spreadValues({}, byEventIdProps));
1308
1405
  }
1309
- return /* @__PURE__ */ jsx2(
1406
+ return /* @__PURE__ */ jsx3(
1310
1407
  EventListItemDetailsUnavailableState,
1311
1408
  {
1312
1409
  classNames: props.classNames,
@@ -1317,10 +1414,10 @@ var EventListItemDetails = (props) => {
1317
1414
  EventListItemDetails.displayName = "EventListItemDetails";
1318
1415
 
1319
1416
  // src/events/market-details/index.tsx
1320
- import { useEffect as useEffect2, useId, useMemo as useMemo3, useState as useState2 } from "react";
1417
+ import { useEffect as useEffect2, useId, useMemo as useMemo4, useState as useState2 } from "react";
1321
1418
  import {
1322
1419
  useEvent as useEvent3,
1323
- useLabels as useLabels3,
1420
+ useLabels as useLabels4,
1324
1421
  useOrderBook,
1325
1422
  usePriceHistory as usePriceHistory2,
1326
1423
  useSdkUiConfig as useSdkUiConfig3
@@ -1556,14 +1653,14 @@ var buildMarketDetailsModel = ({
1556
1653
  };
1557
1654
 
1558
1655
  // src/events/market-details/index.tsx
1559
- import { Fragment, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
1656
+ import { Fragment, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
1560
1657
  var MarketDetailsLoadingState = ({
1561
1658
  isOpened = marketDetailsDefaultIsOpened,
1562
1659
  ariaLabel,
1563
1660
  classNames
1564
1661
  }) => {
1565
- const labels = useLabels3();
1566
- return /* @__PURE__ */ jsx3(
1662
+ const labels = useLabels4();
1663
+ return /* @__PURE__ */ jsx4(
1567
1664
  Skeleton,
1568
1665
  {
1569
1666
  view: isOpened ? "market-details-detailed" : "market-details-minified",
@@ -1576,16 +1673,16 @@ var MarketDetailsUnavailableState = ({
1576
1673
  ariaLabel,
1577
1674
  classNames
1578
1675
  }) => {
1579
- const labels = useLabels3();
1580
- return /* @__PURE__ */ jsx3(
1676
+ const labels = useLabels4();
1677
+ return /* @__PURE__ */ jsx4(
1581
1678
  Card,
1582
1679
  {
1583
1680
  className: cn(marketDetailsBaseCardClassName, classNames == null ? void 0 : classNames.root),
1584
1681
  role: "status",
1585
1682
  "aria-label": ariaLabel != null ? ariaLabel : labels.marketDetails.unavailableAria,
1586
1683
  children: /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-1 p-5", children: [
1587
- /* @__PURE__ */ jsx3(Typography, { variant: "body-large-strong", children: labels.marketDetails.unavailableTitle }),
1588
- /* @__PURE__ */ jsx3(Typography, { variant: "label", className: "text-agg-muted-foreground", children: labels.marketDetails.unavailableDescription })
1684
+ /* @__PURE__ */ jsx4(Typography, { variant: "body-large-strong", children: labels.marketDetails.unavailableTitle }),
1685
+ /* @__PURE__ */ jsx4(Typography, { variant: "label", className: "text-agg-muted-foreground", children: labels.marketDetails.unavailableDescription })
1589
1686
  ] })
1590
1687
  }
1591
1688
  );
@@ -1594,8 +1691,8 @@ var MarketDetailsNotFoundState = ({
1594
1691
  ariaLabel,
1595
1692
  classNames
1596
1693
  }) => {
1597
- const labels = useLabels3();
1598
- return /* @__PURE__ */ jsx3(Card, { className: cn(marketDetailsBaseCardClassName, "p-0", classNames == null ? void 0 : classNames.root), children: /* @__PURE__ */ jsx3(
1694
+ const labels = useLabels4();
1695
+ return /* @__PURE__ */ jsx4(Card, { className: cn(marketDetailsBaseCardClassName, "p-0", classNames == null ? void 0 : classNames.root), children: /* @__PURE__ */ jsx4(
1599
1696
  StateMessage,
1600
1697
  {
1601
1698
  ariaLabel: ariaLabel != null ? ariaLabel : labels.marketDetails.notFoundAria,
@@ -1612,7 +1709,7 @@ var OrderBookRows = ({
1612
1709
  formatCurrency,
1613
1710
  visibleRows
1614
1711
  }) => {
1615
- const labels = useLabels3();
1712
+ const labels = useLabels4();
1616
1713
  const isAsks = title === labels.marketDetails.asks;
1617
1714
  const priceClassName = isAsks ? "text-agg-orderbook-ask" : "text-agg-orderbook-bid";
1618
1715
  const barClassName = isAsks ? "bg-agg-orderbook-ask/10" : "bg-agg-orderbook-bid/10";
@@ -1622,8 +1719,8 @@ var OrderBookRows = ({
1622
1719
  const orderBookRowGapPx = 8;
1623
1720
  const orderBookVisibleHeightPx = maxVisibleRows * orderBookRowHeightPx + Math.max(0, maxVisibleRows - 1) * (orderBookDividerHeightPx + orderBookRowGapPx);
1624
1721
  return /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-2", children: [
1625
- /* @__PURE__ */ jsx3(Typography, { variant: "caption-caps", children: title }),
1626
- /* @__PURE__ */ jsx3(
1722
+ /* @__PURE__ */ jsx4(Typography, { variant: "caption-caps", children: title }),
1723
+ /* @__PURE__ */ jsx4(
1627
1724
  "div",
1628
1725
  {
1629
1726
  className: "overflow-y-auto pr-1 flex flex-col gap-2",
@@ -1633,8 +1730,8 @@ var OrderBookRows = ({
1633
1730
  children: rows.map((row, index) => /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-2", children: [
1634
1731
  /* @__PURE__ */ jsxs3("div", { className: "grid grid-cols-[52px_1fr_1fr_52px] items-center gap-2 md:grid-cols-[88px_1fr_1fr_minmax(120px,220px)] md:gap-6", children: [
1635
1732
  /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-1 md:gap-3", children: [
1636
- /* @__PURE__ */ jsx3(VenueLogo, { venue: row.venue, size: "small" }),
1637
- /* @__PURE__ */ jsx3(
1733
+ /* @__PURE__ */ jsx4(VenueLogo, { venue: row.venue, size: "small" }),
1734
+ /* @__PURE__ */ jsx4(
1638
1735
  "span",
1639
1736
  {
1640
1737
  className: cn(
@@ -1645,9 +1742,9 @@ var OrderBookRows = ({
1645
1742
  }
1646
1743
  )
1647
1744
  ] }),
1648
- /* @__PURE__ */ jsx3("span", { className: "truncate text-agg-xs leading-agg-4 text-center text-agg-foreground md:text-agg-sm md:leading-agg-5", children: formatNumber(row.size) }),
1649
- /* @__PURE__ */ jsx3("span", { className: "truncate text-agg-xs leading-agg-4 text-center text-agg-foreground md:text-agg-sm md:leading-agg-5", children: formatCurrency(row.total) }),
1650
- /* @__PURE__ */ jsx3("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx3(
1745
+ /* @__PURE__ */ jsx4("span", { className: "truncate text-agg-xs leading-agg-4 text-center text-agg-foreground md:text-agg-sm md:leading-agg-5", children: formatNumber(row.size) }),
1746
+ /* @__PURE__ */ jsx4("span", { className: "truncate text-agg-xs leading-agg-4 text-center text-agg-foreground md:text-agg-sm md:leading-agg-5", children: formatCurrency(row.total) }),
1747
+ /* @__PURE__ */ jsx4("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx4(
1651
1748
  "div",
1652
1749
  {
1653
1750
  "aria-hidden": "true",
@@ -1658,7 +1755,7 @@ var OrderBookRows = ({
1658
1755
  }
1659
1756
  ) })
1660
1757
  ] }),
1661
- index < rows.length - 1 ? /* @__PURE__ */ jsx3("div", { className: "h-px w-full bg-agg-separator" }) : null
1758
+ index < rows.length - 1 ? /* @__PURE__ */ jsx4("div", { className: "h-px w-full bg-agg-separator" }) : null
1662
1759
  ] }, row.id))
1663
1760
  }
1664
1761
  )
@@ -1696,9 +1793,9 @@ var MarketDetailsContent = ({
1696
1793
  otherContent
1697
1794
  }) => {
1698
1795
  const config = useSdkUiConfig3();
1699
- const labels = useLabels3();
1796
+ const labels = useLabels4();
1700
1797
  const detailsContentId = useId();
1701
- const model = useMemo3(() => {
1798
+ const model = useMemo4(() => {
1702
1799
  return buildMarketDetailsModel({
1703
1800
  event,
1704
1801
  marketId,
@@ -1708,10 +1805,10 @@ var MarketDetailsContent = ({
1708
1805
  labels
1709
1806
  });
1710
1807
  }, [config.formatCompactCurrency, event, image, labels, marketId, title]);
1711
- const resolvedMarket = useMemo3(() => {
1808
+ const resolvedMarket = useMemo4(() => {
1712
1809
  return resolveMarket(event, marketId);
1713
1810
  }, [event, marketId]);
1714
- const marketDetailsTabs = useMemo3(() => {
1811
+ const marketDetailsTabs = useMemo4(() => {
1715
1812
  return getMarketDetailsTabs(labels);
1716
1813
  }, [labels]);
1717
1814
  const [selectedTab, setSelectedTab] = useState2(
@@ -1722,6 +1819,7 @@ var MarketDetailsContent = ({
1722
1819
  setSelectedTab(resolveInitialTab(defaultTab));
1723
1820
  }, [defaultTab]);
1724
1821
  const [selectedTimeRange, setSelectedTimeRange] = useState2(defaultTimeRange);
1822
+ const [selectedChartType, setSelectedChartType] = useState2("line");
1725
1823
  useEffect2(() => {
1726
1824
  setSelectedTimeRange(defaultTimeRange);
1727
1825
  }, [defaultTimeRange]);
@@ -1738,17 +1836,17 @@ var MarketDetailsContent = ({
1738
1836
  resolveInitialOutcomeLabel((_a = model == null ? void 0 : model.outcomeLabels) != null ? _a : [], defaultOutcomeLabel)
1739
1837
  );
1740
1838
  }, [defaultOutcomeLabel, model == null ? void 0 : model.outcomeLabels]);
1741
- const headerOutcomeItems = useMemo3(() => {
1839
+ const headerOutcomeItems = useMemo4(() => {
1742
1840
  if (!model)
1743
1841
  return [];
1744
1842
  return resolveHeaderOutcomeItems(model.market.venueMarkets, selectedOutcomeLabel);
1745
1843
  }, [model, selectedOutcomeLabel]);
1746
- const headlineProbability = useMemo3(() => {
1844
+ const headlineProbability = useMemo4(() => {
1747
1845
  if (!model || !selectedOutcomeLabel)
1748
1846
  return void 0;
1749
1847
  return model.probabilityByLabel.get(selectedOutcomeLabel);
1750
1848
  }, [model, selectedOutcomeLabel]);
1751
- const outcomesByLabel = useMemo3(() => {
1849
+ const outcomesByLabel = useMemo4(() => {
1752
1850
  const outcomesByLabelMap = /* @__PURE__ */ new Map();
1753
1851
  if (!model) {
1754
1852
  return outcomesByLabelMap;
@@ -1761,16 +1859,16 @@ var MarketDetailsContent = ({
1761
1859
  });
1762
1860
  return outcomesByLabelMap;
1763
1861
  }, [headerOutcomeItems, model]);
1764
- const selectedOutcomesByVenue = useMemo3(() => {
1862
+ const selectedOutcomesByVenue = useMemo4(() => {
1765
1863
  var _a;
1766
1864
  if (!selectedOutcomeLabel)
1767
1865
  return [];
1768
1866
  return (_a = outcomesByLabel.get(selectedOutcomeLabel)) != null ? _a : [];
1769
1867
  }, [outcomesByLabel, selectedOutcomeLabel]);
1770
- const timeWindow = useMemo3(() => {
1868
+ const timeWindow = useMemo4(() => {
1771
1869
  return getTimeWindowByRange(selectedTimeRange);
1772
1870
  }, [selectedTimeRange]);
1773
- const graphOutcomes = useMemo3(() => {
1871
+ const graphOutcomes = useMemo4(() => {
1774
1872
  const uniqueOutcomesByVenueAndId = /* @__PURE__ */ new Map();
1775
1873
  outcomesByLabel.forEach((outcomes) => {
1776
1874
  outcomes.forEach((outcomeByVenue) => {
@@ -1783,7 +1881,7 @@ var MarketDetailsContent = ({
1783
1881
  return [...uniqueOutcomesByVenueAndId.values()];
1784
1882
  }, [outcomesByLabel]);
1785
1883
  const canonicalMarketIdForHistory = model == null ? void 0 : model.market.id;
1786
- const priceHistoryGroups = useMemo3(() => {
1884
+ const priceHistoryGroups = useMemo4(() => {
1787
1885
  return buildPriceHistoryGroups(graphOutcomes, canonicalMarketIdForHistory);
1788
1886
  }, [canonicalMarketIdForHistory, graphOutcomes]);
1789
1887
  const { data: priceHistoryData, isLoading: isPriceHistoryLoading } = usePriceHistory2(__spreadProps(__spreadValues({
@@ -1791,7 +1889,7 @@ var MarketDetailsContent = ({
1791
1889
  }, timeWindow), {
1792
1890
  enabled: isOpened && selectedTab === "graph" && priceHistoryGroups.length > 0
1793
1891
  }));
1794
- const orderBookInputs = useMemo3(() => {
1892
+ const orderBookInputs = useMemo4(() => {
1795
1893
  return selectedOutcomesByVenue.map(({ market, outcome }) => ({
1796
1894
  market,
1797
1895
  outcome,
@@ -1807,19 +1905,19 @@ var MarketDetailsContent = ({
1807
1905
  orderbooks: orderBookInputs,
1808
1906
  enabled: isOpened && selectedTab === "order-book" && orderBookInputs.length > 0
1809
1907
  });
1810
- const askRows = useMemo3(() => {
1908
+ const askRows = useMemo4(() => {
1811
1909
  return resolveOrderBookRows({
1812
1910
  data: orderBookData,
1813
1911
  side: "asks"
1814
1912
  });
1815
1913
  }, [orderBookData]);
1816
- const bidRows = useMemo3(() => {
1914
+ const bidRows = useMemo4(() => {
1817
1915
  return resolveOrderBookRows({
1818
1916
  data: orderBookData,
1819
1917
  side: "bids"
1820
1918
  });
1821
1919
  }, [orderBookData]);
1822
- const priceHistoryByVenue = useMemo3(() => {
1920
+ const priceHistoryByVenue = useMemo4(() => {
1823
1921
  const historyByVenue = /* @__PURE__ */ new Map();
1824
1922
  if (!(priceHistoryData == null ? void 0 : priceHistoryData.length)) {
1825
1923
  return historyByVenue;
@@ -1835,7 +1933,7 @@ var MarketDetailsContent = ({
1835
1933
  });
1836
1934
  return historyByVenue;
1837
1935
  }, [priceHistoryData]);
1838
- const graphSeriesByOutcomeLabel = useMemo3(() => {
1936
+ const graphSeriesByOutcomeLabel = useMemo4(() => {
1839
1937
  const seriesByOutcomeLabel = /* @__PURE__ */ new Map();
1840
1938
  const resolveOutcomeCandidateIds2 = (outcomeByVenue) => {
1841
1939
  var _a, _b;
@@ -1863,7 +1961,11 @@ var MarketDetailsContent = ({
1863
1961
  return;
1864
1962
  const points = matchingHistory.points.map((point) => ({
1865
1963
  time: point.timestamp,
1866
- value: point.price * 100
1964
+ value: point.price * 100,
1965
+ open: point.open == null ? void 0 : point.open * 100,
1966
+ high: point.high == null ? void 0 : point.high * 100,
1967
+ low: point.low == null ? void 0 : point.low * 100,
1968
+ close: point.close == null ? void 0 : point.close * 100
1867
1969
  })).filter((point) => Number.isFinite(point.time) && Number.isFinite(point.value));
1868
1970
  if (points.length === 0)
1869
1971
  return;
@@ -1878,7 +1980,7 @@ var MarketDetailsContent = ({
1878
1980
  });
1879
1981
  return seriesByOutcomeLabel;
1880
1982
  }, [canonicalMarketIdForHistory, headerOutcomeItems, outcomesByLabel, priceHistoryByVenue]);
1881
- const graphSeries = useMemo3(() => {
1983
+ const graphSeries = useMemo4(() => {
1882
1984
  var _a;
1883
1985
  if (!selectedOutcomeLabel)
1884
1986
  return [];
@@ -1887,7 +1989,7 @@ var MarketDetailsContent = ({
1887
1989
  return seriesForOutcomeLabel;
1888
1990
  return seriesForOutcomeLabel.filter((seriesItem) => seriesItem.venue === selectedGraphVenue);
1889
1991
  }, [graphSeriesByOutcomeLabel, selectedGraphVenue, selectedOutcomeLabel]);
1890
- const otherRows = useMemo3(() => {
1992
+ const otherRows = useMemo4(() => {
1891
1993
  if (!model)
1892
1994
  return [];
1893
1995
  return resolveOtherTabRows(model.market, labels);
@@ -1941,10 +2043,10 @@ var MarketDetailsContent = ({
1941
2043
  setSelectedGraphVenue(null);
1942
2044
  }, [selectedGraphVenue, selectedOutcomesByVenue]);
1943
2045
  if (marketId && !resolvedMarket) {
1944
- return /* @__PURE__ */ jsx3(MarketDetailsNotFoundState, { ariaLabel, classNames });
2046
+ return /* @__PURE__ */ jsx4(MarketDetailsNotFoundState, { ariaLabel, classNames });
1945
2047
  }
1946
2048
  if (!model) {
1947
- return /* @__PURE__ */ jsx3(MarketDetailsUnavailableState, { ariaLabel, classNames });
2049
+ return /* @__PURE__ */ jsx4(MarketDetailsUnavailableState, { ariaLabel, classNames });
1948
2050
  }
1949
2051
  return /* @__PURE__ */ jsxs3(
1950
2052
  Card,
@@ -1973,7 +2075,7 @@ var MarketDetailsContent = ({
1973
2075
  onKeyDown: handleToggleExpanded,
1974
2076
  children: [
1975
2077
  /* @__PURE__ */ jsxs3("div", { className: "flex min-w-52 items-center gap-3 md:gap-4", children: [
1976
- model.image ? /* @__PURE__ */ jsx3(
2078
+ model.image ? /* @__PURE__ */ jsx4(
1977
2079
  "img",
1978
2080
  {
1979
2081
  src: model.image,
@@ -1982,12 +2084,12 @@ var MarketDetailsContent = ({
1982
2084
  }
1983
2085
  ) : null,
1984
2086
  /* @__PURE__ */ jsxs3("div", { className: "flex min-w-0 flex-col", children: [
1985
- /* @__PURE__ */ jsx3(Typography, { as: "h3", variant: "body-large-strong", className: "truncate", children: model.title }),
1986
- /* @__PURE__ */ jsx3("div", { className: "flex items-center gap-3", children: /* @__PURE__ */ jsx3(Typography, { variant: "label", className: "truncate text-agg-muted-foreground", children: model.subtitle }) })
2087
+ /* @__PURE__ */ jsx4(Typography, { as: "h3", variant: "body-large-strong", className: "truncate", children: model.title }),
2088
+ /* @__PURE__ */ jsx4("div", { className: "flex items-center gap-3", children: /* @__PURE__ */ jsx4(Typography, { variant: "label", className: "truncate text-agg-muted-foreground", children: model.subtitle }) })
1987
2089
  ] })
1988
2090
  ] }),
1989
- /* @__PURE__ */ jsx3(Typography, { as: "div", variant: "heading", className: "shrink-0", children: formatProbabilityPercent(headlineProbability) }),
1990
- /* @__PURE__ */ jsx3(
2091
+ /* @__PURE__ */ jsx4(Typography, { as: "div", variant: "heading", className: "shrink-0", children: formatProbabilityPercent(headlineProbability) }),
2092
+ /* @__PURE__ */ jsx4(
1991
2093
  "div",
1992
2094
  {
1993
2095
  className: "flex gap-2",
@@ -1998,7 +2100,7 @@ var MarketDetailsContent = ({
1998
2100
  children: headerOutcomeItems.map((item) => {
1999
2101
  const isPositive = item.tone === "positive";
2000
2102
  const isActiveOutcome = item.label === selectedOutcomeLabel;
2001
- return /* @__PURE__ */ jsx3(
2103
+ return /* @__PURE__ */ jsx4(
2002
2104
  "button",
2003
2105
  {
2004
2106
  type: "button",
@@ -2016,7 +2118,7 @@ var MarketDetailsContent = ({
2016
2118
  setSelectedOutcomeLabel(item.label);
2017
2119
  },
2018
2120
  children: /* @__PURE__ */ jsxs3("span", { className: "inline-flex items-center gap-2", children: [
2019
- /* @__PURE__ */ jsx3(
2121
+ /* @__PURE__ */ jsx4(
2020
2122
  VenueLogo,
2021
2123
  {
2022
2124
  venue: isPositive ? "polymarket" : "probable",
@@ -2024,7 +2126,7 @@ var MarketDetailsContent = ({
2024
2126
  color: isActiveOutcome ? "var(--agg-color-on-primary)" : void 0
2025
2127
  }
2026
2128
  ),
2027
- /* @__PURE__ */ jsx3(
2129
+ /* @__PURE__ */ jsx4(
2028
2130
  Typography,
2029
2131
  {
2030
2132
  variant: isActiveOutcome ? "body-strong" : "body",
@@ -2045,7 +2147,7 @@ var MarketDetailsContent = ({
2045
2147
  ]
2046
2148
  }
2047
2149
  ),
2048
- /* @__PURE__ */ jsx3(
2150
+ /* @__PURE__ */ jsx4(
2049
2151
  "div",
2050
2152
  {
2051
2153
  id: detailsContentId,
@@ -2056,7 +2158,7 @@ var MarketDetailsContent = ({
2056
2158
  ),
2057
2159
  "aria-hidden": !isOpened,
2058
2160
  children: /* @__PURE__ */ jsxs3("div", { className: "min-h-0", children: [
2059
- /* @__PURE__ */ jsx3("div", { className: "h-px w-full bg-agg-separator" }),
2161
+ /* @__PURE__ */ jsx4("div", { className: "h-px w-full bg-agg-separator" }),
2060
2162
  /* @__PURE__ */ jsxs3(
2061
2163
  "div",
2062
2164
  {
@@ -2071,7 +2173,7 @@ var MarketDetailsContent = ({
2071
2173
  ) : "translate-y-5 opacity-0"
2072
2174
  ),
2073
2175
  children: [
2074
- /* @__PURE__ */ jsx3("div", { className: cn("block", classNames == null ? void 0 : classNames.tabs), children: /* @__PURE__ */ jsx3(
2176
+ /* @__PURE__ */ jsx4("div", { className: cn("block", classNames == null ? void 0 : classNames.tabs), children: /* @__PURE__ */ jsx4(
2075
2177
  Tabs,
2076
2178
  {
2077
2179
  ariaLabel: labels.marketDetails.tabsAria,
@@ -2082,9 +2184,9 @@ var MarketDetailsContent = ({
2082
2184
  className: "w-full px-5"
2083
2185
  }
2084
2186
  ) }),
2085
- /* @__PURE__ */ jsx3("div", { className: "h-px w-full bg-agg-separator" }),
2187
+ /* @__PURE__ */ jsx4("div", { className: "h-px w-full bg-agg-separator" }),
2086
2188
  /* @__PURE__ */ jsxs3("div", { className: cn("p-5", classNames == null ? void 0 : classNames.content), children: [
2087
- selectedTab === "order-book" ? /* @__PURE__ */ jsx3("div", { className: cn("flex flex-col gap-5", classNames == null ? void 0 : classNames.orderBook), children: isOrderBookLoading ? /* @__PURE__ */ jsx3(MarketDetailsOderbookSkeleton, {}) : hasOrderBookError ? /* @__PURE__ */ jsx3(
2189
+ selectedTab === "order-book" ? /* @__PURE__ */ jsx4("div", { className: cn("flex flex-col gap-5", classNames == null ? void 0 : classNames.orderBook), children: isOrderBookLoading ? /* @__PURE__ */ jsx4(MarketDetailsOderbookSkeleton, {}) : hasOrderBookError ? /* @__PURE__ */ jsx4(
2088
2190
  StateMessage,
2089
2191
  {
2090
2192
  ariaLabel: labels.marketDetails.orderBookUnavailableAria,
@@ -2095,7 +2197,7 @@ var MarketDetailsContent = ({
2095
2197
  onAction: handleRetryOrderBook,
2096
2198
  className: "min-h-[248px] px-5 py-10 md:min-h-[272px]"
2097
2199
  }
2098
- ) : hasNoOrderBook ? /* @__PURE__ */ jsx3(
2200
+ ) : hasNoOrderBook ? /* @__PURE__ */ jsx4(
2099
2201
  StateMessage,
2100
2202
  {
2101
2203
  ariaLabel: labels.marketDetails.orderBookEmptyAria,
@@ -2104,7 +2206,7 @@ var MarketDetailsContent = ({
2104
2206
  className: "min-h-[248px] px-5 py-10 md:min-h-[272px]"
2105
2207
  }
2106
2208
  ) : /* @__PURE__ */ jsxs3(Fragment, { children: [
2107
- /* @__PURE__ */ jsx3(
2209
+ /* @__PURE__ */ jsx4(
2108
2210
  OrderBookRows,
2109
2211
  {
2110
2212
  rows: askRows,
@@ -2114,7 +2216,7 @@ var MarketDetailsContent = ({
2114
2216
  visibleRows: orderBookDepth
2115
2217
  }
2116
2218
  ),
2117
- /* @__PURE__ */ jsx3(
2219
+ /* @__PURE__ */ jsx4(
2118
2220
  OrderBookRows,
2119
2221
  {
2120
2222
  rows: bidRows,
@@ -2126,17 +2228,18 @@ var MarketDetailsContent = ({
2126
2228
  )
2127
2229
  ] }) }) : null,
2128
2230
  selectedTab === "graph" ? /* @__PURE__ */ jsxs3("div", { className: cn("flex flex-col gap-5", classNames == null ? void 0 : classNames.graph), children: [
2129
- /* @__PURE__ */ jsx3(
2231
+ /* @__PURE__ */ jsx4(
2130
2232
  LineChart,
2131
2233
  {
2132
2234
  series: graphSeries,
2133
2235
  height: 260,
2134
2236
  isLoading: isPriceHistoryLoading,
2237
+ chartType: selectedChartType,
2135
2238
  classNames: { root: "w-full" },
2136
2239
  showSeriesControls: selectedOutcomesByVenue.length > 0 || headerOutcomeItems.length > 0,
2137
2240
  renderSeriesControls: () => {
2138
2241
  return /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-4 md:flex-row md:items-center md:justify-between", children: [
2139
- /* @__PURE__ */ jsx3("div", { className: "flex flex-wrap gap-2", children: selectedOutcomesByVenue.map((item) => {
2242
+ /* @__PURE__ */ jsx4("div", { className: "flex flex-wrap gap-2", children: selectedOutcomesByVenue.map((item) => {
2140
2243
  const probability = formatProbabilityPercent(item.outcome.price);
2141
2244
  const isActiveVenue = selectedGraphVenue === item.venue;
2142
2245
  return /* @__PURE__ */ jsxs3(
@@ -2156,14 +2259,14 @@ var MarketDetailsContent = ({
2156
2259
  handleGraphVenueToggle(item.venue);
2157
2260
  },
2158
2261
  children: [
2159
- /* @__PURE__ */ jsx3(VenueLogo, { venue: item.venue, size: "small" }),
2160
- /* @__PURE__ */ jsx3("span", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: probability })
2262
+ /* @__PURE__ */ jsx4(VenueLogo, { venue: item.venue, size: "small" }),
2263
+ /* @__PURE__ */ jsx4("span", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: probability })
2161
2264
  ]
2162
2265
  },
2163
2266
  `${item.market.id}-${item.outcome.id}`
2164
2267
  );
2165
2268
  }) }),
2166
- /* @__PURE__ */ jsx3(
2269
+ /* @__PURE__ */ jsx4(
2167
2270
  SwitchButton,
2168
2271
  {
2169
2272
  ariaLabel: labels.marketDetails.outcomeSelectorAria,
@@ -2189,39 +2292,56 @@ var MarketDetailsContent = ({
2189
2292
  classNames == null ? void 0 : classNames.footer
2190
2293
  ),
2191
2294
  children: [
2192
- /* @__PURE__ */ jsx3("span", { children: typeof model.market.volume === "number" ? `${config.formatCompactCurrency(model.market.volume)} ${labels.marketDetails.meta.volumeSuffix}` : labels.marketDetails.volumeUnavailable }),
2193
- /* @__PURE__ */ jsx3("div", { className: "flex flex-wrap items-center gap-3 md:gap-4", children: eventListItemDetailsTimeRanges.map((timeRange) => {
2194
- const isActive = selectedTimeRange === timeRange;
2195
- return /* @__PURE__ */ jsx3(
2196
- "button",
2295
+ /* @__PURE__ */ jsx4("span", { children: typeof model.market.volume === "number" ? `${config.formatCompactCurrency(model.market.volume)} ${labels.marketDetails.meta.volumeSuffix}` : labels.marketDetails.volumeUnavailable }),
2296
+ /* @__PURE__ */ jsxs3("div", { className: "flex flex-wrap items-center gap-3 md:gap-4", children: [
2297
+ /* @__PURE__ */ jsx4(
2298
+ ChartTypeSwitch,
2299
+ {
2300
+ className: "shrink-0",
2301
+ value: selectedChartType,
2302
+ onValueChange: setSelectedChartType
2303
+ }
2304
+ ),
2305
+ /* @__PURE__ */ jsx4(
2306
+ "span",
2197
2307
  {
2198
- type: "button",
2199
- className: cn(
2200
- "cursor-pointer text-agg-sm leading-agg-5",
2201
- isActive ? "font-agg-bold text-agg-foreground" : "font-agg-normal text-agg-muted-foreground"
2202
- ),
2203
- "aria-pressed": isActive,
2204
- onClick: (e) => {
2205
- e.preventDefault();
2206
- e.stopPropagation();
2207
- setSelectedTimeRange(timeRange);
2308
+ "aria-hidden": "true",
2309
+ className: "hidden h-4 w-px bg-agg-separator md:block"
2310
+ }
2311
+ ),
2312
+ eventListItemDetailsTimeRanges.map((timeRange) => {
2313
+ const isActive = selectedTimeRange === timeRange;
2314
+ return /* @__PURE__ */ jsx4(
2315
+ "button",
2316
+ {
2317
+ type: "button",
2318
+ className: cn(
2319
+ "cursor-pointer text-agg-sm leading-agg-5",
2320
+ isActive ? "font-agg-bold text-agg-foreground" : "font-agg-normal text-agg-muted-foreground"
2321
+ ),
2322
+ "aria-pressed": isActive,
2323
+ onClick: (e) => {
2324
+ e.preventDefault();
2325
+ e.stopPropagation();
2326
+ setSelectedTimeRange(timeRange);
2327
+ },
2328
+ children: timeRange === "ALL" ? labels.eventItemDetails.allTimeRange : timeRange
2208
2329
  },
2209
- children: timeRange === "ALL" ? labels.eventItemDetails.allTimeRange : timeRange
2210
- },
2211
- timeRange
2212
- );
2213
- }) })
2330
+ timeRange
2331
+ );
2332
+ })
2333
+ ] })
2214
2334
  ]
2215
2335
  }
2216
2336
  )
2217
2337
  ] }) : null,
2218
- selectedTab === "other" ? /* @__PURE__ */ jsx3("div", { className: "flex flex-col gap-4", children: otherContent != null ? otherContent : /* @__PURE__ */ jsx3("div", { className: "grid grid-cols-1 gap-3", children: otherRows.map((row) => /* @__PURE__ */ jsxs3(
2338
+ selectedTab === "other" ? /* @__PURE__ */ jsx4("div", { className: "flex flex-col gap-4", children: otherContent != null ? otherContent : /* @__PURE__ */ jsx4("div", { className: "grid grid-cols-1 gap-3", children: otherRows.map((row) => /* @__PURE__ */ jsxs3(
2219
2339
  "div",
2220
2340
  {
2221
2341
  className: "flex items-center justify-between rounded-agg-xl bg-agg-secondary-hover px-4 py-3",
2222
2342
  children: [
2223
- /* @__PURE__ */ jsx3(Typography, { variant: "label", className: "text-agg-muted-foreground", children: row.label }),
2224
- /* @__PURE__ */ jsx3(Typography, { variant: "body", className: "text-right", children: row.value })
2343
+ /* @__PURE__ */ jsx4(Typography, { variant: "label", className: "text-agg-muted-foreground", children: row.label }),
2344
+ /* @__PURE__ */ jsx4(Typography, { variant: "body", className: "text-right", children: row.value })
2225
2345
  ]
2226
2346
  },
2227
2347
  row.label
@@ -2264,7 +2384,7 @@ var MarketDetails = (props) => {
2264
2384
  enabled: !props.isLoading && !hasEventProp && !!props.eventId
2265
2385
  });
2266
2386
  if (props.isLoading) {
2267
- return /* @__PURE__ */ jsx3(
2387
+ return /* @__PURE__ */ jsx4(
2268
2388
  MarketDetailsLoadingState,
2269
2389
  {
2270
2390
  isOpened: resolvedIsOpened,
@@ -2274,7 +2394,7 @@ var MarketDetails = (props) => {
2274
2394
  );
2275
2395
  }
2276
2396
  if ("event" in props && props.event) {
2277
- return /* @__PURE__ */ jsx3(
2397
+ return /* @__PURE__ */ jsx4(
2278
2398
  MarketDetailsContent,
2279
2399
  __spreadProps(__spreadValues({}, props), {
2280
2400
  isOpened: resolvedIsOpened,
@@ -2284,7 +2404,7 @@ var MarketDetails = (props) => {
2284
2404
  );
2285
2405
  }
2286
2406
  if (isFetchingEvent) {
2287
- return /* @__PURE__ */ jsx3(
2407
+ return /* @__PURE__ */ jsx4(
2288
2408
  MarketDetailsLoadingState,
2289
2409
  {
2290
2410
  isOpened: resolvedIsOpened,
@@ -2295,11 +2415,11 @@ var MarketDetails = (props) => {
2295
2415
  }
2296
2416
  if (!fetchedEvent) {
2297
2417
  if (isErrorWithStatus(eventError, 404)) {
2298
- return /* @__PURE__ */ jsx3(MarketDetailsNotFoundState, { ariaLabel: props.ariaLabel, classNames: props.classNames });
2418
+ return /* @__PURE__ */ jsx4(MarketDetailsNotFoundState, { ariaLabel: props.ariaLabel, classNames: props.classNames });
2299
2419
  }
2300
- return /* @__PURE__ */ jsx3(MarketDetailsUnavailableState, { ariaLabel: props.ariaLabel, classNames: props.classNames });
2420
+ return /* @__PURE__ */ jsx4(MarketDetailsUnavailableState, { ariaLabel: props.ariaLabel, classNames: props.classNames });
2301
2421
  }
2302
- return /* @__PURE__ */ jsx3(
2422
+ return /* @__PURE__ */ jsx4(
2303
2423
  MarketDetailsContent,
2304
2424
  __spreadProps(__spreadValues({}, props), {
2305
2425
  isOpened: resolvedIsOpened,
@@ -2311,8 +2431,8 @@ var MarketDetails = (props) => {
2311
2431
  MarketDetails.displayName = "MarketDetails";
2312
2432
 
2313
2433
  // src/events/list/index.tsx
2314
- import { useCallback, useEffect as useEffect3, useMemo as useMemo4, useRef, useState as useState3 } from "react";
2315
- import { useEvents, useLabels as useLabels4 } from "@agg-market/hooks";
2434
+ import { useCallback, useEffect as useEffect3, useMemo as useMemo5, useRef, useState as useState3 } from "react";
2435
+ import { useEvents, useLabels as useLabels5 } from "@agg-market/hooks";
2316
2436
 
2317
2437
  // src/events/list/event-list.constants.ts
2318
2438
  var POLYMARKET_VENUE = "polymarket";
@@ -2363,14 +2483,14 @@ var resolveTabVenus = (tab) => {
2363
2483
  };
2364
2484
 
2365
2485
  // src/events/list/index.tsx
2366
- import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
2486
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
2367
2487
  var renderTabIcon = (tab, isActive) => {
2368
2488
  if (tab.venueLogo) {
2369
- return /* @__PURE__ */ jsx4(VenueLogo, { venue: tab.venueLogo, size: "small" });
2489
+ return /* @__PURE__ */ jsx5(VenueLogo, { venue: tab.venueLogo, size: "small" });
2370
2490
  }
2371
2491
  if (!tab.iconName)
2372
2492
  return null;
2373
- return /* @__PURE__ */ jsx4(
2493
+ return /* @__PURE__ */ jsx5(
2374
2494
  Icon,
2375
2495
  {
2376
2496
  name: tab.iconName,
@@ -2415,21 +2535,21 @@ var EventList = ({
2415
2535
  categoryIds
2416
2536
  }) => {
2417
2537
  var _a, _b;
2418
- const labels = useLabels4();
2419
- const defaultEventListTabs = useMemo4(() => {
2538
+ const labels = useLabels5();
2539
+ const defaultEventListTabs = useMemo5(() => {
2420
2540
  return getDefaultEventListTabs(labels);
2421
2541
  }, [labels]);
2422
2542
  const [activeTabValue, setActiveTabValue] = useState3(
2423
2543
  (_b = (_a = defaultEventListTabs[0]) == null ? void 0 : _a.value) != null ? _b : "matched"
2424
2544
  );
2425
2545
  const [_shouldUseSelectOverflow, setShouldUseSelectOverflow] = useState3(false);
2426
- const activeTab = useMemo4(() => {
2546
+ const activeTab = useMemo5(() => {
2427
2547
  return defaultEventListTabs.find((tab) => tab.value === activeTabValue);
2428
2548
  }, [activeTabValue]);
2429
- const venues = useMemo4(() => {
2549
+ const venues = useMemo5(() => {
2430
2550
  return resolveTabVenus(activeTab);
2431
2551
  }, [activeTab]);
2432
- const resolvedMaxVisibleItems = useMemo4(() => {
2552
+ const resolvedMaxVisibleItems = useMemo5(() => {
2433
2553
  if (!Number.isFinite(maxVisibleItems))
2434
2554
  return void 0;
2435
2555
  return Math.max(1, Math.floor(maxVisibleItems));
@@ -2442,16 +2562,16 @@ var EventList = ({
2442
2562
  categoryIds,
2443
2563
  limit: requestLimit
2444
2564
  });
2445
- const filteredEvents = useMemo4(() => {
2565
+ const filteredEvents = useMemo5(() => {
2446
2566
  return filterEventsByTabValue(events, activeTabValue);
2447
2567
  }, [events, activeTabValue]);
2448
- const tileEvents = useMemo4(() => {
2568
+ const tileEvents = useMemo5(() => {
2449
2569
  const normalizedEvents = filteredEvents.map((event) => mapEventToEventListItemEvent(event)).filter((event) => event != null);
2450
2570
  if (resolvedMaxVisibleItems == null)
2451
2571
  return normalizedEvents;
2452
2572
  return normalizedEvents.slice(0, resolvedMaxVisibleItems);
2453
2573
  }, [filteredEvents, resolvedMaxVisibleItems]);
2454
- const tabsItems = useMemo4(() => {
2574
+ const tabsItems = useMemo5(() => {
2455
2575
  return defaultEventListTabs.map((tab) => {
2456
2576
  const isActive = tab.value === activeTabValue;
2457
2577
  return {
@@ -2540,7 +2660,7 @@ var EventList = ({
2540
2660
  "md:[grid-template-columns:repeat(var(--agg-event-list-columns),minmax(0,1fr))]"
2541
2661
  );
2542
2662
  if (shouldRenderLoadingState) {
2543
- return /* @__PURE__ */ jsx4(Skeleton, { view: "event-list", ariaLabel: labels.eventList.loading(title) });
2663
+ return /* @__PURE__ */ jsx5(Skeleton, { view: "event-list", ariaLabel: labels.eventList.loading(title) });
2544
2664
  }
2545
2665
  return /* @__PURE__ */ jsxs4("section", { className: "flex w-full flex-col gap-5", children: [
2546
2666
  /* @__PURE__ */ jsxs4(
@@ -2549,8 +2669,8 @@ var EventList = ({
2549
2669
  ref: headerRef,
2550
2670
  className: "flex flex-col sm:flex-row w-full flex-nowrap items-start sm:items-center justify-between gap-2 sm:gap-4",
2551
2671
  children: [
2552
- /* @__PURE__ */ jsx4("div", { ref: titleRef, className: "min-w-0", children: /* @__PURE__ */ jsx4(Typography, { as: "h2", variant: "title", className: "truncate [&::first-letter]:uppercase", children: title }) }),
2553
- /* @__PURE__ */ jsx4(
2672
+ /* @__PURE__ */ jsx5("div", { ref: titleRef, className: "min-w-0", children: /* @__PURE__ */ jsx5(Typography, { as: "h2", variant: "title", className: "truncate [&::first-letter]:uppercase", children: title }) }),
2673
+ /* @__PURE__ */ jsx5(
2554
2674
  Tabs,
2555
2675
  {
2556
2676
  ariaLabel: labels.eventList.tabsAria(title),
@@ -2563,7 +2683,7 @@ var EventList = ({
2563
2683
  }
2564
2684
  ),
2565
2685
  /* @__PURE__ */ jsxs4("div", { className: gridClassName, style: gridStyle, children: [
2566
- tileEvents.map((event) => /* @__PURE__ */ jsx4(
2686
+ tileEvents.map((event) => /* @__PURE__ */ jsx5(
2567
2687
  EventListItem,
2568
2688
  {
2569
2689
  event,
@@ -2574,7 +2694,7 @@ var EventList = ({
2574
2694
  },
2575
2695
  event.id
2576
2696
  )),
2577
- Array.from({ length: loadingPlaceholderCount }).map((_, index) => /* @__PURE__ */ jsx4(
2697
+ Array.from({ length: loadingPlaceholderCount }).map((_, index) => /* @__PURE__ */ jsx5(
2578
2698
  EventListItem,
2579
2699
  {
2580
2700
  isLoading: true,
@@ -2584,7 +2704,7 @@ var EventList = ({
2584
2704
  },
2585
2705
  `loading-${index}`
2586
2706
  )),
2587
- !isLoading && !isError && (tileEvents == null ? void 0 : tileEvents.length) === 0 ? /* @__PURE__ */ jsx4(Card, { className: "col-span-full overflow-hidden shadow-none hover:shadow-none", children: /* @__PURE__ */ jsx4(
2707
+ !isLoading && !isError && (tileEvents == null ? void 0 : tileEvents.length) === 0 ? /* @__PURE__ */ jsx5(Card, { className: "col-span-full overflow-hidden shadow-none hover:shadow-none", children: /* @__PURE__ */ jsx5(
2588
2708
  StateMessage,
2589
2709
  {
2590
2710
  ariaLabel: labels.eventList.emptyAria,
@@ -2593,7 +2713,7 @@ var EventList = ({
2593
2713
  className: "min-h-[320px]"
2594
2714
  }
2595
2715
  ) }) : null,
2596
- isError ? /* @__PURE__ */ jsx4(
2716
+ isError ? /* @__PURE__ */ jsx5(
2597
2717
  Typography,
2598
2718
  {
2599
2719
  variant: "body",
@@ -2602,7 +2722,7 @@ var EventList = ({
2602
2722
  }
2603
2723
  ) : null
2604
2724
  ] }),
2605
- shouldPaginate && hasNextPage ? /* @__PURE__ */ jsx4("div", { ref: loadMoreRef, className: "h-px w-full", "aria-hidden": true }) : null
2725
+ shouldPaginate && hasNextPage ? /* @__PURE__ */ jsx5("div", { ref: loadMoreRef, className: "h-px w-full", "aria-hidden": true }) : null
2606
2726
  ] });
2607
2727
  };
2608
2728
  EventList.displayName = "EventList";