import styled from '@emotion/styled'; type Props = { children: React.ReactNode; className?: string; ['data-test-id']?: string; /** * Change which side of the text is elided. * Default: 'right' * * BROWSER COMPAT: * When set to `left` the intention is for something like: `...xample.com/foo/` * In Chrome & Firefox this is what happens. * * In Safari (July 2022) you will see this instead: `...https://example.co`. * * See: https://stackoverflow.com/a/24800788 */ ellipsisDirection?: 'left' | 'right'; isParagraph?: boolean; }; const TextOverflow = styled( ({ children, className, ellipsisDirection, isParagraph, ['data-test-id']: dataTestId, }: Props) => { const Component = isParagraph ? 'p' : 'div'; if (ellipsisDirection === 'left') { return ( {children} ); } return ( {children} ); } )` ${p => p.theme.overflowEllipsis} ${p => p.ellipsisDirection === 'left' && ` direction: rtl; text-align: left; `}; width: auto; line-height: 1.2; `; TextOverflow.defaultProps = { ellipsisDirection: 'right', isParagraph: false, }; export default TextOverflow;