import React from "react"; import { Box, Tooltip, Portal, Backdrop } from "@mui/material"; import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined"; const InfoIconWithTooltip = ({ tooltip, iconProps = {}, sx = {} }) => { const [open, setOpen] = React.useState(false); return ( <> <Tooltip title={tooltip} arrow placement="top" open={open} onOpen={() => setOpen(true)} onClose={() => setOpen(false)} componentsProps={{ tooltip: { sx: { bgcolor: "rgba(33, 33, 33, 0.95)", padding: "12px 16px", maxWidth: "none !important", width: "auto", minWidth: "200px", fontSize: "0.875rem", lineHeight: 1.5, position: "relative", zIndex: 1501, "& .MuiTooltip-arrow": { color: "rgba(33, 33, 33, 0.95)", }, }, }, popper: { sx: { zIndex: 1501, maxWidth: "min(600px, 90vw) !important", '&[data-popper-placement*="bottom"] .MuiTooltip-tooltip': { marginTop: "10px", }, '&[data-popper-placement*="top"] .MuiTooltip-tooltip': { marginBottom: "10px", }, }, }, }} > <Box component="span" sx={{ opacity: 0.5, display: "flex", alignItems: "center", cursor: "help", "&:hover": { opacity: 0.8 }, position: "relative", zIndex: open ? 1502 : "auto", ...sx, }} > <InfoOutlinedIcon sx={{ fontSize: "1rem", ...iconProps.sx, }} {...iconProps} /> </Box> </Tooltip> {open && ( <Portal> <Backdrop open={true} sx={{ zIndex: 1500, backgroundColor: "rgba(0, 0, 0, 0.5)", transition: "opacity 0.2s ease", pointerEvents: "none", }} /> </Portal> )} </> ); }; export default InfoIconWithTooltip;