level.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import {memo} from 'react';
  2. import styled from '@emotion/styled';
  3. import Highlight from 'sentry/components/highlight';
  4. import Tag, {Background} from 'sentry/components/tag';
  5. import {t} from 'sentry/locale';
  6. import {BreadcrumbLevelType} from 'sentry/types/breadcrumbs';
  7. type Props = {
  8. level: BreadcrumbLevelType;
  9. searchTerm?: string;
  10. };
  11. const Level = memo(function Level({level, searchTerm = ''}: Props) {
  12. switch (level) {
  13. case BreadcrumbLevelType.FATAL:
  14. return (
  15. <LevelTag type="error">
  16. <Highlight text={searchTerm}>{t('Fatal')}</Highlight>
  17. </LevelTag>
  18. );
  19. case BreadcrumbLevelType.ERROR:
  20. return (
  21. <LevelTag type="error">
  22. <Highlight text={searchTerm}>{t('Error')}</Highlight>
  23. </LevelTag>
  24. );
  25. case BreadcrumbLevelType.INFO:
  26. return (
  27. <LevelTag type="info">
  28. <Highlight text={searchTerm}>{t('Info')}</Highlight>
  29. </LevelTag>
  30. );
  31. case BreadcrumbLevelType.WARNING:
  32. return (
  33. <LevelTag type="warning">
  34. <Highlight text={searchTerm}>{t('Warning')}</Highlight>
  35. </LevelTag>
  36. );
  37. default:
  38. return (
  39. <LevelTag>
  40. <Highlight text={searchTerm}>{level || t('Undefined')}</Highlight>
  41. </LevelTag>
  42. );
  43. }
  44. });
  45. export default Level;
  46. const LevelTag = styled(Tag)`
  47. height: 24px;
  48. display: flex;
  49. align-items: center;
  50. ${Background} {
  51. overflow: hidden;
  52. }
  53. `;