@ape.swap/bonds-sdk 7.0.3 → 7.0.4-test.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/evm/index.d.ts +3 -2
- package/dist/adapters/evm/index.js +11 -2
- package/dist/adapters/evm/index.js.map +1 -1
- package/dist/adapters/evm/state/balances.js +1 -1
- package/dist/adapters/evm/state/balances.js.map +1 -1
- package/dist/adapters/evm/state/fetchBondsDataEVM.js +65 -2
- package/dist/adapters/evm/state/fetchBondsDataEVM.js.map +1 -1
- package/dist/adapters/evm/state/fetchUsersBondsEVM.js +234 -2
- package/dist/adapters/evm/state/fetchUsersBondsEVM.js.map +1 -1
- package/dist/adapters/evm/state/lpStaking/fetchLpStakingLimits.d.ts +24 -0
- package/dist/adapters/evm/state/lpStaking/fetchLpStakingLimits.js +118 -0
- package/dist/adapters/evm/state/lpStaking/fetchLpStakingLimits.js.map +1 -0
- package/dist/adapters/evm/state/lpStaking/useSoulZapLpStakingQuote.d.ts +4 -0
- package/dist/adapters/evm/state/lpStaking/useSoulZapLpStakingQuote.js +140 -0
- package/dist/adapters/evm/state/lpStaking/useSoulZapLpStakingQuote.js.map +1 -0
- package/dist/adapters/evm/state/useSoulZapBondQuote.js +1 -1
- package/dist/adapters/evm/views/BuyComponent.js +3 -3
- package/dist/adapters/evm/views/BuyComponent.js.map +1 -1
- package/dist/adapters/evm/views/lpStaking/BuyComponentLpStaking.d.ts +4 -0
- package/dist/adapters/evm/views/lpStaking/BuyComponentLpStaking.js +212 -0
- package/dist/adapters/evm/views/lpStaking/BuyComponentLpStaking.js.map +1 -0
- package/dist/adapters/evm/views/lpStaking/LpBondModalHeader.d.ts +7 -0
- package/dist/adapters/evm/views/lpStaking/LpBondModalHeader.js +66 -0
- package/dist/adapters/evm/views/lpStaking/LpBondModalHeader.js.map +1 -0
- package/dist/adapters/evm/views/lpStaking/LpStakingEstimations.d.ts +23 -0
- package/dist/adapters/evm/views/lpStaking/LpStakingEstimations.js +40 -0
- package/dist/adapters/evm/views/lpStaking/LpStakingEstimations.js.map +1 -0
- package/dist/adapters/evm/views/lpStaking/ModalHandlerLpStaking.d.ts +3 -0
- package/dist/adapters/evm/views/lpStaking/ModalHandlerLpStaking.js +90 -0
- package/dist/adapters/evm/views/lpStaking/ModalHandlerLpStaking.js.map +1 -0
- package/dist/adapters/evm/views/lpStaking/UserLpStakingBondRow.d.ts +5 -0
- package/dist/adapters/evm/views/lpStaking/UserLpStakingBondRow.js +32 -0
- package/dist/adapters/evm/views/lpStaking/UserLpStakingBondRow.js.map +1 -0
- package/dist/adapters/evm/views/lpStaking/YourLpBondModalHeader.d.ts +7 -0
- package/dist/adapters/evm/views/lpStaking/YourLpBondModalHeader.js +20 -0
- package/dist/adapters/evm/views/lpStaking/YourLpBondModalHeader.js.map +1 -0
- package/dist/adapters/evm/views/lpStaking/YourLpStakingBondModal.d.ts +7 -0
- package/dist/adapters/evm/views/lpStaking/YourLpStakingBondModal.js +78 -0
- package/dist/adapters/evm/views/lpStaking/YourLpStakingBondModal.js.map +1 -0
- package/dist/adapters/solana/views/BuyComponentSolana.js +3 -3
- package/dist/adapters/solana/views/BuyComponentSolana.js.map +1 -1
- package/dist/adapters/types.d.ts +20 -5
- package/dist/components/TokenInfoAndName/index.js +4 -1
- package/dist/components/TokenInfoAndName/index.js.map +1 -1
- package/dist/components/Tooltip/ButtonsRow.js +1 -1
- package/dist/components/Tooltip/ButtonsRow.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +3 -2
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/uikit-sdk/TokenImage/index.js +3 -1
- package/dist/components/uikit-sdk/TokenImage/index.js.map +1 -1
- package/dist/config/abi/apeBondPositionAdapter.json.js +1347 -0
- package/dist/config/abi/apeBondPositionAdapter.json.js.map +1 -0
- package/dist/config/abi/bonusEscrow.json.js +33 -0
- package/dist/config/abi/bonusEscrow.json.js.map +1 -0
- package/dist/config/abi/lpStakingVault.json.js +34 -0
- package/dist/config/abi/lpStakingVault.json.js.map +1 -0
- package/dist/config/abi/uniswapV3Pool.json.js +47 -0
- package/dist/config/abi/uniswapV3Pool.json.js.map +1 -0
- package/dist/config/abi/uniswapV3QuoterV2.json.js +66 -0
- package/dist/config/abi/uniswapV3QuoterV2.json.js.map +1 -0
- package/dist/config/constants/addresses.d.ts +1 -0
- package/dist/config/constants/addresses.js +7 -1
- package/dist/config/constants/addresses.js.map +1 -1
- package/dist/config/constants/chains.js +3 -1
- package/dist/config/constants/chains.js.map +1 -1
- package/dist/config/constants/networks.js +1 -1
- package/dist/config/constants/networks.js.map +1 -1
- package/dist/config/constants/variables.d.ts +2 -2
- package/dist/config/constants/variables.js +3 -1
- package/dist/config/constants/variables.js.map +1 -1
- package/dist/hooks/useSendReferenceId.d.ts +4 -1
- package/dist/hooks/useSendReferenceId.js +9 -3
- package/dist/hooks/useSendReferenceId.js.map +1 -1
- package/dist/state/bonds/useBondsData.js +1 -0
- package/dist/state/bonds/useBondsData.js.map +1 -1
- package/dist/state/bonds/useUserBonds.d.ts +10 -1
- package/dist/state/bonds/useUserBonds.js +18 -11
- package/dist/state/bonds/useUserBonds.js.map +1 -1
- package/dist/state/useSDKConfig.js +11 -2
- package/dist/state/useSDKConfig.js.map +1 -1
- package/dist/state/zap/getChainParam.d.ts +1 -16
- package/dist/state/zap/getChainParam.js +16 -40
- package/dist/state/zap/getChainParam.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/yourbonds.d.ts +24 -0
- package/dist/views/Bonds/components/BondRows/ActiveBondRows.js +19 -2
- package/dist/views/Bonds/components/BondRows/ActiveBondRows.js.map +1 -1
- package/dist/views/Bonds/components/BondRows/BondRow.d.ts +3 -2
- package/dist/views/Bonds/components/BondRows/BondRow.js +15 -10
- package/dist/views/Bonds/components/BondRows/BondRow.js.map +1 -1
- package/dist/views/Bonds/components/BondRows/ModalHandler.js +1 -1
- package/dist/views/Bonds/components/BondRows/ModalHandler.js.map +1 -1
- package/dist/views/Bonds/components/BondRows/SoldOutRows.js +1 -1
- package/dist/views/Bonds/components/BondRows/SoldOutRows.js.map +1 -1
- package/dist/views/Bonds/components/BondsMenu/BondsMenu.js +1 -1
- package/dist/views/Bonds/components/BondsMenu/BondsMenu.js.map +1 -1
- package/dist/views/Bonds/components/BonusComponents/BonusComponent.js +1 -1
- package/dist/views/Bonds/components/BonusComponents/BonusComponent.js.map +1 -1
- package/dist/views/Bonds/components/BuyAgainRow/index.js +1 -1
- package/dist/views/Bonds/components/BuyAgainRow/index.js.map +1 -1
- package/dist/views/Bonds/components/CheckURL/index.js +20 -15
- package/dist/views/Bonds/components/CheckURL/index.js.map +1 -1
- package/dist/views/BuyBond/ChainBuyComponent.d.ts +4 -1
- package/dist/views/BuyBond/ChainBuyComponent.js +14 -2
- package/dist/views/BuyBond/ChainBuyComponent.js.map +1 -1
- package/dist/views/BuyBond/components/BondCards/BondCards.js +1 -7
- package/dist/views/BuyBond/components/BondCards/BondCards.js.map +1 -1
- package/dist/views/BuyBond/components/BondModalHeader.d.ts +1 -2
- package/dist/views/BuyBond/components/BondModalHeader.js +13 -5
- package/dist/views/BuyBond/components/BondModalHeader.js.map +1 -1
- package/dist/views/BuyBond/components/Estimations.js +1 -1
- package/dist/views/BuyBond/components/Estimations.js.map +1 -1
- package/dist/views/BuyBond/components/ExpandedViewButton.d.ts +2 -2
- package/dist/views/BuyBond/components/ExpandedViewButton.js +2 -2
- package/dist/views/BuyBond/components/ExpandedViewButton.js.map +1 -1
- package/dist/views/FullBondsView/FullBondsView.js +2 -1
- package/dist/views/FullBondsView/FullBondsView.js.map +1 -1
- package/dist/views/FullBondsView/YourBondsStatus.d.ts +3 -0
- package/dist/views/FullBondsView/YourBondsStatus.js +54 -0
- package/dist/views/FullBondsView/YourBondsStatus.js.map +1 -0
- package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js +2 -5
- package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js.map +1 -1
- package/dist/views/YourBonds/YourBonds.js +6 -1
- package/dist/views/YourBonds/YourBonds.js.map +1 -1
- package/dist/views/YourBonds/components/YourBondsMenu/YourBondsMenu.js +2 -1
- package/dist/views/YourBonds/components/YourBondsMenu/YourBondsMenu.js.map +1 -1
- package/dist/views/YourBondsModal/components/YourBondModalHeader/YourBondModalHeader.d.ts +2 -1
- package/dist/views/YourBondsModal/components/YourBondModalHeader/YourBondModalHeader.js +2 -2
- package/dist/views/YourBondsModal/components/YourBondModalHeader/YourBondModalHeader.js.map +1 -1
- package/package.json +2 -2
|
@@ -20,6 +20,30 @@ export interface UserBill {
|
|
|
20
20
|
paused?: boolean;
|
|
21
21
|
bond?: BondsData;
|
|
22
22
|
nftData?: UserBillNftData;
|
|
23
|
+
lpStakingData?: UserLpStakingData;
|
|
24
|
+
}
|
|
25
|
+
/** A position's pool token, with the amount the position holds now (whole tokens) and its USD value */
|
|
26
|
+
export interface UserLpStakingToken {
|
|
27
|
+
address: string;
|
|
28
|
+
symbol: string;
|
|
29
|
+
amount: number;
|
|
30
|
+
amountUsd: number;
|
|
31
|
+
}
|
|
32
|
+
/** LP staking bonds: the purchased Uniswap v3 position, staked in the protocol's vault */
|
|
33
|
+
export interface UserLpStakingData {
|
|
34
|
+
token0: UserLpStakingToken;
|
|
35
|
+
token1: UserLpStakingToken;
|
|
36
|
+
bonusStatus: 'reserved' | 'claimable' | 'claimed' | 'forfeited' | null;
|
|
37
|
+
bonusThreshold?: number;
|
|
38
|
+
positionUrl: string;
|
|
39
|
+
poolRewards?: UserLpStakingPoolReward[];
|
|
40
|
+
}
|
|
41
|
+
export interface UserLpStakingPoolReward {
|
|
42
|
+
address: string;
|
|
43
|
+
symbol: string;
|
|
44
|
+
amount: number;
|
|
45
|
+
amountUsd?: number;
|
|
46
|
+
claimsEnabled: boolean;
|
|
23
47
|
}
|
|
24
48
|
export interface UserBillNftData {
|
|
25
49
|
tokenId: number;
|
|
@@ -25,7 +25,9 @@ const ActiveBondRows = ({ chain, bonds, hideTitles, showHotBonds }) => {
|
|
|
25
25
|
// ChainId.SUI
|
|
26
26
|
].includes(chain) &&
|
|
27
27
|
!hideTitles && jsx(ChainBanner, { chainId: chain }), bonds?.map((bondFromMap, index) => {
|
|
28
|
+
//
|
|
28
29
|
// PRE TGE ROWS
|
|
30
|
+
//
|
|
29
31
|
if (bondFromMap.billType === 'fcfs') {
|
|
30
32
|
const bond = bondFromMap;
|
|
31
33
|
const totalPrincipalBilled = Math.round(getBalanceNumber(bond?.totalPrincipalBilled ?? '0', bond?.lpToken?.decimals?.[bond?.chainId])) / (bond.initPrice ?? 0);
|
|
@@ -41,7 +43,7 @@ const ActiveBondRows = ({ chain, bonds, hideTitles, showHotBonds }) => {
|
|
|
41
43
|
const now = new Date().getTime();
|
|
42
44
|
const saleFinishTime = (bond?.finishTime ?? 0) * 1000;
|
|
43
45
|
const saleHasFinished = now > saleFinishTime || bond.finalized;
|
|
44
|
-
return (jsx(BondRow, { bondAddress: bond.contractAddress?.[bond.chainId], bondChain: bond.chainId, marketingCampaign: bond.marketingCampaign,
|
|
46
|
+
return (jsx(BondRow, { bondAddress: bond.contractAddress?.[bond.chainId], bondChain: bond.chainId, marketingCampaign: bond.marketingCampaign, payoutTokenSymbol: (bond.underlyingEarnToken || bond.earnToken).symbol, payoutTokenAddress: (bond.underlyingEarnToken || bond.earnToken).address?.[bond.chainId], billType: bond.billType, tag: bond.tags?.[0], bonus: bond.yieldBond
|
|
45
47
|
? `${bond.yieldData?.apr.toFixed()}% APR`
|
|
46
48
|
: saleHasFinished
|
|
47
49
|
? undefined
|
|
@@ -58,12 +60,27 @@ const ActiveBondRows = ({ chain, bonds, hideTitles, showHotBonds }) => {
|
|
|
58
60
|
? `This is the duration over which the bonus yield will be distributed while your initial tokens remain staked.`
|
|
59
61
|
: undefined, projectURL: bond.projectLink, twitterURL: bond.twitter, bondSoldOut: saleHasFinished, shortDescription: bond.shortDescription }, `${bond.contractAddress}-${bond.chainId}-${index}`));
|
|
60
62
|
}
|
|
63
|
+
else if (bondFromMap.billType === 'lpStaking') {
|
|
64
|
+
//
|
|
65
|
+
// LP STAKING BONDS
|
|
66
|
+
//
|
|
67
|
+
// TODO: add lp staking bond values
|
|
68
|
+
const bond = bondFromMap;
|
|
69
|
+
const lpStakingConfig = bond.lpStakingConfig;
|
|
70
|
+
const bondAddress = bond?.contractAddress?.[bond?.chainId];
|
|
71
|
+
const remainingTokensString = getRemainingTokensString(bond);
|
|
72
|
+
return (jsx(BondRow, { bondAddress: bondAddress, bondChain: bond.chainId, marketingCampaign: bond.marketingCampaign, payoutTokenSymbol: `${lpStakingConfig.lpToken0.symbol}-${lpStakingConfig.lpToken1.symbol}`, payoutTokenAddress: lpStakingConfig.pool, billType: bond.billType, tag: bond.highlightTag || bond.tags?.[0], trueBondPrices: namingPreference === 'Bonus' ? bond.trueBondPrices : undefined, minTier: bond?.minTier, vestingTermString: getVestingTermsString(bond), vestingCliffString: getVestingTermsTooltipString(bond), percentageAvailable: remainingPercentage(bond), remainingTokensString: remainingTokensString, projectURL: bond.projectLink, twitterURL: bond.twitter, bonus: namingPreference === 'Discount'
|
|
73
|
+
? `${bond?.trueBondPrices?.[0]?.discountWithFee?.toFixed(2)}%`
|
|
74
|
+
: undefined, shortDescription: bond.shortDescription, cgId: bond.cgId, dexscreener: bond?.dexscreener }, `${bondAddress}-${bond.chainId}-${index}`));
|
|
75
|
+
}
|
|
61
76
|
else {
|
|
77
|
+
//
|
|
62
78
|
// POST TGE BONDS AKA NORMAL BONDS
|
|
79
|
+
//
|
|
63
80
|
const bond = bondFromMap;
|
|
64
81
|
const bondAddress = bond?.contractAddress?.[bond?.chainId];
|
|
65
82
|
const remainingTokensString = getRemainingTokensString(bond);
|
|
66
|
-
return (jsx(BondRow, { bondAddress: bondAddress, bondChain: bond.chainId, marketingCampaign: bond.marketingCampaign,
|
|
83
|
+
return (jsx(BondRow, { bondAddress: bondAddress, bondChain: bond.chainId, marketingCampaign: bond.marketingCampaign, payoutTokenSymbol: bond.earnToken.symbol, payoutTokenAddress: bond.earnToken.address?.[bond.chainId], billType: bond.billType, tag: bond.highlightTag || bond.tags?.[0], trueBondPrices: namingPreference === 'Bonus' ? bond.trueBondPrices : undefined, minTier: bond?.minTier, vestingTermString: getVestingTermsString(bond), vestingCliffString: getVestingTermsTooltipString(bond), percentageAvailable: remainingPercentage(bond), remainingTokensString: remainingTokensString, projectURL: bond.projectLink, twitterURL: bond.twitter, bonus: namingPreference === 'Discount'
|
|
67
84
|
? `${bond?.trueBondPrices?.[0]?.discountWithFee?.toFixed(2)}%`
|
|
68
85
|
: undefined, shortDescription: bond.shortDescription, cgId: bond.cgId, dexscreener: bond?.dexscreener }, `${bondAddress}-${bond.chainId}-${index}`));
|
|
69
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActiveBondRows.js","sources":["../../../../../src/views/Bonds/components/BondRows/ActiveBondRows.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport clsx from 'clsx'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport ChainTitle from './ChainTitle'\nimport BondRow from './BondRow'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport { BondsData } from '../../../../types/bonds'\nimport { BaseBondConfig, ChainId, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport HotBondCards from '../HotBondCards'\nimport ChainBanner from '../ChainBanner/ChainBanner'\nimport {\n getRemainingTokensString,\n getVestingTermsString,\n getVestingTermsTooltipString,\n remainingPercentage,\n} from '../../../../utils/displayHelpers'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\n\n// Record<string, (BondsData | BaseBondConfig)[]>\n\ninterface ActiveBondRowsProps {\n chain: number\n bonds: (BondsData | BaseBondConfig)[]\n hideTitles: boolean\n showHotBonds: boolean\n}\n\nconst ActiveBondRows: React.FC<ActiveBondRowsProps> = ({ chain, bonds, hideTitles, showHotBonds }) => {\n const { namingPreference, useCardsView } = useSDKConfig()\n const [isOpen, setIsOpen] = useState<boolean>(true)\n const key = chain\n\n return (\n <Flex className=\"bondrowswithtitle ape:w-full ape:flex-col\" key={key}>\n <AnimatePresence initial={false}>\n <Flex onClick={() => setIsOpen(!isOpen)} className=\"ape:cursor-pointer\">\n <ChainTitle\n chain={chain}\n pt={'5px'}\n hideTitles={(bonds.length <= 0 && chain !== ChainId.SOL && chain !== ChainId.MONAD) || hideTitles}\n isOpen={isOpen}\n />\n </Flex>\n {isOpen && (bonds.length > 0 || chain === ChainId.MONAD) && (\n <motion.div\n initial={{ height: 0, overflow: 'hidden' }}\n animate={{ height: 'fit-content', overflow: 'hidden', transitionEnd: { overflow: 'visible' } }}\n exit={{ height: 0, overflow: 'hidden' }}\n className={clsx(\n 'bonds-card-container ape:relative ape:overflow-hidden ape:w-full ape:mt-0',\n useCardsView && 'ape:flex ape:flex-wrap',\n )}\n key={key}\n >\n {[\n // ChainId.SOL,\n ChainId.MONAD,\n // ChainId.APTOS,\n // ChainId.SUI\n ].includes(chain) &&\n !hideTitles && <ChainBanner chainId={chain} />}\n {bonds?.map((bondFromMap, index) => {\n // PRE TGE ROWS\n\n if (bondFromMap.billType === 'fcfs') {\n const bond = bondFromMap as BondsData\n const totalPrincipalBilled =\n Math.round(\n getBalanceNumber(\n bond?.totalPrincipalBilled ?? '0',\n bond?.lpToken?.decimals?.[bond?.chainId] as number,\n ),\n ) / (bond.initPrice ?? 0)\n const raiseGoal =\n Math.round(\n getBalanceNumber(bond?.totalRaise ?? '0', bond?.lpToken?.decimals?.[bond?.chainId] as number),\n ) / (bond.initPrice ?? 0)\n\n const tokensRemaining = raiseGoal - totalPrincipalBilled\n const tokensRemainingUSD = tokensRemaining * (bond?.initPrice ?? 0)\n const percentageAvailable = 100 - Math.floor((totalPrincipalBilled * 100) / raiseGoal)\n const earnToken = bond?.earnToken?.symbol\n\n const baseBonus = bond?.trueBondPrices?.[0]?.bonus ?? 0\n const airdropBonus = bond?.airdropBonus ?? 0\n const bonus = baseBonus + airdropBonus\n const initialRelease = (bond?.initialRelease ?? 0) * 100\n\n const now = new Date().getTime()\n const saleFinishTime = (bond?.finishTime ?? 0) * 1000\n const saleHasFinished = now > saleFinishTime || bond.finalized\n\n return (\n <BondRow\n key={`${bond.contractAddress}-${bond.chainId}-${index}`}\n bondAddress={bond.contractAddress?.[bond.chainId] as string}\n bondChain={bond.chainId}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n payoutToken={bond.underlyingEarnToken || bond.earnToken}\n billType={bond.billType}\n tag={bond.tags?.[0]}\n bonus={\n bond.yieldBond\n ? `${bond.yieldData?.apr.toFixed()}% APR`\n : saleHasFinished\n ? undefined\n : `${bonus}%`\n }\n airdropTooltip={bond.airdropTooltip}\n percentageAvailable={percentageAvailable}\n remainingTokensString={\n saleHasFinished\n ? `0 ${earnToken} ($0) `\n : `${formatNumberSI(tokensRemaining, 0)} ${earnToken} ($${formatNumberSI(tokensRemainingUSD, 2)})`\n }\n vestingTermString={\n saleHasFinished\n ? '-'\n : bond.yieldBond\n ? `${\n getTimePeriods(\n (bond?.yieldData?.rewardDistributionEnd ?? 0) -\n parseInt(bond.startVestingTimestamp ?? '0'),\n true,\n ).days\n } D`\n : initialRelease === 100\n ? `0 D`\n : `${getTimePeriods(bond.vestingTerm).months} Mo`\n }\n vestingCliffString={\n bond.yieldBond\n ? `This is the duration over which the bonus yield will be distributed while your initial tokens remain staked.`\n : undefined\n }\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n bondSoldOut={saleHasFinished}\n shortDescription={bond.shortDescription}\n />\n )\n } else {\n // POST TGE BONDS AKA NORMAL BONDS\n\n const bond = bondFromMap as BondsData\n const bondAddress = bond?.contractAddress?.[bond?.chainId] as string\n const remainingTokensString = getRemainingTokensString(bond)\n return (\n <BondRow\n key={`${bondAddress}-${bond.chainId}-${index}`}\n bondAddress={bondAddress}\n bondChain={bond.chainId}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n payoutToken={bond.earnToken}\n billType={bond.billType}\n tag={bond.highlightTag || bond.tags?.[0]}\n trueBondPrices={namingPreference === 'Bonus' ? bond.trueBondPrices : undefined}\n minTier={bond?.minTier}\n vestingTermString={getVestingTermsString(bond)}\n vestingCliffString={getVestingTermsTooltipString(bond)}\n percentageAvailable={remainingPercentage(bond)}\n remainingTokensString={remainingTokensString}\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n bonus={\n namingPreference === 'Discount'\n ? `${bond?.trueBondPrices?.[0]?.discountWithFee?.toFixed(2)}%`\n : undefined\n }\n shortDescription={bond.shortDescription}\n cgId={bond.cgId}\n dexscreener={bond?.dexscreener}\n />\n )\n }\n })}\n {showHotBonds && <HotBondCards />}\n </motion.div>\n )}\n </AnimatePresence>\n </Flex>\n )\n}\n\nexport default ActiveBondRows\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActiveBondRows.js","sources":["../../../../../src/views/Bonds/components/BondRows/ActiveBondRows.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport clsx from 'clsx'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport ChainTitle from './ChainTitle'\nimport BondRow from './BondRow'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport { BondsData } from '../../../../types/bonds'\nimport { BaseBondConfig, ChainId, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport HotBondCards from '../HotBondCards'\nimport ChainBanner from '../ChainBanner/ChainBanner'\nimport {\n getRemainingTokensString,\n getVestingTermsString,\n getVestingTermsTooltipString,\n remainingPercentage,\n} from '../../../../utils/displayHelpers'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { getTimePeriods } from '../../../../utils/getTimePeriods'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\n\n// Record<string, (BondsData | BaseBondConfig)[]>\n\ninterface ActiveBondRowsProps {\n chain: number\n bonds: (BondsData | BaseBondConfig)[]\n hideTitles: boolean\n showHotBonds: boolean\n}\n\nconst ActiveBondRows: React.FC<ActiveBondRowsProps> = ({ chain, bonds, hideTitles, showHotBonds }) => {\n const { namingPreference, useCardsView } = useSDKConfig()\n const [isOpen, setIsOpen] = useState<boolean>(true)\n const key = chain\n\n return (\n <Flex className=\"bondrowswithtitle ape:w-full ape:flex-col\" key={key}>\n <AnimatePresence initial={false}>\n <Flex onClick={() => setIsOpen(!isOpen)} className=\"ape:cursor-pointer\">\n <ChainTitle\n chain={chain}\n pt={'5px'}\n hideTitles={(bonds.length <= 0 && chain !== ChainId.SOL && chain !== ChainId.MONAD) || hideTitles}\n isOpen={isOpen}\n />\n </Flex>\n {isOpen && (bonds.length > 0 || chain === ChainId.MONAD) && (\n <motion.div\n initial={{ height: 0, overflow: 'hidden' }}\n animate={{ height: 'fit-content', overflow: 'hidden', transitionEnd: { overflow: 'visible' } }}\n exit={{ height: 0, overflow: 'hidden' }}\n className={clsx(\n 'bonds-card-container ape:relative ape:overflow-hidden ape:w-full ape:mt-0',\n useCardsView && 'ape:flex ape:flex-wrap',\n )}\n key={key}\n >\n {[\n // ChainId.SOL,\n ChainId.MONAD,\n // ChainId.APTOS,\n // ChainId.SUI\n ].includes(chain) &&\n !hideTitles && <ChainBanner chainId={chain} />}\n {bonds?.map((bondFromMap, index) => {\n //\n // PRE TGE ROWS\n //\n if (bondFromMap.billType === 'fcfs') {\n const bond = bondFromMap as BondsData\n const totalPrincipalBilled =\n Math.round(\n getBalanceNumber(\n bond?.totalPrincipalBilled ?? '0',\n bond?.lpToken?.decimals?.[bond?.chainId] as number,\n ),\n ) / (bond.initPrice ?? 0)\n const raiseGoal =\n Math.round(\n getBalanceNumber(bond?.totalRaise ?? '0', bond?.lpToken?.decimals?.[bond?.chainId] as number),\n ) / (bond.initPrice ?? 0)\n\n const tokensRemaining = raiseGoal - totalPrincipalBilled\n const tokensRemainingUSD = tokensRemaining * (bond?.initPrice ?? 0)\n const percentageAvailable = 100 - Math.floor((totalPrincipalBilled * 100) / raiseGoal)\n const earnToken = bond?.earnToken?.symbol\n\n const baseBonus = bond?.trueBondPrices?.[0]?.bonus ?? 0\n const airdropBonus = bond?.airdropBonus ?? 0\n const bonus = baseBonus + airdropBonus\n const initialRelease = (bond?.initialRelease ?? 0) * 100\n\n const now = new Date().getTime()\n const saleFinishTime = (bond?.finishTime ?? 0) * 1000\n const saleHasFinished = now > saleFinishTime || bond.finalized\n\n return (\n <BondRow\n key={`${bond.contractAddress}-${bond.chainId}-${index}`}\n bondAddress={bond.contractAddress?.[bond.chainId] as string}\n bondChain={bond.chainId}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n payoutTokenSymbol={(bond.underlyingEarnToken || bond.earnToken).symbol}\n payoutTokenAddress={(bond.underlyingEarnToken || bond.earnToken).address?.[bond.chainId] as string}\n billType={bond.billType}\n tag={bond.tags?.[0]}\n bonus={\n bond.yieldBond\n ? `${bond.yieldData?.apr.toFixed()}% APR`\n : saleHasFinished\n ? undefined\n : `${bonus}%`\n }\n airdropTooltip={bond.airdropTooltip}\n percentageAvailable={percentageAvailable}\n remainingTokensString={\n saleHasFinished\n ? `0 ${earnToken} ($0) `\n : `${formatNumberSI(tokensRemaining, 0)} ${earnToken} ($${formatNumberSI(tokensRemainingUSD, 2)})`\n }\n vestingTermString={\n saleHasFinished\n ? '-'\n : bond.yieldBond\n ? `${\n getTimePeriods(\n (bond?.yieldData?.rewardDistributionEnd ?? 0) -\n parseInt(bond.startVestingTimestamp ?? '0'),\n true,\n ).days\n } D`\n : initialRelease === 100\n ? `0 D`\n : `${getTimePeriods(bond.vestingTerm).months} Mo`\n }\n vestingCliffString={\n bond.yieldBond\n ? `This is the duration over which the bonus yield will be distributed while your initial tokens remain staked.`\n : undefined\n }\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n bondSoldOut={saleHasFinished}\n shortDescription={bond.shortDescription}\n />\n )\n } else if (bondFromMap.billType === 'lpStaking') {\n //\n // LP STAKING BONDS\n //\n\n // TODO: add lp staking bond values\n const bond = bondFromMap as BondsData\n const lpStakingConfig = bond.lpStakingConfig!\n const bondAddress = bond?.contractAddress?.[bond?.chainId] as string\n const remainingTokensString = getRemainingTokensString(bond)\n return (\n <BondRow\n key={`${bondAddress}-${bond.chainId}-${index}`}\n bondAddress={bondAddress}\n bondChain={bond.chainId}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n payoutTokenSymbol={`${lpStakingConfig.lpToken0.symbol}-${lpStakingConfig.lpToken1.symbol}`}\n payoutTokenAddress={lpStakingConfig.pool}\n billType={bond.billType}\n tag={bond.highlightTag || bond.tags?.[0]}\n trueBondPrices={namingPreference === 'Bonus' ? bond.trueBondPrices : undefined}\n minTier={bond?.minTier}\n vestingTermString={getVestingTermsString(bond)}\n vestingCliffString={getVestingTermsTooltipString(bond)}\n percentageAvailable={remainingPercentage(bond)}\n remainingTokensString={remainingTokensString}\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n bonus={\n namingPreference === 'Discount'\n ? `${bond?.trueBondPrices?.[0]?.discountWithFee?.toFixed(2)}%`\n : undefined\n }\n shortDescription={bond.shortDescription}\n cgId={bond.cgId}\n dexscreener={bond?.dexscreener}\n />\n )\n } else {\n //\n // POST TGE BONDS AKA NORMAL BONDS\n //\n\n const bond = bondFromMap as BondsData\n const bondAddress = bond?.contractAddress?.[bond?.chainId] as string\n const remainingTokensString = getRemainingTokensString(bond)\n return (\n <BondRow\n key={`${bondAddress}-${bond.chainId}-${index}`}\n bondAddress={bondAddress}\n bondChain={bond.chainId}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n payoutTokenSymbol={bond.earnToken.symbol}\n payoutTokenAddress={bond.earnToken.address?.[bond.chainId] as string}\n billType={bond.billType}\n tag={bond.highlightTag || bond.tags?.[0]}\n trueBondPrices={namingPreference === 'Bonus' ? bond.trueBondPrices : undefined}\n minTier={bond?.minTier}\n vestingTermString={getVestingTermsString(bond)}\n vestingCliffString={getVestingTermsTooltipString(bond)}\n percentageAvailable={remainingPercentage(bond)}\n remainingTokensString={remainingTokensString}\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n bonus={\n namingPreference === 'Discount'\n ? `${bond?.trueBondPrices?.[0]?.discountWithFee?.toFixed(2)}%`\n : undefined\n }\n shortDescription={bond.shortDescription}\n cgId={bond.cgId}\n dexscreener={bond?.dexscreener}\n />\n )\n }\n })}\n {showHotBonds && <HotBondCards />}\n </motion.div>\n )}\n </AnimatePresence>\n </Flex>\n )\n}\n\nexport default ActiveBondRows\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;;;AA8BA,MAAM,cAAc,GAAkC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,KAAI;IACnG,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;IACzD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAU,IAAI,CAAC;IACnD,MAAM,GAAG,GAAG,KAAK;AAEjB,IAAA,QACEA,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,2CAA2C,EAAA,QAAA,EACzDC,IAAA,CAAC,eAAe,EAAA,EAAC,OAAO,EAAE,KAAK,aAC7BD,GAAA,CAAC,IAAI,EAAA,EAAC,OAAO,EAAE,MAAM,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAC,oBAAoB,EAAA,QAAA,EACrEA,IAAC,UAAU,EAAA,EACT,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,KAAK,EACT,UAAU,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,KAAK,OAAO,CAAC,GAAG,IAAI,KAAK,KAAK,OAAO,CAAC,KAAK,KAAK,UAAU,EACjG,MAAM,EAAE,MAAM,EAAA,CACd,GACG,EACN,MAAM,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KACtDC,KAAC,MAAM,CAAC,GAAG,EAAA,EACT,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAC1C,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAC9F,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACvC,SAAS,EAAE,IAAI,CACb,2EAA2E,EAC3E,YAAY,IAAI,wBAAwB,CACzC,EAAA,QAAA,EAAA,CAGA;;AAEC,4BAAA,OAAO,CAAC,KAAK;;;yBAGd,CAAC,QAAQ,CAAC,KAAK,CAAC;AACf,4BAAA,CAAC,UAAU,IAAID,GAAA,CAAC,WAAW,EAAA,EAAC,OAAO,EAAE,KAAK,EAAA,CAAI,EAC/C,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,KAAI;;;;AAIjC,4BAAA,IAAI,WAAW,CAAC,QAAQ,KAAK,MAAM,EAAE;gCACnC,MAAM,IAAI,GAAG,WAAwB;AACrC,gCAAA,MAAM,oBAAoB,GACxB,IAAI,CAAC,KAAK,CACR,gBAAgB,CACd,IAAI,EAAE,oBAAoB,IAAI,GAAG,EACjC,IAAI,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,CAAW,CACnD,CACF,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;AAC3B,gCAAA,MAAM,SAAS,GACb,IAAI,CAAC,KAAK,CACR,gBAAgB,CAAC,IAAI,EAAE,UAAU,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,CAAW,CAAC,CAC9F,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;AAE3B,gCAAA,MAAM,eAAe,GAAG,SAAS,GAAG,oBAAoB;gCACxD,MAAM,kBAAkB,GAAG,eAAe,IAAI,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC;AACnE,gCAAA,MAAM,mBAAmB,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,oBAAoB,GAAG,GAAG,IAAI,SAAS,CAAC;AACtF,gCAAA,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM;AAEzC,gCAAA,MAAM,SAAS,GAAG,IAAI,EAAE,cAAc,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;AACvD,gCAAA,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,CAAC;AAC5C,gCAAA,MAAM,KAAK,GAAG,SAAS,GAAG,YAAY;gCACtC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,cAAc,IAAI,CAAC,IAAI,GAAG;gCAExD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;gCAChC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC,IAAI,IAAI;gCACrD,MAAM,eAAe,GAAG,GAAG,GAAG,cAAc,IAAI,IAAI,CAAC,SAAS;AAE9D,gCAAA,QACEA,GAAA,CAAC,OAAO,EAAA,EAEN,WAAW,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAW,EAC3D,SAAS,EAAE,IAAI,CAAC,OAAO,EACvB,iBAAiB,EAAE,IAAI,CAAC,iBAAsC,EAC9D,iBAAiB,EAAE,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EACtE,kBAAkB,EAAE,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAW,EAClG,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,GAAG,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,EACnB,KAAK,EACH,IAAI,CAAC;0CACD,CAAA,EAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA,KAAA;AAClC,0CAAE;AACA,8CAAE;AACF,8CAAE,CAAA,EAAG,KAAK,CAAA,CAAA,CAAG,EAEnB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,mBAAmB,EAAE,mBAAmB,EACxC,qBAAqB,EACnB;0CACI,CAAA,EAAA,EAAK,SAAS,CAAA,MAAA;0CACd,GAAG,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA,CAAA,EAAI,SAAS,MAAM,cAAc,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAA,CAAA,CAAG,EAEtG,iBAAiB,EACf;AACE,0CAAE;0CACA,IAAI,CAAC;AACL,8CAAE,CAAA,EACE,cAAc,CACZ,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,IAAI,CAAC;AAC1C,gDAAA,QAAQ,CAAC,IAAI,CAAC,qBAAqB,IAAI,GAAG,CAAC,EAC7C,IAAI,CACL,CAAC,IACJ,CAAA,EAAA;8CACA,cAAc,KAAK;AACnB,kDAAE,CAAA,GAAA;AACF,kDAAE,CAAA,EAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,EAEzD,kBAAkB,EAChB,IAAI,CAAC;AACH,0CAAE,CAAA,4GAAA;AACF,0CAAE,SAAS,EAEf,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,UAAU,EAAE,IAAI,CAAC,OAAO,EACxB,WAAW,EAAE,eAAe,EAC5B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAA,EA7ClC,CAAA,EAAG,IAAI,CAAC,eAAe,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CA8CvD;4BAEN;AAAO,iCAAA,IAAI,WAAW,CAAC,QAAQ,KAAK,WAAW,EAAE;;;;;gCAM/C,MAAM,IAAI,GAAG,WAAwB;AACrC,gCAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAgB;gCAC7C,MAAM,WAAW,GAAG,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,OAAO,CAAW;AACpE,gCAAA,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAC5D,gCAAA,QACEA,GAAA,CAAC,OAAO,EAAA,EAEN,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,IAAI,CAAC,OAAO,EACvB,iBAAiB,EAAE,IAAI,CAAC,iBAAsC,EAC9D,iBAAiB,EAAE,CAAA,EAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAA,CAAA,EAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAA,CAAE,EAC1F,kBAAkB,EAAE,eAAe,CAAC,IAAI,EACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,GAAG,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,EACxC,cAAc,EAAE,gBAAgB,KAAK,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,EAC9E,OAAO,EAAE,IAAI,EAAE,OAAO,EACtB,iBAAiB,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAC9C,kBAAkB,EAAE,4BAA4B,CAAC,IAAI,CAAC,EACtD,mBAAmB,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAC9C,qBAAqB,EAAE,qBAAqB,EAC5C,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,UAAU,EAAE,IAAI,CAAC,OAAO,EACxB,KAAK,EACH,gBAAgB,KAAK;AACnB,0CAAE,CAAA,EAAG,IAAI,EAAE,cAAc,GAAG,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA;AAC3D,0CAAE,SAAS,EAEf,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,WAAW,EAAE,IAAI,EAAE,WAAW,EAAA,EAvBzB,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAwB9C;4BAEN;iCAAO;;;;gCAKL,MAAM,IAAI,GAAG,WAAwB;gCACrC,MAAM,WAAW,GAAG,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,OAAO,CAAW;AACpE,gCAAA,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAC5D,gCAAA,QACEA,GAAA,CAAC,OAAO,EAAA,EAEN,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,IAAI,CAAC,OAAO,EACvB,iBAAiB,EAAE,IAAI,CAAC,iBAAsC,EAC9D,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EACxC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAW,EACpE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,GAAG,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,EACxC,cAAc,EAAE,gBAAgB,KAAK,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,EAC9E,OAAO,EAAE,IAAI,EAAE,OAAO,EACtB,iBAAiB,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAC9C,kBAAkB,EAAE,4BAA4B,CAAC,IAAI,CAAC,EACtD,mBAAmB,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAC9C,qBAAqB,EAAE,qBAAqB,EAC5C,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,UAAU,EAAE,IAAI,CAAC,OAAO,EACxB,KAAK,EACH,gBAAgB,KAAK;AACnB,0CAAE,CAAA,EAAG,IAAI,EAAE,cAAc,GAAG,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA;AAC3D,0CAAE,SAAS,EAEf,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,WAAW,EAAE,IAAI,EAAE,WAAW,EAAA,EAvBzB,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAwB9C;4BAEN;AACF,wBAAA,CAAC,CAAC,EACD,YAAY,IAAIA,GAAA,CAAC,YAAY,EAAA,EAAA,CAAG,CAAA,EAAA,EAvK5B,GAAG,CAwKG,CACd,CAAA,EAAA,CACe,EAAA,EA7L6C,GAAG,CA8L7D;AAEX;;;;"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { TrueBondPrices } from '../../../../types/bonds';
|
|
3
|
-
import { ChainId, LaunchBondTiers, MarketingCampaign
|
|
3
|
+
import { ChainId, LaunchBondTiers, MarketingCampaign } from '@ape.swap/apeswap-lists';
|
|
4
4
|
interface BondRowProps {
|
|
5
5
|
bondAddress: string;
|
|
6
6
|
bondChain: ChainId;
|
|
7
7
|
marketingCampaign?: MarketingCampaign;
|
|
8
|
-
|
|
8
|
+
payoutTokenSymbol: string;
|
|
9
|
+
payoutTokenAddress: string;
|
|
9
10
|
billType: string;
|
|
10
11
|
tag?: string;
|
|
11
12
|
bondSoldOut?: boolean;
|
|
@@ -19,13 +19,17 @@ import QuestionCircle from '../../../../components/uikit-sdk/Svg/Icons/QuestionC
|
|
|
19
19
|
import Caret from '../../../../components/uikit-sdk/Svg/Icons/Caret.js';
|
|
20
20
|
import More from '../../../../components/uikit-sdk/Svg/Icons/More.js';
|
|
21
21
|
|
|
22
|
-
const BondRow = ({ bondAddress, bondChain, marketingCampaign,
|
|
22
|
+
const BondRow = ({ bondAddress, bondChain, marketingCampaign, payoutTokenSymbol, payoutTokenAddress, billType, tag, bondSoldOut, trueBondPrices, minTier, bonus, airdropTooltip, vestingTermString, vestingCliffString, percentageAvailable, remainingTokensString, projectURL, twitterURL, shortDescription, soldoutBondsCount, isOpen, cgId, dexscreener, }) => {
|
|
23
23
|
const { useCardsView: cardsView } = useSDKConfig();
|
|
24
24
|
// Modal
|
|
25
25
|
const [openBuyModal] = useModal(jsx(ModalHandler, { bondAddress: bondAddress, bondChain: bondChain }), true, true, `buyBondModal-${bondAddress.toLowerCase()}-${bondChain}`);
|
|
26
26
|
// PreTGE / launch bonds ('fcfs') have their own buy flow, provided by the chain's adapter (EVM only today)
|
|
27
|
-
const
|
|
27
|
+
const adapter = getAdapterForChain(bondChain);
|
|
28
|
+
const preTGE = adapter?.preTGE;
|
|
28
29
|
const [openPreTGEBondModal] = useModal(preTGE ? jsx(preTGE.ModalHandler, { bondAddress: bondAddress, bondChain: bondChain }) : null, true, true, `preTGEBuyBondModal:${bondAddress.toLowerCase()}-${bondChain}}`);
|
|
30
|
+
// LP staking bonds ('lpStaking') also have their own buy flow, provided by the chain's adapter (EVM only today)
|
|
31
|
+
const lpStaking = adapter?.lpStaking;
|
|
32
|
+
const [openLpStakingBondModal] = useModal(lpStaking ? jsx(lpStaking.ModalHandler, { bondAddress: bondAddress, bondChain: bondChain }) : null, true, true, `lpStakingBuyBondModal:${bondAddress.toLowerCase()}-${bondChain}`);
|
|
29
33
|
const handleOpenModal = () => {
|
|
30
34
|
if (bondSoldOut)
|
|
31
35
|
return;
|
|
@@ -34,6 +38,11 @@ const BondRow = ({ bondAddress, bondChain, marketingCampaign, payoutToken, billT
|
|
|
34
38
|
return;
|
|
35
39
|
openPreTGEBondModal();
|
|
36
40
|
}
|
|
41
|
+
else if (billType === 'lpStaking') {
|
|
42
|
+
if (!lpStaking)
|
|
43
|
+
return;
|
|
44
|
+
openLpStakingBondModal();
|
|
45
|
+
}
|
|
37
46
|
else {
|
|
38
47
|
openBuyModal();
|
|
39
48
|
}
|
|
@@ -46,7 +55,7 @@ const BondRow = ({ bondAddress, bondChain, marketingCampaign, payoutToken, billT
|
|
|
46
55
|
chain: bondChain,
|
|
47
56
|
data: {
|
|
48
57
|
cat: 'Row',
|
|
49
|
-
bond:
|
|
58
|
+
bond: payoutTokenSymbol,
|
|
50
59
|
bondChain: bondChain,
|
|
51
60
|
},
|
|
52
61
|
});
|
|
@@ -56,20 +65,16 @@ const BondRow = ({ bondAddress, bondChain, marketingCampaign, payoutToken, billT
|
|
|
56
65
|
: 'ape:flex-row ape:w-full ape:h-[70px] ape:bg-white2 ape:mb-[5px] ape:justify-between ape:hover:bg-white3'), onClick: handleOpenModal, style: {
|
|
57
66
|
cursor: !bondSoldOut || (soldoutBondsCount && !isOpen) ? 'pointer' : 'default',
|
|
58
67
|
...MCBondRowStyles[marketingCampaign],
|
|
59
|
-
}, children: [jsx("div", { className: clsx('token-info-container', cardsView ? 'ape:w-full' : 'ape:w-[49%] ape:xl:w-[30%] ape:min-w-[unset] ape:xl:min-w-[400px]'), children: jsx(TokenInfoAndName, { tokenSymbol:
|
|
68
|
+
}, children: [jsx("div", { className: clsx('token-info-container', cardsView ? 'ape:w-full' : 'ape:w-[49%] ape:xl:w-[30%] ape:min-w-[unset] ape:xl:min-w-[400px]'), children: jsx(TokenInfoAndName, { tokenSymbol: payoutTokenSymbol, chain: bondChain, tag: tag, marketingCampaign: marketingCampaign, cardsView: cardsView }) }), cardsView && shortDescription && (jsx("div", { className: "short-description ape:flex ape:text-[12px] ape:font-normal ape:leading-[22px]", children: jsx(SafeHTMLComponent, { html: shortDescription }) })), jsxs("div", { className: clsx('bond-info-columns ape:flex', cardsView
|
|
60
69
|
? 'ape:w-full ape:justify-between ape:items-start ape:mt-[40px]'
|
|
61
70
|
: 'ape:flex-row ape:items-center ape:justify-end ape:xl:justify-between ape:w-[49%] ape:xl:w-[70%]'), children: [!cardsView && jsx("div", { className: "ape:hidden ape:lg:flex ape:w-[125px]" }), jsx(BonusContainer, { trueBondPrices: trueBondPrices, minTier: minTier, bonus: bonus, airdropTooltip: airdropTooltip, cardsView: cardsView }), jsxs("div", { className: clsx('terms-column', cardsView
|
|
62
71
|
? 'ape:flex ape:flex-col ape:justify-start ape:items-start ape:relative ape:w-[60px]'
|
|
63
|
-
: 'ape:hidden ape:xl:flex ape:xl:w-[115px] ape:items-center ape:justify-center'), children: [cardsView && (jsx("span", { className: "ape:text-[12px] ape:font-normal ape:text-[#777] ape:absolute ape:-top-[15px]", children: "Terms" })), vestingTermString, vestingCliffString && (jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: vestingCliffString }), width: "180px", placement: "bottomRight", transformTip: "translate(13%, 0%)", children: jsx(Flex, { className: "ape:opacity-60 ape:ml-[6px]", children: jsx(QuestionCircle, { width: "12px" }) }) }))] }), jsx("div", { className: clsx('tokens-remaining-column', cardsView ? 'ape:hidden' : 'ape:hidden ape:xl:flex ape:xl:w-[135px] ape:items-end ape:justify-center'), children: bondSoldOut ? ('-') : (jsx(ProgressBarWrapper, { title: '', value: jsx(ProgressBar
|
|
64
|
-
//TODO: remove this custom request once bond ends
|
|
65
|
-
, {
|
|
66
|
-
//TODO: remove this custom request once bond ends
|
|
67
|
-
value: payoutToken?.symbol === 'HAR' ? Math.max(percentageAvailable - 33, 0) : percentageAvailable }), style: {
|
|
72
|
+
: 'ape:hidden ape:xl:flex ape:xl:w-[115px] ape:items-center ape:justify-center'), children: [cardsView && (jsx("span", { className: "ape:text-[12px] ape:font-normal ape:text-[#777] ape:absolute ape:-top-[15px]", children: "Terms" })), vestingTermString, vestingCliffString && (jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: vestingCliffString }), width: "180px", placement: "bottomRight", transformTip: "translate(13%, 0%)", children: jsx(Flex, { className: "ape:opacity-60 ape:ml-[6px]", children: jsx(QuestionCircle, { width: "12px" }) }) }))] }), jsx("div", { className: clsx('tokens-remaining-column', cardsView ? 'ape:hidden' : 'ape:hidden ape:xl:flex ape:xl:w-[135px] ape:items-end ape:justify-center'), children: bondSoldOut ? ('-') : (jsx(ProgressBarWrapper, { title: '', value: jsx(ProgressBar, { value: percentageAvailable }), style: {
|
|
68
73
|
width: '127px',
|
|
69
74
|
height: '25px',
|
|
70
75
|
flexDirection: 'column',
|
|
71
76
|
justifyContent: 'center',
|
|
72
|
-
}, hideOnMobile: true, showTooltip: true, toolTip: remainingTokensString })) }), jsx("div", { className: clsx('tooltip-column ape:flex', cardsView ? 'ape:w-[25px]' : 'ape:w-[50px] ape:justify-center ape:sm:justify-start'), children: soldoutBondsCount ? (jsxs(Flex, { className: "ape:gap-[5px] ape:text-[13px] ape:font-medium ape:opacity-50", children: ["(", soldoutBondsCount, ")", jsx(Caret, { direction: isOpen ? 'up' : 'down', width: "8px" })] })) : (jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(BondInfoTooltip, { earnTokenContract:
|
|
77
|
+
}, hideOnMobile: true, showTooltip: true, toolTip: remainingTokensString })) }), jsx("div", { className: clsx('tooltip-column ape:flex', cardsView ? 'ape:w-[25px]' : 'ape:w-[50px] ape:justify-center ape:sm:justify-start'), children: soldoutBondsCount ? (jsxs(Flex, { className: "ape:gap-[5px] ape:text-[13px] ape:font-medium ape:opacity-50", children: ["(", soldoutBondsCount, ")", jsx(Caret, { direction: isOpen ? 'up' : 'down', width: "8px" })] })) : (jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(BondInfoTooltip, { earnTokenContract: payoutTokenAddress, earnTokenSymbol: payoutTokenSymbol, bondContract: bondAddress ?? '', projectLink: projectURL, twitter: twitterURL, chain: bondChain, isSoldOut: bondSoldOut, billType: billType, cgId: cgId, dexscreener: dexscreener }), width: "205px", placement: "bottomRight", transformTip: "translate(7%, -2%)", children: jsx(Flex, { className: "more-icon ape:opacity-80", children: jsx(More, { width: "25px" }) }) })) })] })] }, `${bondAddress}-${bondChain}`));
|
|
73
78
|
};
|
|
74
79
|
var BondRow$1 = React.memo(BondRow);
|
|
75
80
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BondRow.js","sources":["../../../../../src/views/Bonds/components/BondRows/BondRow.tsx"],"sourcesContent":["import React from 'react'\nimport clsx from 'clsx'\nimport { TrueBondPrices } from '../../../../types/bonds'\nimport ProgressBar from '../../../../components/ProgressBar/ProgressBar'\nimport ProgressBarWrapper from '../../../../components/ProgressBar/ProgressBarWrapper'\nimport TokenInfoAndName from '../../../../components/TokenInfoAndName'\nimport Tooltip from '../../../../components/Tooltip/Tooltip'\nimport { ChainId, LaunchBondTiers, MarketingCampaign, Token } from '@ape.swap/apeswap-lists'\nimport useModal from '../../../../hooks/useModal'\nimport ModalHandler from './ModalHandler'\nimport track from '../../../../utils/track'\nimport BonusContainer from '../BonusComponents/BonusContainer'\nimport { getAdapterForChain } from '../../../../adapters/registry'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport SafeHTMLComponent from '../../../../components/SafeHTMLComponent'\nimport { MCBondRowStyles } from '../../../../utils/campaignStyles'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport TooltipBubble from '../../../../components/uikit-sdk/TooltipBubble'\nimport QuestionCircle from '../../../../components/uikit-sdk/Svg/Icons/QuestionCircle'\nimport Caret from '../../../../components/uikit-sdk/Svg/Icons/Caret'\nimport More from '../../../../components/uikit-sdk/Svg/Icons/More'\n\ninterface BondRowProps {\n bondAddress: string\n bondChain: ChainId\n marketingCampaign?: MarketingCampaign\n payoutToken: Token\n billType: string\n tag?: string\n bondSoldOut?: boolean\n trueBondPrices?: TrueBondPrices[]\n minTier?: LaunchBondTiers\n bonus?: string\n airdropTooltip?: string\n vestingTermString: string\n vestingCliffString?: string\n percentageAvailable: number\n remainingTokensString: string\n projectURL?: string\n twitterURL?: string\n shortDescription?: string\n soldoutBondsCount?: number\n isOpen?: boolean\n cgId?: string\n dexscreener?: string\n}\n\nconst BondRow: React.FC<BondRowProps> = ({\n bondAddress,\n bondChain,\n marketingCampaign,\n payoutToken,\n billType,\n tag,\n bondSoldOut,\n trueBondPrices,\n minTier,\n bonus,\n airdropTooltip,\n vestingTermString,\n vestingCliffString,\n percentageAvailable,\n remainingTokensString,\n projectURL,\n twitterURL,\n shortDescription,\n soldoutBondsCount,\n isOpen,\n cgId,\n dexscreener,\n}) => {\n const { useCardsView: cardsView } = useSDKConfig()\n\n // Modal\n const [openBuyModal] = useModal(\n <ModalHandler bondAddress={bondAddress} bondChain={bondChain} />,\n true,\n true,\n `buyBondModal-${bondAddress.toLowerCase()}-${bondChain}`,\n )\n\n // PreTGE / launch bonds ('fcfs') have their own buy flow, provided by the chain's adapter (EVM only today)\n const preTGE = getAdapterForChain(bondChain)?.preTGE\n const [openPreTGEBondModal] = useModal(\n preTGE ? <preTGE.ModalHandler bondAddress={bondAddress} bondChain={bondChain} /> : null,\n true,\n true,\n `preTGEBuyBondModal:${bondAddress.toLowerCase()}-${bondChain}}`,\n )\n\n const handleOpenModal = () => {\n if (bondSoldOut) return\n if (billType === 'fcfs') {\n if (!preTGE) return\n openPreTGEBondModal()\n } else {\n openBuyModal()\n }\n if (typeof window !== 'undefined') {\n const locationPath = window.location.pathname.replace('/', '')\n window.history.pushState({}, '', `${locationPath}?bondAddress=${bondAddress}&bondChain=${bondChain}`)\n }\n track({\n event: 'buyModalOpen',\n chain: bondChain,\n data: {\n cat: 'Row',\n bond: payoutToken.symbol,\n bondChain: bondChain,\n },\n })\n }\n\n return (\n <div\n className={clsx(\n 'bond-row ape:group ape:rounded-normal ape:relative ape:flex',\n cardsView\n ? 'ape:flex-col ape:w-[calc(33.33%-20px)] ape:max-[768px]:w-full ape:h-fit ape:float-left ape:mr-[20px] ape:mb-[20px] ape:p-[20px] ape:justify-between'\n : 'ape:flex-row ape:w-full ape:h-[70px] ape:bg-white2 ape:mb-[5px] ape:justify-between ape:hover:bg-white3',\n )}\n onClick={handleOpenModal}\n key={`${bondAddress}-${bondChain}`}\n style={{\n cursor: !bondSoldOut || (soldoutBondsCount && !isOpen) ? 'pointer' : 'default',\n ...MCBondRowStyles[marketingCampaign!],\n }}\n >\n <div\n className={clsx(\n 'token-info-container',\n cardsView ? 'ape:w-full' : 'ape:w-[49%] ape:xl:w-[30%] ape:min-w-[unset] ape:xl:min-w-[400px]',\n )}\n >\n <TokenInfoAndName\n tokenSymbol={payoutToken?.symbol}\n chain={bondChain}\n tag={tag}\n marketingCampaign={marketingCampaign}\n cardsView={cardsView}\n />\n </div>\n {cardsView && shortDescription && (\n <div className=\"short-description ape:flex ape:text-[12px] ape:font-normal ape:leading-[22px]\">\n <SafeHTMLComponent html={shortDescription} />\n </div>\n )}\n <div\n className={clsx(\n 'bond-info-columns ape:flex',\n cardsView\n ? 'ape:w-full ape:justify-between ape:items-start ape:mt-[40px]'\n : 'ape:flex-row ape:items-center ape:justify-end ape:xl:justify-between ape:w-[49%] ape:xl:w-[70%]',\n )}\n >\n {!cardsView && <div className=\"ape:hidden ape:lg:flex ape:w-[125px]\" />}\n <BonusContainer\n trueBondPrices={trueBondPrices}\n minTier={minTier}\n bonus={bonus}\n airdropTooltip={airdropTooltip}\n cardsView={cardsView}\n />\n <div\n className={clsx(\n 'terms-column',\n cardsView\n ? 'ape:flex ape:flex-col ape:justify-start ape:items-start ape:relative ape:w-[60px]'\n : 'ape:hidden ape:xl:flex ape:xl:w-[115px] ape:items-center ape:justify-center',\n )}\n >\n {cardsView && (\n <span className=\"ape:text-[12px] ape:font-normal ape:text-[#777] ape:absolute ape:-top-[15px]\">Terms</span>\n )}\n {vestingTermString}\n {vestingCliffString && (\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{vestingCliffString}</Flex>}\n width=\"180px\"\n placement=\"bottomRight\"\n transformTip=\"translate(13%, 0%)\"\n >\n <Flex className=\"ape:opacity-60 ape:ml-[6px]\">\n <QuestionCircle width=\"12px\" />\n </Flex>\n </TooltipBubble>\n )}\n </div>\n <div\n className={clsx(\n 'tokens-remaining-column',\n cardsView ? 'ape:hidden' : 'ape:hidden ape:xl:flex ape:xl:w-[135px] ape:items-end ape:justify-center',\n )}\n >\n {bondSoldOut ? (\n '-'\n ) : (\n <ProgressBarWrapper\n title={''}\n value={\n <ProgressBar\n //TODO: remove this custom request once bond ends\n value={payoutToken?.symbol === 'HAR' ? Math.max(percentageAvailable - 33, 0) : percentageAvailable}\n />\n }\n style={{\n width: '127px',\n height: '25px',\n flexDirection: 'column',\n justifyContent: 'center',\n }}\n hideOnMobile\n showTooltip={true}\n toolTip={remainingTokensString}\n />\n )}\n </div>\n <div\n className={clsx(\n 'tooltip-column ape:flex',\n cardsView ? 'ape:w-[25px]' : 'ape:w-[50px] ape:justify-center ape:sm:justify-start',\n )}\n >\n {soldoutBondsCount ? (\n <Flex className=\"ape:gap-[5px] ape:text-[13px] ape:font-medium ape:opacity-50\">\n ({soldoutBondsCount})\n <Caret direction={isOpen ? 'up' : 'down'} width=\"8px\" />\n </Flex>\n ) : (\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Tooltip\n earnTokenContract={payoutToken?.address?.[bondChain] ?? ''}\n earnTokenSymbol={payoutToken?.symbol ?? ''}\n bondContract={bondAddress ?? ''}\n projectLink={projectURL}\n twitter={twitterURL}\n chain={bondChain}\n isSoldOut={bondSoldOut}\n billType={billType}\n cgId={cgId}\n dexscreener={dexscreener}\n />\n }\n width=\"205px\"\n placement=\"bottomRight\"\n transformTip=\"translate(7%, -2%)\"\n >\n <Flex className=\"more-icon ape:opacity-80\">\n <More width=\"25px\" />\n </Flex>\n </TooltipBubble>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport default React.memo(BondRow)\n"],"names":["_jsx","_jsxs","Tooltip"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BondRow.js","sources":["../../../../../src/views/Bonds/components/BondRows/BondRow.tsx"],"sourcesContent":["import React from 'react'\nimport clsx from 'clsx'\nimport { TrueBondPrices } from '../../../../types/bonds'\nimport ProgressBar from '../../../../components/ProgressBar/ProgressBar'\nimport ProgressBarWrapper from '../../../../components/ProgressBar/ProgressBarWrapper'\nimport TokenInfoAndName from '../../../../components/TokenInfoAndName'\nimport Tooltip from '../../../../components/Tooltip/Tooltip'\nimport { ChainId, LaunchBondTiers, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport useModal from '../../../../hooks/useModal'\nimport ModalHandler from './ModalHandler'\nimport track from '../../../../utils/track'\nimport BonusContainer from '../BonusComponents/BonusContainer'\nimport { getAdapterForChain } from '../../../../adapters/registry'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport SafeHTMLComponent from '../../../../components/SafeHTMLComponent'\nimport { MCBondRowStyles } from '../../../../utils/campaignStyles'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport TooltipBubble from '../../../../components/uikit-sdk/TooltipBubble'\nimport QuestionCircle from '../../../../components/uikit-sdk/Svg/Icons/QuestionCircle'\nimport Caret from '../../../../components/uikit-sdk/Svg/Icons/Caret'\nimport More from '../../../../components/uikit-sdk/Svg/Icons/More'\n\ninterface BondRowProps {\n bondAddress: string\n bondChain: ChainId\n marketingCampaign?: MarketingCampaign\n payoutTokenSymbol: string\n payoutTokenAddress: string\n billType: string\n tag?: string\n bondSoldOut?: boolean\n trueBondPrices?: TrueBondPrices[]\n minTier?: LaunchBondTiers\n bonus?: string\n airdropTooltip?: string\n vestingTermString: string\n vestingCliffString?: string\n percentageAvailable: number\n remainingTokensString: string\n projectURL?: string\n twitterURL?: string\n shortDescription?: string\n soldoutBondsCount?: number\n isOpen?: boolean\n cgId?: string\n dexscreener?: string\n}\n\nconst BondRow: React.FC<BondRowProps> = ({\n bondAddress,\n bondChain,\n marketingCampaign,\n payoutTokenSymbol,\n payoutTokenAddress,\n billType,\n tag,\n bondSoldOut,\n trueBondPrices,\n minTier,\n bonus,\n airdropTooltip,\n vestingTermString,\n vestingCliffString,\n percentageAvailable,\n remainingTokensString,\n projectURL,\n twitterURL,\n shortDescription,\n soldoutBondsCount,\n isOpen,\n cgId,\n dexscreener,\n}) => {\n const { useCardsView: cardsView } = useSDKConfig()\n\n // Modal\n const [openBuyModal] = useModal(\n <ModalHandler bondAddress={bondAddress} bondChain={bondChain} />,\n true,\n true,\n `buyBondModal-${bondAddress.toLowerCase()}-${bondChain}`,\n )\n\n // PreTGE / launch bonds ('fcfs') have their own buy flow, provided by the chain's adapter (EVM only today)\n const adapter = getAdapterForChain(bondChain)\n const preTGE = adapter?.preTGE\n const [openPreTGEBondModal] = useModal(\n preTGE ? <preTGE.ModalHandler bondAddress={bondAddress} bondChain={bondChain} /> : null,\n true,\n true,\n `preTGEBuyBondModal:${bondAddress.toLowerCase()}-${bondChain}}`,\n )\n\n // LP staking bonds ('lpStaking') also have their own buy flow, provided by the chain's adapter (EVM only today)\n const lpStaking = adapter?.lpStaking\n const [openLpStakingBondModal] = useModal(\n lpStaking ? <lpStaking.ModalHandler bondAddress={bondAddress} bondChain={bondChain} /> : null,\n true,\n true,\n `lpStakingBuyBondModal:${bondAddress.toLowerCase()}-${bondChain}`,\n )\n\n const handleOpenModal = () => {\n if (bondSoldOut) return\n if (billType === 'fcfs') {\n if (!preTGE) return\n openPreTGEBondModal()\n } else if (billType === 'lpStaking') {\n if (!lpStaking) return\n openLpStakingBondModal()\n } else {\n openBuyModal()\n }\n if (typeof window !== 'undefined') {\n const locationPath = window.location.pathname.replace('/', '')\n window.history.pushState({}, '', `${locationPath}?bondAddress=${bondAddress}&bondChain=${bondChain}`)\n }\n track({\n event: 'buyModalOpen',\n chain: bondChain,\n data: {\n cat: 'Row',\n bond: payoutTokenSymbol,\n bondChain: bondChain,\n },\n })\n }\n\n return (\n <div\n className={clsx(\n 'bond-row ape:group ape:rounded-normal ape:relative ape:flex',\n cardsView\n ? 'ape:flex-col ape:w-[calc(33.33%-20px)] ape:max-[768px]:w-full ape:h-fit ape:float-left ape:mr-[20px] ape:mb-[20px] ape:p-[20px] ape:justify-between'\n : 'ape:flex-row ape:w-full ape:h-[70px] ape:bg-white2 ape:mb-[5px] ape:justify-between ape:hover:bg-white3',\n )}\n onClick={handleOpenModal}\n key={`${bondAddress}-${bondChain}`}\n style={{\n cursor: !bondSoldOut || (soldoutBondsCount && !isOpen) ? 'pointer' : 'default',\n ...MCBondRowStyles[marketingCampaign!],\n }}\n >\n <div\n className={clsx(\n 'token-info-container',\n cardsView ? 'ape:w-full' : 'ape:w-[49%] ape:xl:w-[30%] ape:min-w-[unset] ape:xl:min-w-[400px]',\n )}\n >\n <TokenInfoAndName\n tokenSymbol={payoutTokenSymbol}\n chain={bondChain}\n tag={tag}\n marketingCampaign={marketingCampaign}\n cardsView={cardsView}\n />\n </div>\n {cardsView && shortDescription && (\n <div className=\"short-description ape:flex ape:text-[12px] ape:font-normal ape:leading-[22px]\">\n <SafeHTMLComponent html={shortDescription} />\n </div>\n )}\n <div\n className={clsx(\n 'bond-info-columns ape:flex',\n cardsView\n ? 'ape:w-full ape:justify-between ape:items-start ape:mt-[40px]'\n : 'ape:flex-row ape:items-center ape:justify-end ape:xl:justify-between ape:w-[49%] ape:xl:w-[70%]',\n )}\n >\n {!cardsView && <div className=\"ape:hidden ape:lg:flex ape:w-[125px]\" />}\n <BonusContainer\n trueBondPrices={trueBondPrices}\n minTier={minTier}\n bonus={bonus}\n airdropTooltip={airdropTooltip}\n cardsView={cardsView}\n />\n <div\n className={clsx(\n 'terms-column',\n cardsView\n ? 'ape:flex ape:flex-col ape:justify-start ape:items-start ape:relative ape:w-[60px]'\n : 'ape:hidden ape:xl:flex ape:xl:w-[115px] ape:items-center ape:justify-center',\n )}\n >\n {cardsView && (\n <span className=\"ape:text-[12px] ape:font-normal ape:text-[#777] ape:absolute ape:-top-[15px]\">Terms</span>\n )}\n {vestingTermString}\n {vestingCliffString && (\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{vestingCliffString}</Flex>}\n width=\"180px\"\n placement=\"bottomRight\"\n transformTip=\"translate(13%, 0%)\"\n >\n <Flex className=\"ape:opacity-60 ape:ml-[6px]\">\n <QuestionCircle width=\"12px\" />\n </Flex>\n </TooltipBubble>\n )}\n </div>\n <div\n className={clsx(\n 'tokens-remaining-column',\n cardsView ? 'ape:hidden' : 'ape:hidden ape:xl:flex ape:xl:w-[135px] ape:items-end ape:justify-center',\n )}\n >\n {bondSoldOut ? (\n '-'\n ) : (\n <ProgressBarWrapper\n title={''}\n value={<ProgressBar value={percentageAvailable} />}\n style={{\n width: '127px',\n height: '25px',\n flexDirection: 'column',\n justifyContent: 'center',\n }}\n hideOnMobile\n showTooltip={true}\n toolTip={remainingTokensString}\n />\n )}\n </div>\n <div\n className={clsx(\n 'tooltip-column ape:flex',\n cardsView ? 'ape:w-[25px]' : 'ape:w-[50px] ape:justify-center ape:sm:justify-start',\n )}\n >\n {soldoutBondsCount ? (\n <Flex className=\"ape:gap-[5px] ape:text-[13px] ape:font-medium ape:opacity-50\">\n ({soldoutBondsCount})\n <Caret direction={isOpen ? 'up' : 'down'} width=\"8px\" />\n </Flex>\n ) : (\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Tooltip\n earnTokenContract={payoutTokenAddress}\n earnTokenSymbol={payoutTokenSymbol}\n bondContract={bondAddress ?? ''}\n projectLink={projectURL}\n twitter={twitterURL}\n chain={bondChain}\n isSoldOut={bondSoldOut}\n billType={billType}\n cgId={cgId}\n dexscreener={dexscreener}\n />\n }\n width=\"205px\"\n placement=\"bottomRight\"\n transformTip=\"translate(7%, -2%)\"\n >\n <Flex className=\"more-icon ape:opacity-80\">\n <More width=\"25px\" />\n </Flex>\n </TooltipBubble>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nexport default React.memo(BondRow)\n"],"names":["_jsx","_jsxs","Tooltip"],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ const ModalHandler = ({ onDismiss, bondAddress, bondChain, }) => {
|
|
|
44
44
|
// Check cache first — if the bill is already in the cache (e.g. from
|
|
45
45
|
// a recent refetch or optimistic update), skip the network round-trip.
|
|
46
46
|
const cached = queryClient.getQueriesData({ queryKey: [QUERY_KEYS.USER_BONDS] });
|
|
47
|
-
const cachedBills = cached.flatMap(([,
|
|
47
|
+
const cachedBills = cached.flatMap(([, result]) => result?.bills ?? []);
|
|
48
48
|
const cachedBond = cachedBills.find((b) => b.id === billId);
|
|
49
49
|
if (cachedBond) {
|
|
50
50
|
setUserBill(cachedBond);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalHandler.js","sources":["../../../../../src/views/Bonds/components/BondRows/ModalHandler.tsx"],"sourcesContent":["import React, { useEffect, useState, useRef, useCallback } from 'react'\nimport { getUserBonds } from '../../../../state/bonds/useUserBonds'\nimport YourBondsModal from '../../../YourBondsModal/YourBondsModal'\nimport BuyBondModal from '../../../BuyBond/BuyBondModal'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport { BillsConfig, ChainId } from '@ape.swap/apeswap-lists'\nimport useChainAccount from '../../../../state/chainAccount/useChainAccount'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { UserBill } from '../../../../types/yourbonds'\nimport { QUERY_KEYS } from '../../../../config/constants/queryKeys'\n\n/*\n * Basically this is a handler that controls which Modal is displayed to the user.\n * It will start by showing the buy modal; once a purchase is confirmed, the chain's buy component reports the new bill\n * id through setBillId, and the YourBondModal is shown for that bill.\n * */\n\nconst ModalHandler = ({\n onDismiss,\n bondAddress,\n bondChain,\n}: {\n onDismiss?: () => void\n bondAddress: string\n bondChain: ChainId\n}) => {\n // State\n const [billId, setBillId] = useState('')\n const [afterFlowData, setAfterFlowData] = useState<{ buyTxHash: string; lostProfit?: string }>({\n buyTxHash: '',\n lostProfit: undefined,\n })\n const [userBill, setUserBill] = useState<UserBill>()\n\n // Hooks\n const { data: bondsData } = useBondsData()\n const locationPath = window.location.pathname\n const { address } = useChainAccount('evm')\n const { address: solanaAccount } = useChainAccount('sol')\n const { address: aptosAccount } = useChainAccount('aptos')\n const { address: suiAccount } = useChainAccount('sui')\n const queryClient = useQueryClient()\n\n // Trigger refetch once txs are confirmed\n const hasRefetched = useRef(false)\n useEffect(() => {\n if (!hasRefetched.current) {\n if (billId) {\n console.log('Trigger user bonds refetch')\n const bondToRefetch = bondsData?.find(\n (bond) =>\n bondAddress?.toLowerCase() === bond?.contractAddress?.[bond?.chainId]?.toLowerCase() &&\n bondChain === bond?.chainId,\n )\n if (!bondToRefetch) return\n hasRefetched.current = true\n\n // Check cache first — if the bill is already in the cache (e.g. from\n // a recent refetch or optimistic update), skip the network round-trip.\n const cached = queryClient.getQueriesData<
|
|
1
|
+
{"version":3,"file":"ModalHandler.js","sources":["../../../../../src/views/Bonds/components/BondRows/ModalHandler.tsx"],"sourcesContent":["import React, { useEffect, useState, useRef, useCallback } from 'react'\nimport { getUserBonds, UserBondsResult } from '../../../../state/bonds/useUserBonds'\nimport YourBondsModal from '../../../YourBondsModal/YourBondsModal'\nimport BuyBondModal from '../../../BuyBond/BuyBondModal'\nimport useBondsData from '../../../../state/bonds/useBondsData'\nimport { BillsConfig, ChainId } from '@ape.swap/apeswap-lists'\nimport useChainAccount from '../../../../state/chainAccount/useChainAccount'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { UserBill } from '../../../../types/yourbonds'\nimport { QUERY_KEYS } from '../../../../config/constants/queryKeys'\n\n/*\n * Basically this is a handler that controls which Modal is displayed to the user.\n * It will start by showing the buy modal; once a purchase is confirmed, the chain's buy component reports the new bill\n * id through setBillId, and the YourBondModal is shown for that bill.\n * */\n\nconst ModalHandler = ({\n onDismiss,\n bondAddress,\n bondChain,\n}: {\n onDismiss?: () => void\n bondAddress: string\n bondChain: ChainId\n}) => {\n // State\n const [billId, setBillId] = useState('')\n const [afterFlowData, setAfterFlowData] = useState<{ buyTxHash: string; lostProfit?: string }>({\n buyTxHash: '',\n lostProfit: undefined,\n })\n const [userBill, setUserBill] = useState<UserBill>()\n\n // Hooks\n const { data: bondsData } = useBondsData()\n const locationPath = window.location.pathname\n const { address } = useChainAccount('evm')\n const { address: solanaAccount } = useChainAccount('sol')\n const { address: aptosAccount } = useChainAccount('aptos')\n const { address: suiAccount } = useChainAccount('sui')\n const queryClient = useQueryClient()\n\n // Trigger refetch once txs are confirmed\n const hasRefetched = useRef(false)\n useEffect(() => {\n if (!hasRefetched.current) {\n if (billId) {\n console.log('Trigger user bonds refetch')\n const bondToRefetch = bondsData?.find(\n (bond) =>\n bondAddress?.toLowerCase() === bond?.contractAddress?.[bond?.chainId]?.toLowerCase() &&\n bondChain === bond?.chainId,\n )\n if (!bondToRefetch) return\n hasRefetched.current = true\n\n // Check cache first — if the bill is already in the cache (e.g. from\n // a recent refetch or optimistic update), skip the network round-trip.\n const cached = queryClient.getQueriesData<UserBondsResult | undefined>({ queryKey: [QUERY_KEYS.USER_BONDS] })\n const cachedBills = cached.flatMap(([, result]) => result?.bills ?? [])\n const cachedBond = cachedBills.find((b) => b.id === billId)\n if (cachedBond) {\n setUserBill(cachedBond)\n return\n }\n\n getUserBonds(\n { evm: address, sol: solanaAccount, aptos: aptosAccount, sui: suiAccount },\n { [bondChain]: [bondToRefetch] } as Record<ChainId, BillsConfig[]>,\n queryClient,\n )\n .then((bonds) => {\n const purchasedBond = bonds.find((bond) => {\n if (bond?.bond?.chainId === ChainId.SOL) {\n return bond.asset === billId\n } else {\n return bond.id === billId\n }\n })\n console.log(purchasedBond)\n if (!purchasedBond) {\n console.log(`No bond found for ${billId}`)\n }\n setUserBill(purchasedBond)\n })\n .catch((e) => {\n console.error(e)\n })\n }\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [billId])\n\n const handlePurchaseBondCallback = useCallback((data: any) => {\n setAfterFlowData(data)\n }, [])\n\n return billId ? (\n <YourBondsModal userBill={userBill} onDismiss={onDismiss} lostProfit={afterFlowData.lostProfit} />\n ) : (\n <BuyBondModal\n bondAddress={bondAddress}\n bondChain={bondChain}\n handlePurchasedBond={handlePurchaseBondCallback}\n setBillId={setBillId}\n onDismiss={() => {\n window.history.pushState({}, '', `${locationPath !== '/bonds' ? locationPath : '/bonds'}`)\n onDismiss?.()\n }}\n />\n )\n}\n\nexport default ModalHandler\n"],"names":["_jsx"],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ const SoldOutRows = ({ bonds }) => {
|
|
|
19
19
|
bonds
|
|
20
20
|
.sort((a, b) => (b?.initTime?.[b.chainId] ?? 0) - (a?.initTime?.[a.chainId] ?? 0))
|
|
21
21
|
.map((bond) => {
|
|
22
|
-
return (jsx(motion.div, { initial: { height: 0, overflow: 'hidden' }, animate: { height: 'fit-content', overflow: 'hidden', transitionEnd: { overflow: 'visible' } }, exit: { height: 0, overflow: 'hidden' }, className: clsx('bonds-card-container ape:relative ape:overflow-hidden ape:w-full ape:mt-0', useCardsView && 'ape:flex ape:flex-wrap'), children: jsxs(Flex, { className: "ape:cursor-pointer", onClick: () => setIsOpen(!isOpen), children: [jsx(Flex, { className: "ape:items-center ape:pb-[10px]", children: jsx(TurnArrow, { direction: 'up' }) }), jsx(BondRow, { bondAddress: bond.contractAddress?.[bond.chainId], marketingCampaign: bond.marketingCampaign, bondChain: bond.chainId,
|
|
22
|
+
return (jsx(motion.div, { initial: { height: 0, overflow: 'hidden' }, animate: { height: 'fit-content', overflow: 'hidden', transitionEnd: { overflow: 'visible' } }, exit: { height: 0, overflow: 'hidden' }, className: clsx('bonds-card-container ape:relative ape:overflow-hidden ape:w-full ape:mt-0', useCardsView && 'ape:flex ape:flex-wrap'), children: jsxs(Flex, { className: "ape:cursor-pointer", onClick: () => setIsOpen(!isOpen), children: [jsx(Flex, { className: "ape:items-center ape:pb-[10px]", children: jsx(TurnArrow, { direction: 'up' }) }), jsx(BondRow, { bondAddress: bond.contractAddress?.[bond.chainId], marketingCampaign: bond.marketingCampaign, bondChain: bond.chainId, payoutTokenSymbol: bond.earnToken?.symbol, payoutTokenAddress: bond.earnToken?.address?.[bond.chainId], billType: bond.billType, tag: bond.tags?.[0], bondSoldOut: true, percentageAvailable: 100, remainingTokensString: `${formatNumberSI(0, 0)} ${bond.earnToken.symbol} ($${formatNumberSI(0, 2)})`, vestingTermString: "-", projectURL: bond.projectLink, twitterURL: bond.twitter, shortDescription: bond.shortDescription })] }) }, `${bond.contractAddress[bond.chainId]}-${bond.chainId}`));
|
|
23
23
|
})] }));
|
|
24
24
|
};
|
|
25
25
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SoldOutRows.js","sources":["../../../../../src/views/Bonds/components/BondRows/SoldOutRows.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport clsx from 'clsx'\nimport { BaseBondConfig, BillsConfig, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport BondRow from './BondRow'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { BondsData } from '../../../../types/bonds'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport TurnArrow from '../../../../components/uikit-sdk/Svg/Icons/TurnArrow'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\n\nconst SoldOutRows = ({ bonds }: { bonds: (BondsData | BaseBondConfig)[] }) => {\n const bond = bonds[0] as BaseBondConfig\n const [isOpen, setIsOpen] = useState(false)\n const { useCardsView } = useSDKConfig()\n return (\n <AnimatePresence initial={false}>\n <Flex className=\"ape:cursor-pointer\" onClick={() => setIsOpen(!isOpen)}>\n <BondRow\n key={`${bond.contractAddress[bond.chainId]}-${bond.chainId}`}\n bondAddress={bond.contractAddress?.[bond.chainId] as string}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n bondChain={bond.chainId}\n //@ts-ignore\n payoutToken={bond.underlyingEarnToken || bond.earnToken}\n billType={bond.billType}\n tag={bond.tags?.[0]}\n bondSoldOut={true}\n percentageAvailable={100}\n remainingTokensString={`${formatNumberSI(0, 0)} ${bond.earnToken.symbol} ($${formatNumberSI(0, 2)})`}\n vestingTermString=\"-\"\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n shortDescription={bond.shortDescription}\n soldoutBondsCount={bonds.length > 1 ? bonds.length : undefined}\n isOpen={isOpen}\n />\n </Flex>\n {bonds.length > 1 &&\n isOpen &&\n bonds\n .sort((a: BillsConfig, b: BillsConfig) => (b?.initTime?.[b.chainId] ?? 0) - (a?.initTime?.[a.chainId] ?? 0))\n .map((bond) => {\n return (\n <motion.div\n initial={{ height: 0, overflow: 'hidden' }}\n animate={{ height: 'fit-content', overflow: 'hidden', transitionEnd: { overflow: 'visible' } }}\n exit={{ height: 0, overflow: 'hidden' }}\n key={`${bond.contractAddress[bond.chainId]}-${bond.chainId}`}\n className={clsx(\n 'bonds-card-container ape:relative ape:overflow-hidden ape:w-full ape:mt-0',\n useCardsView && 'ape:flex ape:flex-wrap',\n )}\n >\n <Flex className=\"ape:cursor-pointer\" onClick={() => setIsOpen(!isOpen)}>\n <Flex className=\"ape:items-center ape:pb-[10px]\">\n <TurnArrow direction={'up'} />\n </Flex>\n <BondRow\n bondAddress={bond.contractAddress?.[bond.chainId] as string}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n bondChain={bond.chainId}\n
|
|
1
|
+
{"version":3,"file":"SoldOutRows.js","sources":["../../../../../src/views/Bonds/components/BondRows/SoldOutRows.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport clsx from 'clsx'\nimport { BaseBondConfig, BillsConfig, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport BondRow from './BondRow'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { BondsData } from '../../../../types/bonds'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport TurnArrow from '../../../../components/uikit-sdk/Svg/Icons/TurnArrow'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\n\nconst SoldOutRows = ({ bonds }: { bonds: (BondsData | BaseBondConfig)[] }) => {\n const bond = bonds[0] as BaseBondConfig\n const [isOpen, setIsOpen] = useState(false)\n const { useCardsView } = useSDKConfig()\n return (\n <AnimatePresence initial={false}>\n <Flex className=\"ape:cursor-pointer\" onClick={() => setIsOpen(!isOpen)}>\n <BondRow\n key={`${bond.contractAddress[bond.chainId]}-${bond.chainId}`}\n bondAddress={bond.contractAddress?.[bond.chainId] as string}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n bondChain={bond.chainId}\n //@ts-ignore\n payoutToken={bond.underlyingEarnToken || bond.earnToken}\n billType={bond.billType}\n tag={bond.tags?.[0]}\n bondSoldOut={true}\n percentageAvailable={100}\n remainingTokensString={`${formatNumberSI(0, 0)} ${bond.earnToken.symbol} ($${formatNumberSI(0, 2)})`}\n vestingTermString=\"-\"\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n shortDescription={bond.shortDescription}\n soldoutBondsCount={bonds.length > 1 ? bonds.length : undefined}\n isOpen={isOpen}\n />\n </Flex>\n {bonds.length > 1 &&\n isOpen &&\n bonds\n .sort((a: BillsConfig, b: BillsConfig) => (b?.initTime?.[b.chainId] ?? 0) - (a?.initTime?.[a.chainId] ?? 0))\n .map((bond) => {\n return (\n <motion.div\n initial={{ height: 0, overflow: 'hidden' }}\n animate={{ height: 'fit-content', overflow: 'hidden', transitionEnd: { overflow: 'visible' } }}\n exit={{ height: 0, overflow: 'hidden' }}\n key={`${bond.contractAddress[bond.chainId]}-${bond.chainId}`}\n className={clsx(\n 'bonds-card-container ape:relative ape:overflow-hidden ape:w-full ape:mt-0',\n useCardsView && 'ape:flex ape:flex-wrap',\n )}\n >\n <Flex className=\"ape:cursor-pointer\" onClick={() => setIsOpen(!isOpen)}>\n <Flex className=\"ape:items-center ape:pb-[10px]\">\n <TurnArrow direction={'up'} />\n </Flex>\n <BondRow\n bondAddress={bond.contractAddress?.[bond.chainId] as string}\n marketingCampaign={bond.marketingCampaign as MarketingCampaign}\n bondChain={bond.chainId}\n payoutTokenSymbol={bond.earnToken?.symbol}\n payoutTokenAddress={bond.earnToken?.address?.[bond.chainId]!}\n billType={bond.billType}\n tag={bond.tags?.[0]}\n bondSoldOut={true}\n percentageAvailable={100}\n remainingTokensString={`${formatNumberSI(0, 0)} ${bond.earnToken.symbol} ($${formatNumberSI(0, 2)})`}\n vestingTermString=\"-\"\n projectURL={bond.projectLink}\n twitterURL={bond.twitter}\n shortDescription={bond.shortDescription}\n />\n </Flex>\n </motion.div>\n )\n })}\n </AnimatePresence>\n )\n}\n\nexport default SoldOutRows\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import Sort from '../../../../components/uikit-sdk/Svg/Icons/Sort.js';
|
|
|
9
9
|
|
|
10
10
|
const BondsMenu = ({ searchQuery, setSearchQuery, setChainFilterOption, chainFilterOption, filterOptions, filterOption, setFilterOption, onSort, }) => {
|
|
11
11
|
const { namingPreference, useCardsView } = useSDKConfig();
|
|
12
|
-
return (jsxs("div", { className: "bonds-menu ape:flex ape:justify-around ape:items-center ape:flex-col ape:w-full ape:text-[11px]", children: [jsx(BondFilters, { chainFilterOption: chainFilterOption ?? ['All Chains'], setChainFilterOption: setChainFilterOption, filterOptions: filterOptions, filterOption: filterOption, setFilterOption: setFilterOption, onHandleQueryChange: () => setSearchQuery('') }), jsxs("div", { className: "table-header-container ape:flex ape:w-full ape:justify-between ape:overflow-hidden ape:py-2.5 ape:xl:p-[20px_0_10px_0]", children: [
|
|
12
|
+
return (jsxs("div", { className: "bonds-menu ape:flex ape:justify-around ape:items-center ape:flex-col ape:w-full ape:text-[11px]", children: [jsx(BondFilters, { chainFilterOption: chainFilterOption ?? ['All Chains'], setChainFilterOption: setChainFilterOption, filterOptions: filterOptions, filterOption: filterOption, setFilterOption: setFilterOption, onHandleQueryChange: () => setSearchQuery('') }), jsxs("div", { className: "table-header-container ape:flex ape:w-full ape:justify-between ape:overflow-hidden ape:py-2.5 ape:xl:p-[20px_0_10px_0]", children: [jsxs("div", { className: "search-container ape:flex ape:flex-row ape:w-[49%] ape:lg:w-[300px]", children: [jsx(Input, { value: searchQuery, onChange: (event) => setSearchQuery(event.target.value), variant: "search", className: "search-input ape:h-7.5 ape:text-[14px] ape:pl-5! ape:font-normal", placeholder: 'Search...' }), jsx(FavIcon, { filterOption: filterOption, setFilterOption: setFilterOption })] }), jsxs("div", { className: clsx('headers-container ape:flex ape:w-[49%] ape:justify-end ape:items-center ape:xl:justify-between ape:xl:w-[70%]', useCardsView && 'ape:hidden'), children: [jsx(Flex, { className: "ape:w-[125px]" }), jsxs("div", { className: "discount-header ape:flex ape:w-[170px] ape:items-end ape:cursor-pointer ape:opacity-60 ape:pl-[15px] ape:min-[513px]:pl-0 ape:min-[513px]:justify-center", onClick: () => onSort('bonus'), children: [namingPreference.toUpperCase(), jsx(Flex, { className: "ape:ml-[5px] ape:mb-[3px]", children: jsx(Sort, { width: 10, color: "textDisabledButton" }) })] }), jsxs("div", { className: "terms-header ape:hidden ape:w-[115px] ape:items-end ape:justify-center ape:opacity-60 ape:cursor-pointer ape:xl:flex", onClick: () => onSort('terms'), children: ["TERMS", jsx(Flex, { className: "ape:ml-[5px] ape:mb-[3px]", children: jsx(Sort, { width: "12px", color: "textDisabledButton" }) })] }), jsxs("div", { className: "tokens-remaining-header ape:hidden ape:w-[135px] ape:items-end ape:justify-center ape:cursor-pointer ape:opacity-60 ape:xl:flex", onClick: () => onSort('tokensRemaining'), children: ["TOKENS REMAINING", jsx(Flex, { className: "ape:ml-[5px] ape:mb-[3px]", children: jsx(Sort, { width: "12px", color: "textDisabledButton" }) })] }), jsx("div", { className: "tooltip-header ape:w-[50px] ape:flex" })] })] })] }));
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
export { BondsMenu as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BondsMenu.js","sources":["../../../../../src/views/Bonds/components/BondsMenu/BondsMenu.tsx"],"sourcesContent":["import React from 'react'\nimport clsx from 'clsx'\nimport Input from '../../../../components/uikit-sdk/Input/Input'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport FavIcon from '../../../../components/FavIcons/FavFilter'\nimport BondFilters from '../../../../components/BondFilters/BondFilters'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport Sort from '../../../../components/uikit-sdk/Svg/Icons/Sort'\n\ninterface BondRowHeaderProps {\n searchQuery: string\n setSearchQuery: (value: string) => void\n setChainFilterOption: (newValue: string[]) => void\n chainFilterOption: string[]\n filterOptions: string[]\n filterOption: string\n setFilterOption: (newOption: string) => void\n onSort: (key: 'bonus' | 'arr' | 'terms' | 'tokensRemaining') => void\n}\n\nconst BondsMenu: React.FC<BondRowHeaderProps> = ({\n searchQuery,\n setSearchQuery,\n setChainFilterOption,\n chainFilterOption,\n filterOptions,\n filterOption,\n setFilterOption,\n onSort,\n}) => {\n const { namingPreference, useCardsView } = useSDKConfig()\n return (\n <div className=\"bonds-menu ape:flex ape:justify-around ape:items-center ape:flex-col ape:w-full ape:text-[11px]\">\n <BondFilters\n chainFilterOption={chainFilterOption ?? ['All Chains']}\n setChainFilterOption={setChainFilterOption}\n filterOptions={filterOptions}\n filterOption={filterOption}\n setFilterOption={setFilterOption}\n onHandleQueryChange={() => setSearchQuery('')}\n />\n <div className=\"table-header-container ape:flex ape:w-full ape:justify-between ape:overflow-hidden ape:py-2.5 ape:xl:p-[20px_0_10px_0]\">\n <div className=\"search-container ape:flex ape:flex-row ape:w-[49%] ape:lg:w-[
|
|
1
|
+
{"version":3,"file":"BondsMenu.js","sources":["../../../../../src/views/Bonds/components/BondsMenu/BondsMenu.tsx"],"sourcesContent":["import React from 'react'\nimport clsx from 'clsx'\nimport Input from '../../../../components/uikit-sdk/Input/Input'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport FavIcon from '../../../../components/FavIcons/FavFilter'\nimport BondFilters from '../../../../components/BondFilters/BondFilters'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport Sort from '../../../../components/uikit-sdk/Svg/Icons/Sort'\n\ninterface BondRowHeaderProps {\n searchQuery: string\n setSearchQuery: (value: string) => void\n setChainFilterOption: (newValue: string[]) => void\n chainFilterOption: string[]\n filterOptions: string[]\n filterOption: string\n setFilterOption: (newOption: string) => void\n onSort: (key: 'bonus' | 'arr' | 'terms' | 'tokensRemaining') => void\n}\n\nconst BondsMenu: React.FC<BondRowHeaderProps> = ({\n searchQuery,\n setSearchQuery,\n setChainFilterOption,\n chainFilterOption,\n filterOptions,\n filterOption,\n setFilterOption,\n onSort,\n}) => {\n const { namingPreference, useCardsView } = useSDKConfig()\n return (\n <div className=\"bonds-menu ape:flex ape:justify-around ape:items-center ape:flex-col ape:w-full ape:text-[11px]\">\n <BondFilters\n chainFilterOption={chainFilterOption ?? ['All Chains']}\n setChainFilterOption={setChainFilterOption}\n filterOptions={filterOptions}\n filterOption={filterOption}\n setFilterOption={setFilterOption}\n onHandleQueryChange={() => setSearchQuery('')}\n />\n <div className=\"table-header-container ape:flex ape:w-full ape:justify-between ape:overflow-hidden ape:py-2.5 ape:xl:p-[20px_0_10px_0]\">\n <div className=\"search-container ape:flex ape:flex-row ape:w-[49%] ape:lg:w-[300px]\">\n <Input\n value={searchQuery}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => setSearchQuery(event.target.value)}\n variant=\"search\"\n className=\"search-input ape:h-7.5 ape:text-[14px] ape:pl-5! ape:font-normal\"\n placeholder={'Search...'}\n />\n <FavIcon filterOption={filterOption} setFilterOption={setFilterOption} />\n </div>\n <div\n className={clsx(\n 'headers-container ape:flex ape:w-[49%] ape:justify-end ape:items-center ape:xl:justify-between ape:xl:w-[70%]',\n useCardsView && 'ape:hidden',\n )}\n >\n <Flex className=\"ape:w-[125px]\" />\n <div\n className=\"discount-header ape:flex ape:w-[170px] ape:items-end ape:cursor-pointer ape:opacity-60 ape:pl-[15px] ape:min-[513px]:pl-0 ape:min-[513px]:justify-center\"\n onClick={() => onSort('bonus')}\n >\n {namingPreference.toUpperCase()}\n <Flex className=\"ape:ml-[5px] ape:mb-[3px]\">\n <Sort width={10} color=\"textDisabledButton\" />\n </Flex>\n </div>\n <div\n className=\"terms-header ape:hidden ape:w-[115px] ape:items-end ape:justify-center ape:opacity-60 ape:cursor-pointer ape:xl:flex\"\n onClick={() => onSort('terms')}\n >\n TERMS\n <Flex className=\"ape:ml-[5px] ape:mb-[3px]\">\n <Sort width=\"12px\" color=\"textDisabledButton\" />\n </Flex>\n </div>\n <div\n className=\"tokens-remaining-header ape:hidden ape:w-[135px] ape:items-end ape:justify-center ape:cursor-pointer ape:opacity-60 ape:xl:flex\"\n onClick={() => onSort('tokensRemaining')}\n >\n TOKENS REMAINING\n <Flex className=\"ape:ml-[5px] ape:mb-[3px]\">\n <Sort width=\"12px\" color=\"textDisabledButton\" />\n </Flex>\n </div>\n <div className=\"tooltip-header ape:w-[50px] ape:flex\" />\n </div>\n </div>\n </div>\n )\n}\n\nexport default BondsMenu\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ const BonusComponent = ({ trueBondPrices, minTier, bonus, airdropTooltip, toolti
|
|
|
18
18
|
const baseTrueBondPrice = findHighestTrueBondPrice('0', trueBondPrices);
|
|
19
19
|
return (jsx(Flex, { children: trueBondPrices && trueBondPrices?.length > 1 && SDKConfig.useTiers ? (jsx(Flex, { className: "ape:items-center ape:min-w-[20px]", children: highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0 ? (jsx(TooltipBubble, { width: "280px", placement: tooltipPosition, transformTip: tooltipPosition === 'bottomLeft' ? 'translate(0%, 0%)' : 'translate(0%, 0%)', body: jsx(BonusTable, { trueBondPrices: trueBondPrices, minTier: minTier }), hideTooltip: hideTooltip, children: jsxs(Flex, { className: "ape:p-[3px_6px] ape:border ape:border-solid ape:border-[#9960C5] ape:rounded-normal ape:bg-transparent ape:relative ape:overflow-hidden ape:cursor-pointer ape:w-[130px] ape:md:w-[150px]", children: [jsx(Flex, { className: "ape:absolute ape:w-full ape:h-full ape:top-0 ape:left-0 ape:z-[1] ape:bg-[#9960C5] ape:opacity-20" }), jsxs(Flex, { className: "ape:w-full ape:z-[2] ape:items-center ape:justify-center", children: [jsx("img", { src: `https://ape.bond/images/launch/mythical.png`, alt: "minTier", style: { width: '21px', height: '21px', marginRight: '3px', zIndex: 1 } }), jsx(Flex, { className: "ape:text-[12px] ape:md:text-[14px] ape:mr-[3px]", children: "Up to" }), jsxs(Flex, { className: clsx('ape:text-[14px] ape:md:text-[16px]', highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0
|
|
20
20
|
? 'ape:text-success'
|
|
21
|
-
: 'ape:text-error'), children: [highestPointsElement?.bonusWithFee?.toFixed(2), "%"] })] })] }) })) : (jsx(Flex, { className: "ape:h-[20px] ape:w-[20px]", children: jsx(TooltipBubble, { body: 'This bond is currently on cooldown and has no bonus. Please check back soon.', width: "205px", placement:
|
|
21
|
+
: 'ape:text-error'), children: [highestPointsElement?.bonusWithFee?.toFixed(2), "%"] })] })] }) })) : (jsx(Flex, { className: "ape:h-[20px] ape:w-[20px]", children: jsx(TooltipBubble, { body: 'This bond is currently on cooldown and has no bonus. Please check back soon.', width: "205px", placement: tooltipPosition, transformTip: tooltipPosition === 'bottomLeft' ? 'translate(-5%, 0%)' : 'translate(10%, 0%)', children: jsx(Timer, { width: "20px", color: "#81CFEA" }) }) })) })) : baseTrueBondPrice ? (jsx(Flex, { className: clsx('ape:items-center ape:min-w-[20px]'), style: { color: getDiscountColor(+baseTrueBondPrice?.bonusWithFee) }, children: baseTrueBondPrice?.bonusWithFee > 0 ? (`${baseTrueBondPrice?.bonusWithFee?.toFixed(2)}%`) : (jsx(Flex, { className: "ape:h-[20px] ape:w-[20px]", children: jsx(TooltipBubble, { body: 'This bond is currently on cooldown and has no bonus. Please check back soon.', width: "205px", placement: "bottomRight", transformTip: "translate(10%, 0%)", children: jsx(Timer, { width: "20px", color: "#81CFEA" }) }) })) })) : (jsxs(Flex, { className: "ape:items-center ape:min-w-[20px]", style: { color: bonus ? 'var(--ape-color-success)' : undefined }, children: [bonus || '-', airdropTooltip && (jsx(TooltipBubble, { body: jsx(Fragment, { children: airdropTooltip }), width: "230px", placement: isMobile ? 'bottomRight' : 'bottomLeft', transformTip: isMobile ? 'translate(9%, 6%)' : 'translate(-3%, 6%)', children: jsx(Flex, { className: "ape:w-[20px] ape:h-[20px] ape:items-center ape:ml-[5px]", children: jsx("img", { src: "https://res.cloudinary.com/dswmrqgwy/image/upload/v1750345773/airdrop_qvh4ow.png", alt: "airdrop-img", style: { width: '20px', height: '20px' } }) }) }))] })) }));
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
export { BonusComponent as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BonusComponent.js","sources":["../../../../../src/views/Bonds/components/BonusComponents/BonusComponent.tsx"],"sourcesContent":["import React from 'react'\nimport clsx from 'clsx'\nimport { TrueBondPrices } from '../../../../types/bonds'\nimport BonusTable from './BonusTable'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport { getDiscountColor } from '../../utils'\nimport { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport { useIsMobile } from '../../../../hooks/useIsMobile'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport TooltipBubble from '../../../../components/uikit-sdk/TooltipBubble'\nimport Timer from '../../../../components/uikit-sdk/Svg/Icons/Timer'\n\nconst BonusComponent = ({\n trueBondPrices,\n minTier,\n bonus,\n airdropTooltip,\n tooltipPosition,\n hideTooltip,\n}: {\n trueBondPrices?: TrueBondPrices[]\n minTier?: LaunchBondTiers\n bonus?: string\n airdropTooltip?: string\n tooltipPosition?: 'bottomRight' | 'bottomLeft'\n hideTooltip?: boolean\n}) => {\n const SDKConfig = useSDKConfig()\n const isMobile = useIsMobile()\n const highestPointsElement = trueBondPrices?.reduce((max, current) => {\n return BigInt(current.points) > BigInt(max.points) ? current : max\n }, trueBondPrices[0])\n\n const baseTrueBondPrice = findHighestTrueBondPrice('0', trueBondPrices)\n\n return (\n <Flex>\n {trueBondPrices && trueBondPrices?.length > 1 && SDKConfig.useTiers ? (\n <Flex className=\"ape:items-center ape:min-w-[20px]\">\n {highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0 ? (\n <TooltipBubble\n width=\"280px\"\n placement={tooltipPosition}\n transformTip={tooltipPosition === 'bottomLeft' ? 'translate(0%, 0%)' : 'translate(0%, 0%)'}\n body={<BonusTable trueBondPrices={trueBondPrices} minTier={minTier} />}\n hideTooltip={hideTooltip}\n >\n <Flex className=\"ape:p-[3px_6px] ape:border ape:border-solid ape:border-[#9960C5] ape:rounded-normal ape:bg-transparent ape:relative ape:overflow-hidden ape:cursor-pointer ape:w-[130px] ape:md:w-[150px]\">\n <Flex className=\"ape:absolute ape:w-full ape:h-full ape:top-0 ape:left-0 ape:z-[1] ape:bg-[#9960C5] ape:opacity-20\" />\n <Flex className=\"ape:w-full ape:z-[2] ape:items-center ape:justify-center\">\n <img\n src={`https://ape.bond/images/launch/mythical.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n <Flex className=\"ape:text-[12px] ape:md:text-[14px] ape:mr-[3px]\">Up to</Flex>\n <Flex\n className={clsx(\n 'ape:text-[14px] ape:md:text-[16px]',\n highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0\n ? 'ape:text-success'\n : 'ape:text-error',\n )}\n >\n {highestPointsElement?.bonusWithFee?.toFixed(2)}%\n </Flex>\n </Flex>\n </Flex>\n </TooltipBubble>\n ) : (\n <Flex className=\"ape:h-[20px] ape:w-[20px]\">\n <TooltipBubble\n body={'This bond is currently on cooldown and has no bonus. Please check back soon.'}\n width=\"205px\"\n placement
|
|
1
|
+
{"version":3,"file":"BonusComponent.js","sources":["../../../../../src/views/Bonds/components/BonusComponents/BonusComponent.tsx"],"sourcesContent":["import React from 'react'\nimport clsx from 'clsx'\nimport { TrueBondPrices } from '../../../../types/bonds'\nimport BonusTable from './BonusTable'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport { getDiscountColor } from '../../utils'\nimport { findHighestTrueBondPrice } from '../../../../utils/bondPriceHelpers'\nimport { LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport { useIsMobile } from '../../../../hooks/useIsMobile'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport TooltipBubble from '../../../../components/uikit-sdk/TooltipBubble'\nimport Timer from '../../../../components/uikit-sdk/Svg/Icons/Timer'\n\nconst BonusComponent = ({\n trueBondPrices,\n minTier,\n bonus,\n airdropTooltip,\n tooltipPosition,\n hideTooltip,\n}: {\n trueBondPrices?: TrueBondPrices[]\n minTier?: LaunchBondTiers\n bonus?: string\n airdropTooltip?: string\n tooltipPosition?: 'bottomRight' | 'bottomLeft'\n hideTooltip?: boolean\n}) => {\n const SDKConfig = useSDKConfig()\n const isMobile = useIsMobile()\n const highestPointsElement = trueBondPrices?.reduce((max, current) => {\n return BigInt(current.points) > BigInt(max.points) ? current : max\n }, trueBondPrices[0])\n\n const baseTrueBondPrice = findHighestTrueBondPrice('0', trueBondPrices)\n\n return (\n <Flex>\n {trueBondPrices && trueBondPrices?.length > 1 && SDKConfig.useTiers ? (\n <Flex className=\"ape:items-center ape:min-w-[20px]\">\n {highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0 ? (\n <TooltipBubble\n width=\"280px\"\n placement={tooltipPosition}\n transformTip={tooltipPosition === 'bottomLeft' ? 'translate(0%, 0%)' : 'translate(0%, 0%)'}\n body={<BonusTable trueBondPrices={trueBondPrices} minTier={minTier} />}\n hideTooltip={hideTooltip}\n >\n <Flex className=\"ape:p-[3px_6px] ape:border ape:border-solid ape:border-[#9960C5] ape:rounded-normal ape:bg-transparent ape:relative ape:overflow-hidden ape:cursor-pointer ape:w-[130px] ape:md:w-[150px]\">\n <Flex className=\"ape:absolute ape:w-full ape:h-full ape:top-0 ape:left-0 ape:z-[1] ape:bg-[#9960C5] ape:opacity-20\" />\n <Flex className=\"ape:w-full ape:z-[2] ape:items-center ape:justify-center\">\n <img\n src={`https://ape.bond/images/launch/mythical.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n <Flex className=\"ape:text-[12px] ape:md:text-[14px] ape:mr-[3px]\">Up to</Flex>\n <Flex\n className={clsx(\n 'ape:text-[14px] ape:md:text-[16px]',\n highestPointsElement?.bonusWithFee && highestPointsElement?.bonusWithFee > 0\n ? 'ape:text-success'\n : 'ape:text-error',\n )}\n >\n {highestPointsElement?.bonusWithFee?.toFixed(2)}%\n </Flex>\n </Flex>\n </Flex>\n </TooltipBubble>\n ) : (\n <Flex className=\"ape:h-[20px] ape:w-[20px]\">\n <TooltipBubble\n body={'This bond is currently on cooldown and has no bonus. Please check back soon.'}\n width=\"205px\"\n placement={tooltipPosition}\n transformTip={tooltipPosition === 'bottomLeft' ? 'translate(-5%, 0%)' : 'translate(10%, 0%)'}\n >\n <Timer width=\"20px\" color=\"#81CFEA\" />\n </TooltipBubble>\n </Flex>\n )}\n </Flex>\n ) : baseTrueBondPrice ? (\n <Flex\n className={clsx('ape:items-center ape:min-w-[20px]')}\n style={{ color: getDiscountColor(+baseTrueBondPrice?.bonusWithFee) }}\n >\n {baseTrueBondPrice?.bonusWithFee > 0 ? (\n `${baseTrueBondPrice?.bonusWithFee?.toFixed(2)}%`\n ) : (\n <Flex className=\"ape:h-[20px] ape:w-[20px]\">\n <TooltipBubble\n body={'This bond is currently on cooldown and has no bonus. Please check back soon.'}\n width=\"205px\"\n placement=\"bottomRight\"\n transformTip=\"translate(10%, 0%)\"\n >\n <Timer width=\"20px\" color=\"#81CFEA\" />\n </TooltipBubble>\n </Flex>\n )}\n </Flex>\n ) : (\n <Flex\n className=\"ape:items-center ape:min-w-[20px]\"\n style={{ color: bonus ? 'var(--ape-color-success)' : undefined }}\n >\n {bonus || '-'}\n {airdropTooltip && (\n <TooltipBubble\n body={<>{airdropTooltip}</>}\n width=\"230px\"\n placement={isMobile ? 'bottomRight' : 'bottomLeft'}\n transformTip={isMobile ? 'translate(9%, 6%)' : 'translate(-3%, 6%)'}\n >\n <Flex className=\"ape:w-[20px] ape:h-[20px] ape:items-center ape:ml-[5px]\">\n <img\n src=\"https://res.cloudinary.com/dswmrqgwy/image/upload/v1750345773/airdrop_qvh4ow.png\"\n alt=\"airdrop-img\"\n style={{ width: '20px', height: '20px' }}\n />\n </Flex>\n </TooltipBubble>\n )}\n </Flex>\n )}\n </Flex>\n )\n}\n\nexport default BonusComponent\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -39,7 +39,7 @@ const BuyAgainRow = () => {
|
|
|
39
39
|
bond: bond.earnToken.symbol,
|
|
40
40
|
},
|
|
41
41
|
});
|
|
42
|
-
}, className: "ape:absolute ape:top-[25px] ape:left-[1px] ape:w-[calc(100%-2px)]", children: jsx(BondRow, { bondAddress: bond?.contractAddress?.[bond?.chainId], bondChain: bond.chainId, billType: bond.billType,
|
|
42
|
+
}, className: "ape:absolute ape:top-[25px] ape:left-[1px] ape:w-[calc(100%-2px)]", children: jsx(BondRow, { bondAddress: bond?.contractAddress?.[bond?.chainId], bondChain: bond.chainId, billType: bond.billType, payoutTokenSymbol: bond.earnToken?.symbol, payoutTokenAddress: bond.earnToken?.address?.[bond.chainId], tag: bond.tags?.[0], bondSoldOut: isBondSoldOut(bond, SDKConfig.showLowValueBonds), trueBondPrices: bond?.trueBondPrices, minTier: bond?.minTier, vestingTermString: getVestingTermsString(bond), vestingCliffString: getVestingTermsTooltipString(bond), percentageAvailable: remainingPercentage(bond), remainingTokensString: remainingTokensString }, `${bondAddress}-${bond.chainId}`) })] })) : null;
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
export { BuyAgainRow as default };
|