questionTooltip.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import React from 'react';
  2. import styled from '@emotion/styled';
  3. import Tooltip from 'app/components/tooltip';
  4. import {IconQuestion} from 'app/icons';
  5. import {IconSize} from 'app/utils/theme';
  6. type ContainerProps = {
  7. className?: string;
  8. size: IconSize | string;
  9. };
  10. const QuestionIconContainer = styled('span')<ContainerProps>`
  11. display: inline-block;
  12. height: ${p => p.theme.iconSizes[p.size] ?? p.size};
  13. line-height: ${p => p.theme.iconSizes[p.size] ?? p.size};
  14. & svg {
  15. transition: 120ms color;
  16. color: ${p => p.theme.gray200};
  17. &:hover {
  18. color: ${p => p.theme.gray300};
  19. }
  20. }
  21. `;
  22. type QuestionProps = {
  23. className?: string;
  24. title: React.ReactNode;
  25. size: string;
  26. } & Pick<React.ComponentProps<typeof Tooltip>, 'position'> &
  27. Partial<
  28. Pick<
  29. React.ComponentProps<typeof Tooltip>,
  30. 'containerDisplayMode' | 'isHoverable' | 'popperStyle'
  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} />
  38. </Tooltip>
  39. </QuestionIconContainer>
  40. );
  41. }
  42. export default QuestionTooltip;