From 8427cdc40c008c2bcfe5e164223762707abc03f3 Mon Sep 17 00:00:00 2001 From: 2nthony Date: Wed, 13 Nov 2024 17:04:26 +0800 Subject: [PATCH] treasury detail bounties #1404 (#1413) --- .../polkadot/treasuryDetail/bounties.jsx | 63 +++++++++++++++++++ .../polkadot/treasuryDetail/common/item.jsx | 5 +- .../polkadot/treasuryDetail/index.jsx | 2 + 3 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 site/src/pages/Overview/polkadot/treasuryDetail/bounties.jsx diff --git a/site/src/pages/Overview/polkadot/treasuryDetail/bounties.jsx b/site/src/pages/Overview/polkadot/treasuryDetail/bounties.jsx new file mode 100644 index 000000000..c3037292c --- /dev/null +++ b/site/src/pages/Overview/polkadot/treasuryDetail/bounties.jsx @@ -0,0 +1,63 @@ +import { Link as LinkOrigin } from "react-router-dom"; +import { useBountiesData } from "../../../../hooks/bounties/useBountiesData"; +import TreasuryDetailItem from "./common/item"; +import { useBountiesTotalBalance } from "../../../../hooks/bounties/useBountiesBalances"; +import ValueDisplay from "../../../../components/ValueDisplay"; +import { currentChainSettings } from "../../../../utils/chains"; +import styled from "styled-components"; +import AssetWrapper from "./common/assetWrapper"; +import AssetValueDisplay from "./common/assetValueDisplay"; +import { overviewSelector } from "../../../../store/reducers/overviewSlice"; +import { useSelector } from "react-redux"; +import { toPrecision } from "../../../../utils"; +import BigNumber from "bignumber.js"; +import SkeletonBar from "../../../../components/skeleton/bar"; + +const Link = styled(LinkOrigin)` + color: var(--textSecondary); + &:hover { + color: var(--textSecondary); + text-decoration: underline; + } +`; + +// TODO: overview, loading effects +export default function TreasuryDetailBounties() { + const { bounties, bountiesCount } = useBountiesData(); + const { balance, isLoading } = useBountiesTotalBalance(bounties); + const overview = useSelector(overviewSelector); + const dotPrice = overview?.latestSymbolPrice ?? 0; + + const total = toPrecision( + BigNumber(balance).multipliedBy(dotPrice), + currentChainSettings.decimals, + ); + + return ( + + Bounties ยท {bountiesCount} + + } + titleTooltipContent="Funds for bounty programs" + iconSrc="/imgs/data-bounties.svg" + content={ + isLoading ? ( + + ) : ( + + ) + } + footer={ + + + + } + /> + ); +} diff --git a/site/src/pages/Overview/polkadot/treasuryDetail/common/item.jsx b/site/src/pages/Overview/polkadot/treasuryDetail/common/item.jsx index 49d7e92b7..64c86e534 100644 --- a/site/src/pages/Overview/polkadot/treasuryDetail/common/item.jsx +++ b/site/src/pages/Overview/polkadot/treasuryDetail/common/item.jsx @@ -2,7 +2,7 @@ import styled from "styled-components"; import SummaryItemOrigin from "../../../../../components/Summary/Item"; import { space_y } from "../../../../../styles/tailwindcss"; import ImageWithDark from "../../../../../components/ImageWithDark"; -import { h3_18_semibold } from "../../../../../styles/text"; +import { h3_18_semibold, p_12_medium } from "../../../../../styles/text"; import Tooltip from "../../../../../components/Tooltip"; const Wrapper = styled.div` @@ -22,6 +22,7 @@ const SummaryItem = styled(SummaryItemOrigin)` `; const TitleWrapper = styled.div` + ${p_12_medium} display: flex; align-items: center; gap: 4px; @@ -45,7 +46,7 @@ export default function TreasuryDetailItem({ } - icon={iconSrc && } + icon={iconSrc && } content={content && {content}} footer={footer} /> diff --git a/site/src/pages/Overview/polkadot/treasuryDetail/index.jsx b/site/src/pages/Overview/polkadot/treasuryDetail/index.jsx index b87bdb59b..849230543 100644 --- a/site/src/pages/Overview/polkadot/treasuryDetail/index.jsx +++ b/site/src/pages/Overview/polkadot/treasuryDetail/index.jsx @@ -4,6 +4,7 @@ import styled from "styled-components"; import Card from "../../../../components/Card"; import TreasuryDetailHydration from "./hydration"; import { grid, grid_cols } from "../../../../styles/tailwindcss"; +import TreasuryDetailBounties from "./bounties"; const Wrapper = styled(Card)` padding: 24px; @@ -16,6 +17,7 @@ export default function OverviewTreasuryDetail() { return ( + ); }