ElementTooltip.jsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // components
  2. import Tooltip from '@mui/material/Tooltip';
  3. // utils
  4. import PropTypes from 'prop-types';
  5. import {tooltipClasses, styled} from '@mui/material';
  6. const StyledTooltip = styled(({className, ...props}) => (
  7. <Tooltip {...props} classes={{popper: className}}/>
  8. ))(({theme}) => ({
  9. [`& .${tooltipClasses.tooltip}`]: {
  10. backgroundColor: 'var(--tooltip-bg)',
  11. color: 'var(--header)',
  12. boxShadow: '0 2px 16px rgba(75, 85, 110, 0.2)',
  13. fontSize: 12,
  14. maxWidth: 150,
  15. borderRadius: 4,
  16. marginTop: '4px !important',
  17. fontFamily: 'var(--heading-font)',
  18. },
  19. }));
  20. const ElementTooltip = ({children, title, placement = 'bottom'}) => {
  21. return (
  22. <StyledTooltip title={title} placement={placement}>
  23. {children}
  24. </StyledTooltip>
  25. )
  26. }
  27. ElementTooltip.propTypes = {
  28. children: PropTypes.node.isRequired,
  29. title: PropTypes.any.isRequired,
  30. placement: PropTypes.oneOf(['top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-start', 'bottom', 'bottom-end', 'left-start', 'left', 'left-end'])
  31. }
  32. export default ElementTooltip