import styled, { type AnyStyledComponent, css } from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; import { DiffArrow, type DiffArrowProps } from '@/components/DiffArrow'; import { Output, type OutputProps, OutputType } from '@/components/Output'; import { BigNumberish } from '@/lib/numbers'; export { OutputType as DiffOutputType }; type ElementProps = { hasInvalidNewValue?: boolean; newValue?: BigNumberish | null; withDiff?: boolean; }; type StyleProps = { layout?: 'row' | 'column'; }; export type DiffOutputProps = DiffArrowProps & OutputProps & ElementProps & StyleProps; export const DiffOutput = ({ className, direction, fractionDigits, hasInvalidNewValue, sign, tag, type, useGrouping, withDiff, layout = 'row', showSign, withBaseFont, value, newValue, }: DiffOutputProps) => ( {withDiff && ( )} ); const Styled: Record = {}; Styled.DiffValue = styled.div<{ hasInvalidNewValue?: boolean }>` ${layoutMixins.row} gap: 0.25rem; color: var(--color-text-2); ${({ hasInvalidNewValue }) => hasInvalidNewValue && css` color: var(--color-negative); `} `; Styled.DiffOutput = styled.div<{ layout: 'row' | 'column'; withDiff?: boolean }>` --diffOutput-gap: 0.25rem; --diffOutput-value-color: var(--color-text-1); --diffOutput-newValue-color: var(--color-text-2); --diffOutput-valueWithDiff-color: ; gap: var(--diffOutput-gap); & > :first-child { font: var(--diffOutput-value-font, inherit); color: var(--diffOutput-value-color); } ${({ layout }) => ({ ['row']: ` ${layoutMixins.row} `, ['column']: ` ${layoutMixins.column} `, }[layout])} ${({ withDiff }) => withDiff && css` & > :first-child { color: var(--diffOutput-valueWithDiff-color, var(--diffOutput-value-color)); font: var(--diffOutput-valueWithDiff-font); } & > :last-child { color: var(--diffOutput-newValue-color); font: var(--diffOutput-newValue-font); } `} `;