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`}
);