@orderly.network/trading-leaderboard 2.8.6 → 2.8.7-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { createContext, memo, useState, useRef, useCallback, useEffect, useMemo, useContext } from 'react';
2
2
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
- import { useEmblaCarousel, ChevronLeftIcon, ChevronRightIcon, cn, Text, Box, Flex, Select, Button, useScreen, usePagination, DataFilter, Input, CloseCircleFillIcon, DataTable, Spinner, Divider, toast, ScrollIndicator as ScrollIndicator$1, Tabs, TabPanel, Tooltip, InfoCircleIcon } from '@orderly.network/ui';
3
+ import { useEmblaCarousel, ChevronLeftIcon, ChevronRightIcon, cn, Text, Box, Flex, Select, Button, useScreen, usePagination, DataFilter, Input, CloseCircleFillIcon, DataTable, Spinner, Divider, toast, ScrollIndicator as ScrollIndicator$1, useLongPress, modal, InfoCircleIcon, Tooltip, Tabs, TabPanel } from '@orderly.network/ui';
4
4
  import { useTranslation, i18n, Trans } from '@orderly.network/i18n';
5
5
  import { useTrack, useAccount, useConfig, useQuery, useInfiniteQuery, usePrivateQuery, noCacheConfig, useMemoizedFn, useMutation } from '@orderly.network/hooks';
6
6
  import { TrackerEventName, AccountStatusEnum, EMPTY_LIST } from '@orderly.network/types';
