import { getColors } from '@/themes/getColors';
import { Box, Tooltip as MuiTooltip, tooltipClasses } from '@mui/material';
import { styled, useTheme } from '@mui/material/styles';
import { PropsWithChildren } from 'react';
type GetVariantStyleProps = {
color: string;
theme: any;
labelColor: string;
};
function getVariantStyle({ color, theme, labelColor }: GetVariantStyleProps) {
const colors = getColors(theme, color as any);
const { main, contrastText } = colors;
const colorValue = color ? color : '';
if (['primary', 'secondary', 'info', 'success', 'warning', 'error'].includes(colorValue)) {
return {
[`& .${tooltipClasses.tooltip}`]: {
backgroundColor: main,
color: labelColor ? labelColor : contrastText
},
[`& .${tooltipClasses.arrow}`]: {
color: main
}
};
} else {
return {
[`& .${tooltipClasses.tooltip}`]: {
backgroundColor: colorValue,
color: labelColor ? labelColor : contrastText,
boxShadow: theme.shadows[1]
},
[`& .${tooltipClasses.arrow}`]: {
color: colorValue
}
};
}
}
type TooltipStyleProps = PropsWithChildren<{
color: string;
labelColor: string;
title: string;
}>;
const TooltipStyle = styled(
// @ts-ignore
({ className, ...props }: TooltipStyleProps) => ,
{
shouldForwardProp: (prop) => prop !== 'color' && prop !== 'labelColor'
}
)(({ theme, color, labelColor }) => ({
...(color && getVariantStyle({ color, theme, labelColor }))
}));
type TooltipProps = PropsWithChildren<{
arrow: boolean;
labelColor?: string;
rest: any;
}>;
function Tooltip({ children, arrow, labelColor = '', ...rest }: TooltipProps) {
const theme = useTheme();
return (
{/* @ts-ignore */}
{children}
);
}
export { Tooltip };
export type { TooltipProps };