import { useTheme } from '@emotion/react'; import { styled } from '@linaria/react'; import { FieldCurrencyValue } from '@/object-record/record-field/types/FieldMetadata'; import { SETTINGS_FIELD_CURRENCY_CODES } from '@/settings/data-model/constants/SettingsFieldCurrencyCodes'; import { formatAmount } from '~/utils/format/formatAmount'; import { isDefined } from '~/utils/isDefined'; type CurrencyDisplayProps = { currencyValue: FieldCurrencyValue | null | undefined; }; const StyledEllipsisDisplay = styled.div` align-items: center; display: flex; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 100%; `; export const CurrencyDisplay = ({ currencyValue }: CurrencyDisplayProps) => { const theme = useTheme(); const shouldDisplayCurrency = isDefined(currencyValue?.currencyCode); const CurrencyIcon = isDefined(currencyValue?.currencyCode) ? SETTINGS_FIELD_CURRENCY_CODES[currencyValue?.currencyCode]?.Icon : null; const amountToDisplay = (currencyValue?.amountMicros ?? 0) / 1000000; if (!shouldDisplayCurrency) { return {0}; } return ( {isDefined(CurrencyIcon) && ( <> {' '} )} {amountToDisplay !== 0 ? formatAmount(amountToDisplay) : ''} ); };