zepio/app/components/wallet-summary.js

118 lines
3.2 KiB
JavaScript
Raw Normal View History

2018-12-10 09:07:45 -08:00
// @flow
import React from 'react';
import styled from 'styled-components';
import { TextComponent } from './text';
import { RowComponent } from './row';
import { DropdownComponent } from './dropdown';
import MenuIcon from '../assets/images/menu_icon.svg';
2018-12-12 13:13:13 -08:00
import formatNumber from '../utils/formatNumber';
import theme from '../theme';
2018-12-10 09:07:45 -08:00
const Wrapper = styled.div`
2018-12-10 16:11:53 -08:00
display: flex;
flex-direction: column;
2018-12-10 09:07:45 -08:00
background-color: ${props => props.theme.colors.cardBackgroundColor};
2018-12-10 16:21:07 -08:00
border-radius: 5px;
2018-12-11 14:26:28 -08:00
padding: 37px 45px;
margin-top: 20px;
position: relative;
2018-12-10 09:07:45 -08:00
`;
const AllAddresses = styled(TextComponent)`
margin-bottom: 2.5px;
font-size: ${props => `${props.theme.fontSize.text}em`};
2018-12-10 09:07:45 -08:00
`;
const ValueBox = styled.div`
margin-bottom: 15px;
margin-right: 25px;
`;
const Label = styled(TextComponent)`
2018-12-11 14:26:28 -08:00
margin-top: 10px;
margin-bottom: 5px;
margin-left: -7.5px;
2018-12-10 09:07:45 -08:00
`;
const USDValue = styled(TextComponent)`
2018-12-11 14:26:28 -08:00
opacity: 0.5;
2018-12-10 09:07:45 -08:00
`;
const ShieldedValue = styled(Label)`
color: ${props => props.theme.colors.activeItem};
`;
const SeeMoreButton = styled.button`
2018-12-10 16:21:07 -08:00
display: flex;
align-items: center;
justify-content: center;
outline: none;
border-style: solid;
border-radius: 100%;
border-width: 1px;
border-color: ${props => (props.isOpen ? props.theme.colors.activeItem : props.theme.colors.inactiveItem)};
background-color: transparent;
padding: 5px;
cursor: pointer;
position: absolute;
right: 10px;
top: 10px;
&:hover {
border-color: ${props => props.theme.colors.activeItem};
}
`;
const SeeMoreIcon = styled.img`
width: 25px;
height: 25px;
`;
2018-12-10 09:07:45 -08:00
type Props = {
total: number,
shielded: number,
transparent: number,
dollarValue: number,
2018-12-10 16:11:53 -08:00
addresses: string[],
2018-12-10 09:07:45 -08:00
};
export const WalletSummaryComponent = ({
2018-12-10 16:11:53 -08:00
total, shielded, transparent, dollarValue, addresses,
2018-12-10 09:07:45 -08:00
}: Props) => (
<Wrapper>
<DropdownComponent
2018-12-10 16:52:45 -08:00
label='All Addresses'
renderTrigger={(toggleVisibility, isOpen) => (
<SeeMoreButton onClick={toggleVisibility} isOpen={isOpen}>
<SeeMoreIcon src={MenuIcon} alt='Menu Icon' />
</SeeMoreButton>
)}
2018-12-10 16:11:53 -08:00
options={addresses.map(addr => ({ label: addr, onClick: x => x }))}
/>
2018-12-10 09:07:45 -08:00
<AllAddresses value='ALL ADDRESSES' isBold />
<ValueBox>
<TextComponent size={theme.fontSize.zecValueBase * 2.5} value={`ZEC ${formatNumber({ value: total })}`} isBold />
<USDValue value={`USD $${formatNumber({ value: total * dollarValue })}`} size={theme.fontSize.zecValueBase * 2} />
2018-12-10 09:07:45 -08:00
</ValueBox>
<RowComponent>
<ValueBox>
2018-12-12 13:13:13 -08:00
<ShieldedValue value='&#9679; SHIELDED' isBold size={theme.fontSize.text * 0.8} />
<TextComponent value={`ZEC ${formatNumber({ value: shielded })}`} isBold size={theme.fontSize.zecValueBase} />
<USDValue value={`USD $${formatNumber({ value: shielded * dollarValue })}`} />
2018-12-10 09:07:45 -08:00
</ValueBox>
<ValueBox>
2018-12-12 13:13:13 -08:00
<Label value='&#9679; TRANSPARENT' isBold size={theme.fontSize.text * 0.8} />
<TextComponent
value={`ZEC ${formatNumber({ value: transparent })}`}
isBold
size={theme.fontSize.zecValueBase}
/>
<USDValue value={`USD $${formatNumber({ value: transparent * dollarValue })}`} />
2018-12-10 09:07:45 -08:00
</ValueBox>
</RowComponent>
</Wrapper>
);