contextIcon.tsx 1010 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import {lazy, Suspense} from 'react';
  2. import styled from '@emotion/styled';
  3. import {generateIconName} from 'sentry/components/events/contextSummary/utils';
  4. import LoadingMask from 'sentry/components/loadingMask';
  5. import {Tooltip} from 'sentry/components/tooltip';
  6. import {space} from 'sentry/styles/space';
  7. type Props = {
  8. name: string;
  9. version: undefined | string;
  10. className?: string;
  11. };
  12. const LazyContextIcon = lazy(
  13. () => import('sentry/components/events/contextSummary/contextIcon')
  14. );
  15. const ContextIcon = styled(({className, name, version}: Props) => {
  16. const icon = generateIconName(name, version ?? undefined);
  17. return (
  18. <div className={className}>
  19. <Tooltip title={name}>
  20. <Suspense fallback={<LoadingMask />}>
  21. <LazyContextIcon name={icon} size="sm" />
  22. </Suspense>
  23. </Tooltip>
  24. {version ? <div>{version}</div> : null}
  25. </div>
  26. );
  27. })`
  28. display: flex;
  29. gap: ${space(1)};
  30. font-variant-numeric: tabular-nums;
  31. `;
  32. export default ContextIcon;