import React from "react"; import { Tooltip } from "@dndbeyond/character-common-components/es"; import { CoinIcon } from "@dndbeyond/character-components/es"; import { CharacterCurrencyContract, Constants, FormatUtils, } from "@dndbeyond/character-rules-engine/es"; const generateCoinString = (coin: CharacterCurrencyContract | null): string => { if (!coin) { return ""; } const pp = coin.pp ? `${coin.pp} ${Constants.CoinNamesEnum.PLATINUM}` : ""; const gp = coin.gp ? `${coin.gp} ${Constants.CoinNamesEnum.GOLD}` : ""; const ep = coin.ep ? `${coin.ep} ${Constants.CoinNamesEnum.ELECTRUM}` : ""; const sp = coin.sp ? `${coin.sp} ${Constants.CoinNamesEnum.SILVER}` : ""; const cp = coin.cp ? `${coin.cp} ${Constants.CoinNamesEnum.COPPER}` : ""; return `${pp} ${gp} ${ep} ${sp} ${cp}`; }; interface CurrencyRowProps { amount: number; coinType: Constants.CoinTypeEnum; label: string; isDarkMode: boolean; } const CurrencyRow: React.FC = ({ amount, coinType, label, isDarkMode, }) => { return (
{FormatUtils.renderLocaleNumber(amount)}
); }; interface CoinProps { coin: CharacterCurrencyContract; isDarkMode: boolean; } const Coins: React.FC = ({ coin, isDarkMode }) => { let renderEmptyGold: boolean = false; if (!coin.pp && !coin.gp && !coin.ep && !coin.sp && !coin.cp) { renderEmptyGold = true; } return (
{!!coin.pp && ( )} {(!!coin.gp || renderEmptyGold) && ( )} {!!coin.ep && ( )} {!!coin.sp && ( )} {!!coin.cp && ( )}
); }; interface Props { coin: CharacterCurrencyContract | null; isDarkMode: boolean; shouldShowPartyInventory: boolean; handleCurrencyClick: (evt: React.KeyboardEvent | React.MouseEvent) => void; } export const CurrencyButton: React.FC = ({ coin, isDarkMode, shouldShowPartyInventory, handleCurrencyClick, }) => { return (
{ if (evt.key === "Enter") { handleCurrencyClick(evt); } }} > {coin ? ( ) : (
)}
); }; export default CurrencyButton;