@@ -1547,7 +1547,7 @@ function isSameAddress2(address1, address2) {
1547
1547
  function getCurrentAddressRowKey(address) {
1548
1548
  return `current-address-${address?.toLowerCase()}`;
1549
1549
  }
1550
- var useRankingColumns = (fields, address, enableSort, brokerId) => {
1550
+ var useRankingColumns = (fields, address, enableSort, type) => {
1551
1551
  const { t } = useTranslation();
1552
1552
  const { isMobile } = useScreen();
1553
1553
  return useMemo(() => {
@@ -1606,7 +1606,7 @@ var useRankingColumns = (fields, address, enableSort, brokerId) => {
1606
1606
  "a",
1607
1607
  {
1608
1608
  className: "oui-flex oui-items-start oui-gap-1",
1609
- href: `https://orderly-dashboard.orderly.network/address/${value}?broker_id=${brokerId}`,
1609
+ href: `https://orderly-dashboard.orderly.network/address/${value}?broker_id=${record.broker_id}`,
1610
1610
  target: "_blank",
1611
1611
  rel: "noreferrer",
1612
1612
  children: [
@@ -1634,7 +1634,7 @@ var useRankingColumns = (fields, address, enableSort, brokerId) => {
1634
1634
  width: 90
1635
1635
  },
1636
1636
  {
1637
- title: t("tradingLeaderboard.tradingVolume"),
1637
+ title: /* @__PURE__ */ jsx(VolumeColumnTitle, {}),
1638
1638
  dataIndex: "volume",
1639
1639
  onSort: enableSort,
1640
1640
  align: isMobile ? "right" : "left",
@@ -1647,7 +1647,7 @@ var useRankingColumns = (fields, address, enableSort, brokerId) => {
1647
1647
  width: 105
1648
1648
  },
1649
1649
  {
1650
- title: t("common.pnl"),
1650
+ title: /* @__PURE__ */ jsx(PnLColumnTitle, { type }),
1651
1651
  dataIndex: "pnl",
1652
1652
  onSort: enableSort,
1653
1653
  align: isMobile ? "right" : "left",
@@ -1683,7 +1683,7 @@ var useRankingColumns = (fields, address, enableSort, brokerId) => {
1683
1683
  return columns.filter(
1684
1684
  (column) => fields?.includes(column.dataIndex)
1685
1685
  );
1686
- }, [t, isMobile, address, fields, enableSort, brokerId]);
1686
+ }, [t, isMobile, address, fields, enableSort, type]);
1687
1687
  };
1688
1688
  var FirstRankIcon = () => {
1689
1689
  return /* @__PURE__ */ jsxs(
@@ -1803,13 +1803,50 @@ var ThirdRankIcon = () => {
1803
1803
  }
1804
1804
  );
1805
1805
  };
1806
+ var PnLColumnTitle = ({ type }) => {
1807
+ const { isMobile } = useScreen();
1808
+ const { t } = useTranslation();
1809
+ const tooltipContent = type === "general" ? t("tradingLeaderboard.realizedPnl.tooltip") : t("tradingLeaderboard.pnl.tooltip");
1810
+ const longPress = useLongPress(() => {
1811
+ modal.alert({
1812
+ title: t("common.tips"),
1813
+ message: tooltipContent
1814
+ });
1815
+ });
1816
+ const view = /* @__PURE__ */ jsxs(Flex, { gap: 1, children: [
1817
+ /* @__PURE__ */ jsx("div", { children: type === "general" ? t("common.realizedPnl") : t("common.pnl") }),
1818
+ /* @__PURE__ */ jsx(InfoCircleIcon, { opacity: 1, className: "w-4 h-4 cursor-pointer" })
1819
+ ] });
1820
+ if (isMobile) {
1821
+ return /* @__PURE__ */ jsx("div", { ...longPress, children: view });
1822
+ }
1823
+ return /* @__PURE__ */ jsx(Tooltip, { content: tooltipContent, children: view });
1824
+ };
1825
+ var VolumeColumnTitle = () => {
1826
+ const { isMobile } = useScreen();
1827
+ const { t } = useTranslation();
1828
+ const tooltipContent = "Total trading volume generated during the campaign period. Updated every 30 seconds.";
1829
+ const longPress = useLongPress(() => {
1830
+ modal.alert({
1831
+ title: t("common.tips"),
1832
+ message: tooltipContent
1833
+ });
1834
+ });
1835
+ const view = /* @__PURE__ */ jsxs(Flex, { gap: 1, children: [
1836
+ /* @__PURE__ */ jsx("div", { children: t("tradingLeaderboard.tradingVolume") }),
1837
+ /* @__PURE__ */ jsx(InfoCircleIcon, { opacity: 1, className: "w-4 h-4 cursor-pointer" })
1838
+ ] });
1839
+ if (isMobile) {
1840
+ return /* @__PURE__ */ jsx("div", { ...longPress, children: view });
1841
+ }
1842
+ return /* @__PURE__ */ jsx(Tooltip, { content: tooltipContent, children: view });
1843
+ };
1806
1844
  var Ranking = (props) => {
1807
- const brokerId = useConfig("brokerId");
1808
1845
  const column = useRankingColumns(
1809
1846
  props.fields,
1810
1847
  props.address,
1811
1848
  typeof props.onSort === "function",
1812
- brokerId
1849
+ props.type
1813
1850
  );
1814
1851
  const { isMobile } = useScreen();
1815
1852
  const onRow = useCallback(
@@ -2276,7 +2313,7 @@ var GeneralRankingWidget = (props) => {
2276
2313
  address,
2277
2314
  sortKey
2278
2315
  });
2279
- return /* @__PURE__ */ jsx(Ranking, { ...state, ...rest, fields });
2316
+ return /* @__PURE__ */ jsx(Ranking, { ...state, ...rest, fields, type: "general" });
2280
2317
  };
2281
2318
 
2282
2319
  // src/components/rewards/utils.ts
@@ -2709,7 +2746,7 @@ var CampaignRankingWidget = (props) => {
2709
2746
  campaignId,
2710
2747
  sortKey
2711
2748
  });
2712
- return /* @__PURE__ */ jsx(Ranking, { ...state, ...rest, fields });
2749
+ return /* @__PURE__ */ jsx(Ranking, { ...state, ...rest, fields, type: "campaign" });
2713
2750
  };
2714
2751
  var FilterDays2 = [7, 14, 30, 90];
2715
2752
  function useGeneralLeaderboardScript(options) {
@@ -5473,7 +5510,7 @@ function isSameAddress3(address1, address2) {
5473
5510
  function getCurrentAddressRowKey2(address) {
5474
5511
  return `current-address-${address?.toLowerCase()}`;
5475
5512
  }
5476
- var useRankingColumns2 = (fields, address, enableSort, brokerId) => {
5513
+ var useRankingColumns2 = (fields, address, enableSort, type) => {
5477
5514
  const { t } = useTranslation();
5478
5515
  const { isMobile } = useScreen();
5479
5516
  return useMemo(() => {
@@ -5532,7 +5569,7 @@ var useRankingColumns2 = (fields, address, enableSort, brokerId) => {
5532
5569
  "a",
5533
5570
  {
5534
5571
  className: "oui-flex oui-items-start oui-gap-1",
5535
- href: `https://orderly-dashboard.orderly.network/address/${value}?broker_id=${brokerId}`,
5572
+ href: `https://orderly-dashboard.orderly.network/address/${value}?broker_id=${record.broker_id}`,
5536
5573
  target: "_blank",
5537
5574
  rel: "noreferrer",
5538
5575
  children: [
@@ -5609,7 +5646,7 @@ var useRankingColumns2 = (fields, address, enableSort, brokerId) => {
5609
5646
  return columns.filter(
5610
5647
  (column) => fields?.includes(column.dataIndex)
5611
5648
  );
5612
- }, [t, isMobile, address, fields, enableSort, brokerId]);
5649
+ }, [t, isMobile, address, fields, enableSort, type]);
5613
5650
  };
5614
5651
  var FirstRankIcon2 = () => {
5615
5652
  return /* @__PURE__ */ jsxs(
@@ -5730,12 +5767,11 @@ var ThirdRankIcon2 = () => {
5730
5767
  );
5731
5768
  };
5732
5769
  var Ranking2 = (props) => {
5733
- const brokerId = useConfig("brokerId");
5734
5770
  const column = useRankingColumns2(
5735
5771
  props.fields,
5736
5772
  props.address,
5737
5773
  typeof props.onSort === "function",
5738
- brokerId
5774
+ props.type
5739
5775
  );
5740
5776
  const { isMobile } = useScreen();
5741
5777
  const onRow = useCallback(
@@ -6150,7 +6186,7 @@ var GeneralRankingWidget2 = (props) => {
6150
6186
  sortKey,
6151
6187
  weekOneAddresses
6152
6188
  });
6153
- return /* @__PURE__ */ jsx(Ranking2, { ...state, ...rest, fields });
6189
+ return /* @__PURE__ */ jsx(Ranking2, { ...state, ...rest, fields, type: "general" });
6154
6190
  };
6155
6191
  var LeaderboardFilter2 = (props) => {
6156
6192
  const { t } = useTranslation();