questionTooltip.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import styled from '@emotion/styled';
  2. import Tooltip from 'sentry/components/tooltip';
  3. import {IconQuestion} from 'sentry/icons';
  4. import {IconSize} from 'sentry/utils/theme';
  5. type ContainerProps = {
  6. size: IconSize | string;
  7. className?: string;
  8. };
  9. const QuestionIconContainer = styled('span')<ContainerProps>`
  10. display: inline-block;
  11. height: ${p => p.theme.iconSizes[p.size] ?? p.size};
  12. line-height: ${p => p.theme.iconSizes[p.size] ?? p.size};
  13. & svg {
  14. transition: 120ms opacity;
  15. color: ${p => p.theme.gray300};
  16. opacity: 0.6;
  17. &:hover {
  18. opacity: 1;
  19. }
  20. }
  21. `;
  22. type QuestionProps = {
  23. size: string;
  24. title: React.ReactNode;
  25. className?: string;
  26. } & Pick<React.ComponentProps<typeof Tooltip>, 'position'> &
  27. Partial<
  28. Pick<
  29. React.ComponentProps<typeof Tooltip>,
  30. 'containerDisplayMode' | 'isHoverable' | 'overlayStyle'
  31. >
  32. >;
  33. function QuestionTooltip({title, size, className, ...tooltipProps}: QuestionProps) {
  34. return (
  35. <QuestionIconContainer size={size} className={className}>
  36. <Tooltip title={title} {...tooltipProps}>
  37. <IconQuestion size={size} data-test-id="more-information" />
  38. </Tooltip>
  39. </QuestionIconContainer>
  40. );
  41. }
  42. export default QuestionTooltip;