config#BASE_ADD_LIQUIDITY_URL TypeScript Examples
The following examples show how to use
config#BASE_ADD_LIQUIDITY_URL.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: Apr.tsx From glide-frontend with GNU General Public License v3.0 | 6 votes |
Apr: React.FC<AprProps> = ({
value,
lpLabel,
tokenAddress,
quoteTokenAddress,
cakePrice,
originalValue,
hideButton = false,
}) => {
const liquidityUrlPathParts = getLiquidityUrlPathParts({ quoteTokenAddress, tokenAddress })
const addLiquidityUrl = `${BASE_ADD_LIQUIDITY_URL}/${liquidityUrlPathParts}`
return originalValue !== 0 ? (
<Container>
{originalValue ? (
<>
<AprWrapper>{value}%</AprWrapper>
{!hideButton && (
<ApyButton
lpLabel={lpLabel}
cakePrice={cakePrice}
apr={originalValue}
displayApr={value}
addLiquidityUrl={addLiquidityUrl}
/>
)}
</>
) : (
<AprWrapper>
<Skeleton width={60} />
</AprWrapper>
)}
</Container>
) : (
<Container>
<AprWrapper>{originalValue}%</AprWrapper>
</Container>
)
}
Example #2
Source File: GetLpModal.tsx From glide-frontend with GNU General Public License v3.0 | 6 votes |
GetLpModal: React.FC<Partial<Props>> = ({ currency, onDismiss }) => {
const { t } = useTranslation()
return (
<Modal title={t('LP Tokens required')} onDismiss={onDismiss}>
<ModalBody maxWidth="288px">
<Image
src={`/images/farms/${currency.symbol.split(' ')[0].toLocaleLowerCase()}.svg`}
width={72}
height={72}
margin="auto"
mb="24px"
/>
<Text mb="16px">{t('You’ll need CAKE-BNB LP tokens to participate in the IFO!')}</Text>
<Text mb="24px">{t('Get LP tokens, or make sure your tokens aren’t staked somewhere else.')}</Text>
<Button
as={Link}
external
href={`${BASE_ADD_LIQUIDITY_URL}/ELA/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82`}
endIcon={<OpenNewIcon color="white" />}
minWidth="100%" // Bypass the width="fit-content" on Links
>
{t('Get LP tokens')}
</Button>
</ModalBody>
</Modal>
)
}
Example #3
Source File: GetLpModal.tsx From vvs-ui with GNU General Public License v3.0 | 6 votes |
GetLpModal: React.FC<Partial<Props>> = ({ currency, onDismiss }) => {
const { t } = useTranslation()
// FIXME ifo contract address
return (
<Modal title={t('LP Tokens required')} onDismiss={onDismiss}>
<ModalBody maxWidth="288px">
<Image
src={`/images/farms/${currency.symbol.split(' ')[0].toLocaleLowerCase()}.svg`}
width={72}
height={72}
margin="auto"
mb="24px"
/>
<Text mb="16px">{t('You’ll need VVS-CRO LP tokens to participate in the IFO!')}</Text>
<Text mb="24px">{t('Get LP tokens, or make sure your tokens aren’t staked somewhere else.')}</Text>
<Button
as={Link}
external
href={`${BASE_ADD_LIQUIDITY_URL}/CRO/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82`}
endIcon={<OpenNewIcon color="white" />}
minWidth="100%" // Bypass the width="fit-content" on Links
>
{t('Get LP tokens')}
</Button>
</ModalBody>
</Modal>
)
}
Example #4
Source File: FarmCard.tsx From glide-frontend with GNU General Public License v3.0 | 5 votes |
FarmCard: React.FC<FarmCardProps> = ({ farm, displayApr, removed, cakePrice, account }) => {
const { t } = useTranslation()
const [showExpandableSection, setShowExpandableSection] = useState(false)
const totalValueFormatted =
farm.liquidity && farm.liquidity.gt(0)
? `$${farm.liquidity.toNumber().toLocaleString(undefined, { maximumFractionDigits: 0 })}`
: ''
const lpLabel = farm.lpSymbol && farm.lpSymbol.toUpperCase().replace('', '')
const earnLabel = farm.dual ? farm.dual.earnLabel : t('GLIDE + Fees')
const liquidityUrlPathParts = getLiquidityUrlPathParts({
quoteTokenAddress: farm.quoteToken.address,
tokenAddress: farm.token.address,
})
const addLiquidityUrl = `${BASE_ADD_LIQUIDITY_URL}/${liquidityUrlPathParts}`
const lpAddress = getAddress(farm.lpAddresses)
const isPromotedFarm = farm.token.symbol === 'GLIDE'
return (
<StyledCard isActive={isPromotedFarm}>
<FarmCardInnerContainer>
<CardHeading
lpLabel={lpLabel}
multiplier={farm.multiplier}
isCommunityFarm={farm.isCommunity}
token={farm.token}
quoteToken={farm.quoteToken}
/>
{!removed && (
<Flex justifyContent="space-between" alignItems="center">
<Text>{t('APR')}:</Text>
<Text bold style={{ display: 'flex', alignItems: 'center' }}>
{farm.apr ? (
<>
<ApyButton
lpLabel={lpLabel}
addLiquidityUrl={addLiquidityUrl}
cakePrice={cakePrice}
apr={farm.apr}
displayApr={displayApr}
/>
{displayApr}%
</>
) : (
<Skeleton height={24} width={80} />
)}
</Text>
</Flex>
)}
<Flex justifyContent="space-between">
<Text>{t('Earn')}:</Text>
<Text bold>{earnLabel}</Text>
</Flex>
<CardActionsContainer farm={farm} account={account} addLiquidityUrl={addLiquidityUrl} />
</FarmCardInnerContainer>
<ExpandingWrapper>
<ExpandableSectionButton
onClick={() => setShowExpandableSection(!showExpandableSection)}
expanded={showExpandableSection}
/>
{showExpandableSection && (
<DetailsSection
removed={removed}
bscScanAddress={getBscScanLink(lpAddress, 'address')}
// infoAddress={`https://glidefinance.info/pool/${lpAddress}`}
totalValueFormatted={totalValueFormatted}
lpLabel={lpLabel}
addLiquidityUrl={addLiquidityUrl}
/>
)}
</ExpandingWrapper>
</StyledCard>
)
}
Example #5
Source File: Apr.tsx From vvs-ui with GNU General Public License v3.0 | 5 votes |
Apr: React.FC<AprProps> = ({
value,
pid,
lpLabel,
lpSymbol,
multiplier,
tokenAddress,
quoteTokenAddress,
vvsPrice,
originalValue,
hideButton = false,
}) => {
const liquidityUrlPathParts = getLiquidityUrlPathParts({ quoteTokenAddress, tokenAddress })
const addLiquidityUrl = `${BASE_ADD_LIQUIDITY_URL}/${liquidityUrlPathParts}`
return originalValue !== 0 ? (
<Container>
{originalValue ? (
<ApyButton
variant={hideButton ? 'text' : 'text-and-button'}
pid={pid}
lpSymbol={lpSymbol}
lpLabel={lpLabel}
multiplier={multiplier}
vvsPrice={vvsPrice}
apr={originalValue}
displayApr={value}
addLiquidityUrl={addLiquidityUrl}
/>
) : (
<AprWrapper>
<Skeleton width={60} />
</AprWrapper>
)}
</Container>
) : (
<Container>
<AprWrapper>{originalValue}%</AprWrapper>
</Container>
)
}
Example #6
Source File: StakedAction.tsx From glide-frontend with GNU General Public License v3.0 | 4 votes |
Staked: React.FunctionComponent<StackedActionProps> = ({
pid,
lpSymbol,
lpAddresses,
quoteToken,
token,
userDataReady,
}) => {
const { t } = useTranslation()
const { account, chainId } = useWeb3React()
const [requestedApproval, setRequestedApproval] = useState(false)
const { allowance, tokenBalance, stakedBalance } = useFarmUser(pid)
const { onStake } = useStakeFarms(pid)
const { onUnstake } = useUnstakeFarms(pid)
const location = useLocation()
const lpPrice = useLpTokenPrice(lpSymbol)
const isApproved = account && allowance && allowance.isGreaterThan(0)
const lpAddress = getAddress(lpAddresses)
const liquidityUrlPathParts = getLiquidityUrlPathParts({
quoteTokenAddress: quoteToken.address,
tokenAddress: token.address,
})
const addLiquidityUrl = `${BASE_ADD_LIQUIDITY_URL}/${liquidityUrlPathParts}`
const handleStake = async (amount: string) => {
await onStake(amount)
dispatch(fetchFarmUserDataAsync({ account, pids: [pid] }))
}
const handleUnstake = async (amount: string) => {
await onUnstake(amount)
dispatch(fetchFarmUserDataAsync({ account, pids: [pid] }))
}
const displayBalance = useCallback(() => {
const stakedBalanceBigNumber = getBalanceAmount(stakedBalance)
if (stakedBalanceBigNumber.gt(0) && stakedBalanceBigNumber.lt(0.0000001)) {
return stakedBalanceBigNumber.toFixed(10, BigNumber.ROUND_DOWN)
}
if (stakedBalanceBigNumber.gt(0) && stakedBalanceBigNumber.lt(0.0001)) {
return getFullDisplayBalance(stakedBalance).toLocaleString()
}
return stakedBalanceBigNumber.toFixed(6, BigNumber.ROUND_DOWN)
}, [stakedBalance])
const [onPresentDeposit] = useModal(
<DepositModal max={tokenBalance} onConfirm={handleStake} tokenName={lpSymbol} addLiquidityUrl={addLiquidityUrl} />,
)
const [onPresentWithdraw] = useModal(
<WithdrawModal max={stakedBalance} onConfirm={handleUnstake} tokenName={lpSymbol} />,
)
const lpContract = useERC20(lpAddress)
const dispatch = useAppDispatch()
const { onApprove } = useApproveFarm(lpContract)
const handleApprove = useCallback(async () => {
try {
setRequestedApproval(true)
await onApprove()
dispatch(fetchFarmUserDataAsync({ account, pids: [pid] }))
setRequestedApproval(false)
} catch (e) {
console.error(e)
}
}, [onApprove, dispatch, account, pid])
if (!account) {
return (
<ActionContainer>
<ActionTitles>
<Text bold textTransform="uppercase" color="textSubtle" fontSize="12px">
{t('Start Farming')}
</Text>
</ActionTitles>
<ActionContent>
<ConnectWalletButton width="100%" />
</ActionContent>
</ActionContainer>
)
}
if (isApproved) {
if (stakedBalance.gt(0)) {
return (
<ActionContainer>
<ActionTitles>
<Text bold textTransform="uppercase" color="secondary" fontSize="12px" pr="4px">
{lpSymbol}
</Text>
<Text bold textTransform="uppercase" color="textSubtle" fontSize="12px">
{t('Staked')}
</Text>
</ActionTitles>
<ActionContent>
<div>
<Heading>{displayBalance()}</Heading>
{stakedBalance.gt(0) && lpPrice.gt(0) && (
<Balance
fontSize="12px"
color="textSubtle"
decimals={2}
value={getBalanceNumber(lpPrice.times(stakedBalance))}
unit=" USD"
prefix="~"
/>
)}
</div>
<IconButtonWrapper>
<IconButton variant="secondary" onClick={onPresentWithdraw} mr="6px">
<MinusIcon color="primary" width="14px" />
</IconButton>
<IconButton
variant="secondary"
onClick={onPresentDeposit}
disabled={['history', 'archived'].some((item) => location.pathname.includes(item))}
>
<AddIcon color="primary" width="14px" />
</IconButton>
</IconButtonWrapper>
</ActionContent>
</ActionContainer>
)
}
return (
<ActionContainer>
<ActionTitles>
<Text bold textTransform="uppercase" color="textSubtle" fontSize="12px" pr="4px">
{t('Stake').toUpperCase()}
</Text>
<Text bold textTransform="uppercase" color="secondary" fontSize="12px">
{lpSymbol}
</Text>
</ActionTitles>
<ActionContent>
<Button
width="100%"
onClick={onPresentDeposit}
variant="secondary"
disabled={['history', 'archived'].some((item) => location.pathname.includes(item)) || chainId !== 20}
>
{t('Stake LP')}
</Button>
</ActionContent>
</ActionContainer>
)
}
if (!userDataReady) {
return (
<ActionContainer>
<ActionTitles>
<Text bold textTransform="uppercase" color="textSubtle" fontSize="12px">
{t('Start Farming')}
</Text>
</ActionTitles>
<ActionContent>
<Skeleton width={180} marginBottom={28} marginTop={14} />
</ActionContent>
</ActionContainer>
)
}
return (
<ActionContainer>
<ActionTitles>
<Text bold textTransform="uppercase" color="textSubtle" fontSize="12px">
{t('Enable Farm')}
</Text>
</ActionTitles>
<ActionContent>
<Button width="100%" disabled={requestedApproval || chainId !== 20} onClick={handleApprove} variant="secondary">
{t('Enable')}
</Button>
</ActionContent>
</ActionContainer>
)
}
Example #7
Source File: IfoSteps.tsx From glide-frontend with GNU General Public License v3.0 | 4 votes |
IfoSteps: React.FC<Props> = ({ ifo, walletIfoData }) => {
const { poolBasic, poolUnlimited } = walletIfoData
const { hasProfile } = useProfile()
const { t } = useTranslation()
const { balance } = useTokenBalance(getAddress(ifo.currency.address))
const stepsValidationStatus = [
hasProfile,
balance.isGreaterThan(0),
poolBasic.amountTokenCommittedInLP.isGreaterThan(0) || poolUnlimited.amountTokenCommittedInLP.isGreaterThan(0),
poolBasic.hasClaimed || poolUnlimited.hasClaimed,
]
const getStatusProp = (index: number): StepStatus => {
const arePreviousValid = index === 0 ? true : every(stepsValidationStatus.slice(0, index), Boolean)
if (stepsValidationStatus[index]) {
return arePreviousValid ? 'past' : 'future'
}
return arePreviousValid ? 'current' : 'future'
}
const renderCardBody = (step: number) => {
const isStepValid = stepsValidationStatus[step]
switch (step) {
case 0:
return (
<CardBody>
<Heading as="h4" color="secondary" mb="16px">
{t('Activate your Profile')}
</Heading>
<Text color="textSubtle" small mb="16px">
{t('You’ll need an active PancakeSwap Profile to take part in an IFO!')}
</Text>
{isStepValid ? (
<Text color="success" bold>
{t('Profile Active!')}
</Text>
) : (
<Button as={Link} href="/profile">
{t('Activate your Profile')}
</Button>
)}
</CardBody>
)
case 1:
return (
<CardBody>
<Heading as="h4" color="secondary" mb="16px">
{t('Get CAKE-BNB LP Tokens')}
</Heading>
<Text color="textSubtle" small>
{t('Stake CAKE and BNB in the liquidity pool to get LP tokens.')} <br />
{t('You’ll spend them to buy IFO sale tokens.')}
</Text>
<Button
as={Link}
external
href={`${BASE_ADD_LIQUIDITY_URL}/BNB/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82`}
endIcon={<OpenNewIcon color="white" />}
mt="16px"
>
{t('Get LP tokens')}
</Button>
</CardBody>
)
case 2:
return (
<CardBody>
<Heading as="h4" color="secondary" mb="16px">
{t('Commit LP Tokens')}
</Heading>
<Text color="textSubtle" small>
{t('When the IFO sales are live, you can “commit” your LP tokens to buy the tokens being sold.')} <br />
{t('We recommend committing to the Basic Sale first, but you can do both if you like.')}
</Text>
</CardBody>
)
case 3:
return (
<CardBody>
<Heading as="h4" color="secondary" mb="16px">
{t('Claim your tokens and achievement')}
</Heading>
<Text color="textSubtle" small>
{t(
'After the IFO sales finish, you can claim any IFO tokens that you bought, and any unspent CAKE-BNB LP tokens will be returned to your wallet.',
)}
</Text>
</CardBody>
)
default:
return null
}
}
return (
<Wrapper>
<Heading as="h2" scale="xl" color="secondary" mb="24px" textAlign="center">
{t('How to Take Part')}
</Heading>
<Stepper>
{stepsValidationStatus.map((_, index) => (
// eslint-disable-next-line react/no-array-index-key
<Step key={index} index={index} status={getStatusProp(index)}>
<Card>{renderCardBody(index)}</Card>
</Step>
))}
</Stepper>
</Wrapper>
)
}
Example #8
Source File: FarmCard.tsx From vvs-ui with GNU General Public License v3.0 | 4 votes |
FarmCard: React.FC<FarmCardProps> = ({ farm, displayApr, removed, vvsPrice, account }) => {
const { t } = useTranslation()
const [showExpandableSection, setShowExpandableSection] = useState(false)
const totalValueFormatted =
farm.liquidity && farm.liquidity.gt(0)
? `$${farm.liquidity.toNumber().toLocaleString(undefined, { maximumFractionDigits: 0 })}`
: ''
// const lpLabel = farm.lpSymbol && farm.lpSymbol.toUpperCase().replace('VVS', '') // FIXME replace ??
const lpLabel = farm.lpSymbol && farm.lpSymbol.toUpperCase()
const earnLabel = farm.dual ? farm.dual.earnLabel : t('VVS + Fees')
const liquidityUrlPathParts = getLiquidityUrlPathParts({
quoteTokenAddress: farm.quoteToken.address,
tokenAddress: farm.token.address,
})
const addLiquidityUrl = `${BASE_ADD_LIQUIDITY_URL}/${liquidityUrlPathParts}`
const lpAddress = getAddress(farm.lpAddresses)
const isPromotedFarm = farm.token.symbol === 'VVS'
return (
<StyledCard isActive={false}>
<FarmCardInnerContainer>
<CardHeading
lpLabel={lpLabel}
multiplier={farm.multiplier}
isCommunityFarm={farm.isCommunity}
token={farm.token}
quoteToken={farm.quoteToken}
/>
{!removed && (
<Flex justifyContent="space-between" alignItems="center">
<Text color="textSubtle">{t(isBlindMode() ? 'VVS Allocation' : 'APR')}:</Text>
<Text style={{ display: 'flex', alignItems: 'center' }}>
{isBlindMode() ? `${(farm.poolWeight.toNumber() * VVS_PER_BLOCK).toLocaleString('en-US', { maximumFractionDigits: 2 })}/ Block` : (farm.apr ? (
<ApyButton
variant="text-and-button"
pid={farm.pid}
lpSymbol={farm.lpSymbol}
multiplier={farm.multiplier}
lpLabel={lpLabel}
addLiquidityUrl={addLiquidityUrl}
vvsPrice={vvsPrice}
apr={farm.apr}
displayApr={displayApr}
/>
) : (
<Skeleton height={24} width={80} />
))}
</Text>
</Flex>
)}
<Flex justifyContent="space-between">
<Text color="textSubtle">{t('Earn')}:</Text>
<Text>{earnLabel}</Text>
</Flex>
<CardActionsContainer
farm={farm}
lpLabel={lpLabel}
account={account}
vvsPrice={vvsPrice}
addLiquidityUrl={addLiquidityUrl}
/>
</FarmCardInnerContainer>
<ExpandingWrapper>
<ExpandableSectionButton
onClick={() => setShowExpandableSection(!showExpandableSection)}
expanded={showExpandableSection}
/>
{showExpandableSection && (
<DetailsSection
removed={removed}
bscScanAddress={getExplorerLink(lpAddress, 'address')}
infoAddress={`/info/farm/${lpAddress}`}
totalValueFormatted={totalValueFormatted}
lpLabel={lpLabel}
addLiquidityUrl={addLiquidityUrl}
/>
)}
</ExpandingWrapper>
</StyledCard>
)
}
Example #9
Source File: StakedAction.tsx From vvs-ui with GNU General Public License v3.0 | 4 votes |
Staked: React.FunctionComponent<StackedActionProps> = ({
pid,
apr,
multiplier,
lpSymbol,
lpLabel,
lpAddresses,
quoteToken,
token,
userDataReady,
displayApr,
}) => {
const { t } = useTranslation()
const { account } = useWeb3React()
const [requestedApproval, setRequestedApproval] = useState(false)
const { allowance, tokenBalance, stakedBalance } = useFarmUser(pid)
const { onStake } = useStakeFarms(pid)
const { onUnstake } = useUnstakeFarms(pid)
const location = useLocation()
const lpPrice = useLpTokenPrice(lpSymbol)
const vvsPrice = usePriceVvsUsdc()
const isApproved = account && allowance && allowance.isGreaterThan(0)
const lpAddress = getAddress(lpAddresses)
const liquidityUrlPathParts = getLiquidityUrlPathParts({
quoteTokenAddress: quoteToken.address,
tokenAddress: token.address,
})
const addLiquidityUrl = `${BASE_ADD_LIQUIDITY_URL}/${liquidityUrlPathParts}`
const handleStake = async (amount: string) => {
await onStake(amount)
dispatch(fetchFarmUserDataAsync({ account, pids: [pid] }))
}
const handleUnstake = async (amount: string) => {
await onUnstake(amount)
dispatch(fetchFarmUserDataAsync({ account, pids: [pid] }))
}
const displayBalance = useCallback(() => {
const stakedBalanceBigNumber = getBalanceAmount(stakedBalance)
if (stakedBalanceBigNumber.gt(0) && stakedBalanceBigNumber.lt(0.0000001)) {
return stakedBalanceBigNumber.toFixed(10, BigNumber.ROUND_DOWN)
}
if (stakedBalanceBigNumber.gt(0) && stakedBalanceBigNumber.lt(0.0001)) {
return getFullDisplayBalance(stakedBalance).toLocaleString()
}
return stakedBalanceBigNumber.toFixed(3, BigNumber.ROUND_DOWN)
}, [stakedBalance])
const [onPresentDeposit] = useModal(
<DepositModal
max={tokenBalance}
lpPrice={lpPrice}
lpLabel={lpLabel}
apr={apr}
displayApr={displayApr}
stakedBalance={stakedBalance}
onConfirm={handleStake}
tokenName={lpSymbol}
multiplier={multiplier}
addLiquidityUrl={addLiquidityUrl}
vvsPrice={vvsPrice}
/>,
)
const [onPresentWithdraw] = useModal(
<WithdrawModal max={stakedBalance} onConfirm={handleUnstake} tokenName={lpSymbol} />,
)
const lpContract = useERC20(lpAddress)
const dispatch = useAppDispatch()
const { onApprove } = useApproveFarm(lpContract)
const handleApprove = useCallback(async () => {
try {
setRequestedApproval(true)
await onApprove()
dispatch(fetchFarmUserDataAsync({ account, pids: [pid] }))
setRequestedApproval(false)
} catch (e) {
console.error(e)
}
}, [onApprove, dispatch, account, pid])
if (!account) {
return (
<ActionContainer>
<ActionTitles>
<Text textTransform="uppercase" color="textSubtle" fontSize="12px">
{t('Start Farming')}
</Text>
</ActionTitles>
<ActionContent>
<ConnectWalletButton width="100%" />
</ActionContent>
</ActionContainer>
)
}
if (isApproved) {
if (stakedBalance.gt(0)) {
return (
<ActionContainer>
<ActionTitles>
<Text textTransform="uppercase" fontSize="12px" pr="4px">
{lpSymbol}
</Text>
<Text textTransform="uppercase" fontSize="12px">
{t('Staked')}
</Text>
</ActionTitles>
<ActionContent>
<div>
<Heading>{displayBalance()}</Heading>
{stakedBalance.gt(0) && lpPrice.gt(0) && !isBlindMode() ? (
<Balance
fontSize="12px"
color="textSubtle"
decimals={2}
value={getBalanceNumber(lpPrice.times(stakedBalance))}
unit=" USD"
prefix="~"
/>
) : (<Skeleton mt={1} width={60} />)}
</div>
<IconButtonWrapper>
<IconButton variant="secondary" onClick={onPresentWithdraw} mr="6px">
<MinusIcon color="primary" width="14px" />
</IconButton>
<IconButton
variant="secondary"
onClick={onPresentDeposit}
disabled={['history', 'archived'].some((item) => location.pathname.includes(item))}
>
<AddIcon color="primary" width="14px" />
</IconButton>
</IconButtonWrapper>
</ActionContent>
</ActionContainer>
)
}
return (
<ActionContainer>
<ActionTitles>
<Text textTransform="uppercase" fontSize="12px" pr="4px">
{t('Stake').toUpperCase()}
</Text>
<Text textTransform="uppercase" fontSize="12px">
{lpSymbol}
</Text>
</ActionTitles>
<ActionContent>
<Button
width="100%"
onClick={onPresentDeposit}
variant="secondary"
disabled={['history', 'archived'].some((item) => location.pathname.includes(item))}
>
{t('Stake LP')}
</Button>
</ActionContent>
</ActionContainer>
)
}
if (!userDataReady) {
return (
<ActionContainer>
<ActionTitles>
<Text textTransform="uppercase" fontSize="12px">
{t('Start Farming')}
</Text>
</ActionTitles>
<ActionContent>
<Skeleton width={180} marginBottom={28} marginTop={14} />
</ActionContent>
</ActionContainer>
)
}
return (
<ActionContainer>
<ActionTitles>
<Text textTransform="uppercase" fontSize="12px" mb="6px">
{t('Enable Farm')}
</Text>
</ActionTitles>
<ActionContent>
<Button width="100%" disabled={requestedApproval} onClick={handleApprove} variant="secondary">
{t('Enable')}
</Button>
</ActionContent>
</ActionContainer>
)
}
Example #10
Source File: IfoSteps.tsx From vvs-ui with GNU General Public License v3.0 | 4 votes |
IfoSteps: React.FC<Props> = ({ ifo, walletIfoData }) => {
const { poolBasic, poolUnlimited } = walletIfoData
const { hasProfile } = useProfile()
const { t } = useTranslation()
const { balance } = useTokenBalance(ifo.currency.address)
const stepsValidationStatus = [
hasProfile,
balance.isGreaterThan(0),
poolBasic.amountTokenCommittedInLP.isGreaterThan(0) || poolUnlimited.amountTokenCommittedInLP.isGreaterThan(0),
poolBasic.hasClaimed || poolUnlimited.hasClaimed,
]
const getStatusProp = (index: number): StepStatus => {
const arePreviousValid = index === 0 ? true : every(stepsValidationStatus.slice(0, index), Boolean)
if (stepsValidationStatus[index]) {
return arePreviousValid ? 'past' : 'future'
}
return arePreviousValid ? 'current' : 'future'
}
const renderCardBody = (step: number) => {
const isStepValid = stepsValidationStatus[step]
switch (step) {
case 0:
return (
<CardBody>
<Heading as="h4" color="secondary" mb="16px">
{t('Activate your Profile')}
</Heading>
<Text color="textSubtle" small mb="16px">
{t('You’ll need an active PancakeSwap Profile to take part in an IFO!')}
</Text>
{isStepValid ? (
<Text color="success" bold>
{t('Profile Active!')}
</Text>
) : (
<Button as={RouterLink} to="/profile">
{t('Activate your Profile')}
</Button>
)}
</CardBody>
)
// FIXME ifo contract address
case 1:
return (
<CardBody>
<Heading as="h4" color="secondary" mb="16px">
{t('Get CAKE-BNB LP Tokens')}
</Heading>
<Text color="textSubtle" small>
{t('Stake CAKE and BNB in the liquidity pool to get LP tokens.')} <br />
{t('You’ll spend them to buy IFO sale tokens.')}
</Text>
<Button
as={Link}
external
href={`${BASE_ADD_LIQUIDITY_URL}/BNB/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82`}
endIcon={<OpenNewIcon color="white" />}
mt="16px"
>
{t('Get LP tokens')}
</Button>
</CardBody>
)
case 2:
return (
<CardBody>
<Heading as="h4" color="secondary" mb="16px">
{t('Commit LP Tokens')}
</Heading>
<Text color="textSubtle" small>
{t('When the IFO sales are live, you can “commit” your LP tokens to buy the tokens being sold.')} <br />
{t('We recommend committing to the Basic Sale first, but you can do both if you like.')}
</Text>
</CardBody>
)
case 3:
return (
<CardBody>
<Heading as="h4" color="secondary" mb="16px">
{t('Claim your tokens and achievement')}
</Heading>
<Text color="textSubtle" small>
{t(
'After the IFO sales finish, you can claim any IFO tokens that you bought, and any unspent CAKE-BNB LP tokens will be returned to your wallet.',
)}
</Text>
</CardBody>
)
default:
return null
}
}
return (
<Wrapper>
<Heading as="h2" scale="xl" color="secondary" mb="24px" textAlign="center">
{t('How to Take Part')}
</Heading>
<Stepper>
{stepsValidationStatus.map((_, index) => (
// eslint-disable-next-line react/no-array-index-key
<Step key={index} index={index} status={getStatusProp(index)}>
<Card>{renderCardBody(index)}</Card>
</Step>
))}
</Stepper>
</Wrapper>
)
}