import { Box, Link, SvgIcon, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Typography, useMediaQuery } from "@mui/material"; import { NavLink } from "react-router-dom"; import ArrowUp from "../../../assets/icons/arrow-up.svg?react"; import BondDiscount from "./BondDiscount"; import BondDuration from "./BondDuration"; import BondInfoText from "./BondInfoText"; import BondPrice from "./BondPrice"; import { useScreenSize } from "../../../hooks/useScreenSize"; import { sortBondsByDiscount, formatNumber } from "../../../helpers"; import TokenStack from "../../../components/TokenStack/TokenStack"; import { TertiaryButton } from "../../../components/Button"; export const BondList = ({ bonds, secondsTo, chainId }) => { const isSmallScreen = useScreenSize("md"); if (bonds.length === 0) { return ( No active bonds ); } if (isSmallScreen) { return ( <> {sortBondsByDiscount(bonds).map(bond => ( ))} ); } return ( <> {sortBondsByDiscount(bonds).map(bond => ( ))} ); }; const BondCard = ({ bond, secondsTo }) => { const quoteTokenName = bond.quoteToken.name; const baseTokenName = bond.baseToken.name; return ( {bond.quoteToken.name} Get Asset Price {bond.isSoldOut ? ( "--" ) : ( )} Discount { bond.isSoldOut ? "--" : } Max Payout {`${payoutTokenCapacity(bond)}${ bond.baseToken.name !== bond.quoteToken.name ? ` (${quoteTokenCapacity(bond)})` : `` }`} Duration Bond ); }; const BondTable = ({ children }) => ( Bond Price Discount Max Payout Duration {children}
); const quoteTokenCapacity = (bond) => { const quoteTokenCapacity = bond.maxPayout.inQuoteToken.lt(bond.capacity.inQuoteToken) ? bond.maxPayout.inQuoteToken : bond.capacity.inQuoteToken; return `${formatNumber(quoteTokenCapacity, 4)} ${bond.quoteToken.name}`; }; const payoutTokenCapacity = (bond) => { const payoutTokenCapacity = bond.maxPayout.inBaseToken.lt(bond.capacity.inBaseToken) ? bond.maxPayout.inBaseToken : bond.capacity.inBaseToken; return `${formatNumber(payoutTokenCapacity, 4)} FTSO`; }; const BondRow = ({ bond, secondsTo }) => { const quoteTokenName = bond.quoteToken.name; const baseTokenName = bond.baseToken.name; return ( {bond.isSoldOut ? ( "--" ) : ( )} {bond.isSoldOut ? "--" : } {payoutTokenCapacity(bond)} {bond.baseToken.name !== bond.quoteToken.name && ( {quoteTokenCapacity(bond)} )} { bond.isSoldOut ? "--" : } {bond.isSoldOut ? "Sold Out" : `Bond`} ); }; const TokenIcons = ({ token, chainId, explorer }) => ( {token.name} {explorer ? `Explorer` : `Get Asset`} );