header.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import styled from '@emotion/styled';
  2. import Clipboard from 'sentry/components/clipboard';
  3. import {IconCopy} from 'sentry/icons';
  4. import {t} from 'sentry/locale';
  5. import {space} from 'sentry/styles/space';
  6. import {getShortEventId} from 'sentry/utils/events';
  7. type Props = {
  8. traceID?: string;
  9. };
  10. function Header({traceID}: Props) {
  11. return (
  12. <Wrapper>
  13. <h4>{t('Issues with the same trace ID')}</h4>
  14. {traceID ? (
  15. <Clipboard value={traceID}>
  16. <ClipboardWrapper>
  17. <span>{getShortEventId(traceID)}</span>
  18. <IconCopy />
  19. </ClipboardWrapper>
  20. </Clipboard>
  21. ) : (
  22. <span>{'-'}</span>
  23. )}
  24. </Wrapper>
  25. );
  26. }
  27. export default Header;
  28. const Wrapper = styled('div')`
  29. display: grid;
  30. grid-template-columns: max-content 1fr;
  31. gap: ${space(1)};
  32. align-items: center;
  33. font-size: ${p => p.theme.headerFontSize};
  34. color: ${p => p.theme.gray300};
  35. h4 {
  36. font-size: ${p => p.theme.headerFontSize};
  37. color: ${p => p.theme.textColor};
  38. font-weight: normal;
  39. margin-bottom: 0;
  40. }
  41. `;
  42. const ClipboardWrapper = styled('div')`
  43. display: grid;
  44. grid-template-columns: max-content 1fr;
  45. gap: ${space(1)};
  46. align-items: center;
  47. &:hover {
  48. cursor: pointer;
  49. }
  50. `;