-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathBalanceBlock.tsx
50 lines (43 loc) · 1.58 KB
/
BalanceBlock.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import React from "react";
import { useTheme } from "@emotion/react";
import styled from "@emotion/styled";
import { AssetBlockData } from "@components/SelectAssets/SelectAssetsInput";
import { SmartFlex } from "@components/SmartFlex";
import Text from "@components/Text";
import { useStores } from "@stores";
import { DEFAULT_DECIMALS } from "@constants";
import BN from "@utils/BN";
interface BalanceBlockProps {
icon: React.ReactElement;
nameWallet: string;
token: AssetBlockData;
showBalance: "balance" | "walletBalance" | "contractBalance";
}
export const BalanceBlock: React.FC<BalanceBlockProps> = ({ icon, nameWallet, token, showBalance }) => {
const { oracleStore } = useStores();
const theme = useTheme();
const price = BN.formatUnits(oracleStore.getTokenIndexPrice(token.asset.priceFeed), DEFAULT_DECIMALS);
return (
<SmartFlexBalance>
<SmartFlex alignItems="center" gap="10px">
{icon}
<Text type="BUTTON">{nameWallet}</Text>
</SmartFlex>
<SmartFlex column>
<Text style={{ textAlign: "right" }} type="TEXT" primary>
{new BN(token[showBalance]).toSignificant(token.asset.decimals)}
</Text>
<Text color={theme.colors.greenLight} style={{ textAlign: "right" }} type="BODY">
${price.multipliedBy(token[showBalance]).toSignificant(2)}
</Text>
</SmartFlex>
</SmartFlexBalance>
);
};
const SmartFlexBalance = styled(SmartFlex)`
justify-content: space-between;
align-items: center;
padding: 16px 20px;
background: ${({ theme }) => theme.colors.borderSecondary};
border-radius: 8px;
`;