@bzxnetwork/portal
Version:
Frontend demo portal for bZx
112 lines (108 loc) • 4.21 kB
JSX
import styled from "styled-components";
import Input from "@material-ui/core/Input";
import InputLabel from "@material-ui/core/InputLabel";
import InputAdornment from "@material-ui/core/InputAdornment";
import MuiFormControl from "@material-ui/core/FormControl";
import FormControlLabel from "@material-ui/core/FormControlLabel";
import FormHelperText from "@material-ui/core/FormHelperText";
import Tooltip from "@material-ui/core/Tooltip";
import Checkbox from "@material-ui/core/Checkbox";
import { fromBigNumber } from "../../common/utils";
import Section, { SectionLabel } from "../../common/FormSection";
fromBigNumber
const FormControl = styled(MuiFormControl)`
margin: 24px !important;
`;
const ToolTipHint = styled.span`
text-decoration: underline;
cursor: pointer;
`;
export default ({
setStateForInput,
initialMarginAmount,
maintenanceMarginAmount,
role,
setwithdrawOnOpenCheckbox,
withdrawOnOpen
}) => (
<Section>
<SectionLabel>Margin Amounts</SectionLabel>
<div style={{ textAlign: `center` }}>
<FormControl>
<InputLabel>Initial Margin Amount</InputLabel>
<Input
value={fromBigNumber(initialMarginAmount, 10 ** 18)}
type="number"
onChange={setStateForInput(`initialMarginAmount`)}
endAdornment={<InputAdornment position="end">%</InputAdornment>}
/>
<FormHelperText component="div">
<Tooltip
id="tooltip-icon"
title={
<div style={{ maxWidth: `300px` }}>
The minimum margin level the trader must have in order to fill a
loan order or place a trade.
</div>
}
>
<ToolTipHint>Range: 40%-100%</ToolTipHint>
</Tooltip>
</FormHelperText>
</FormControl>
<FormControl>
<InputLabel>Maintenance Margin Amount</InputLabel>
<Input
value={fromBigNumber(maintenanceMarginAmount, 10 ** 18)}
type="number"
onChange={setStateForInput(`maintenanceMarginAmount`)}
endAdornment={<InputAdornment position="end">%</InputAdornment>}
/>
<FormHelperText component="div">
<Tooltip
id="tooltip-icon"
title={
<div style={{ maxWidth: `300px` }}>
The margin level that will trigger a loan liquidation if the
trader's margin balance falls to this level or lower. This
cannot be greater than the initial margin amount.
</div>
}
>
<ToolTipHint>Range: 20%-90%</ToolTipHint>
</Tooltip>
</FormHelperText>
</FormControl>
{role === `trader` ? (
<FormControl>
<FormControlLabel
control={
<Checkbox checked={withdrawOnOpen} onChange={setwithdrawOnOpenCheckbox} />
}
label="Withdraw on Loan Open"
/>
<FormHelperText component="div">
<Tooltip
id="tooltip-icon"
title={
<div style={{ maxWidth: `300px` }}>
Set this option if you wish to withdraw the loan to your wallet.
An amount of collateral equal to the Initial Margin Amount +
the total value of your loan, will be escrowed. Please ensure you
have enough collateral token balance and that you know what you are
doing. After filling the order, the loan token will immediately be
withdrawn to your wallet. If you don't return the full amount of loan
token before the loan term ends or the loan gets liquidated, you will
lose a large portion of the collateral in order to compensate the lender
for the full value of the loan.
</div>
}
>
<ToolTipHint>More Info</ToolTipHint>
</Tooltip>
</FormHelperText>
</FormControl>
) : ``}
</div>
</Section>
);