errorLevel.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import styled from '@emotion/styled';
  2. import {Tooltip} from 'sentry/components/tooltip';
  3. import {tct} from 'sentry/locale';
  4. import type {Level} from 'sentry/types/event';
  5. import {capitalize} from 'sentry/utils/string/capitalize';
  6. const DEFAULT_SIZE = '13px';
  7. type Props = {
  8. className?: string;
  9. level?: Level;
  10. size?: string;
  11. };
  12. function ErrorLevel({className, level = 'unknown', size = '11px'}: Props) {
  13. const levelLabel = tct('Level: [level]', {level: capitalize(level)});
  14. return (
  15. <Tooltip skipWrapper disabled={level === 'unknown'} title={levelLabel}>
  16. <ColoredCircle className={className} level={level} size={size}>
  17. {levelLabel}
  18. </ColoredCircle>
  19. </Tooltip>
  20. );
  21. }
  22. const ColoredCircle = styled('span')<Props>`
  23. padding: 0;
  24. position: relative;
  25. width: ${p => p.size || DEFAULT_SIZE};
  26. height: ${p => p.size || DEFAULT_SIZE};
  27. text-indent: -9999em;
  28. display: inline-block;
  29. border-radius: 50%;
  30. flex-shrink: 0;
  31. background-color: ${p => (p.level ? p.theme.level[p.level] : p.theme.level.error)};
  32. `;
  33. export default ErrorLevel;