2023-12-13 14:32:57 +03:00
|
|
|
'use client';
|
|
|
|
|
2023-12-15 17:34:50 +03:00
|
|
|
import clsx from 'clsx';
|
2023-12-21 00:12:24 +03:00
|
|
|
import { ReactNode } from 'react';
|
2023-12-07 01:33:34 +03:00
|
|
|
import { createPortal } from 'react-dom';
|
2023-07-30 16:48:25 +03:00
|
|
|
import { ITooltip, Tooltip } from 'react-tooltip';
|
|
|
|
|
2023-12-13 14:32:57 +03:00
|
|
|
import { useConceptTheme } from '@/context/ThemeContext';
|
2023-07-30 16:48:25 +03:00
|
|
|
|
|
|
|
interface ConceptTooltipProps
|
2023-07-31 22:38:58 +03:00
|
|
|
extends Omit<ITooltip, 'variant'> {
|
2023-09-05 23:18:21 +03:00
|
|
|
layer?: string
|
2023-12-21 00:12:24 +03:00
|
|
|
text?: string
|
2023-07-30 16:48:25 +03:00
|
|
|
}
|
|
|
|
|
2023-11-05 16:31:49 +03:00
|
|
|
function ConceptTooltip({
|
2023-12-21 00:12:24 +03:00
|
|
|
text, children,
|
2023-11-05 16:31:49 +03:00
|
|
|
layer='z-tooltip',
|
|
|
|
place='bottom',
|
2023-12-18 19:42:27 +03:00
|
|
|
className,
|
2023-11-24 18:03:10 +03:00
|
|
|
style,
|
2023-11-27 13:50:56 +03:00
|
|
|
...restProps
|
2023-11-05 16:31:49 +03:00
|
|
|
}: ConceptTooltipProps) {
|
2023-07-30 16:48:25 +03:00
|
|
|
const { darkMode } = useConceptTheme();
|
|
|
|
|
2023-12-13 14:32:57 +03:00
|
|
|
if (typeof window === 'undefined') {
|
|
|
|
return null;
|
|
|
|
}
|
2023-12-07 01:33:34 +03:00
|
|
|
return createPortal(
|
2023-12-21 00:12:24 +03:00
|
|
|
(<Tooltip
|
|
|
|
delayShow={1000}
|
|
|
|
delayHide={100}
|
2023-09-09 20:36:55 +03:00
|
|
|
opacity={0.97}
|
2023-12-15 17:34:50 +03:00
|
|
|
className={clsx(
|
2023-12-21 00:12:24 +03:00
|
|
|
'overflow-hidden',
|
2023-12-15 17:34:50 +03:00
|
|
|
'border shadow-md',
|
|
|
|
layer,
|
|
|
|
className
|
|
|
|
)}
|
2023-12-21 00:12:24 +03:00
|
|
|
classNameArrow={layer}
|
2023-12-16 19:20:26 +03:00
|
|
|
style={{...{ paddingTop: '2px', paddingBottom: '2px'}, ...style}}
|
2023-07-30 16:48:25 +03:00
|
|
|
variant={(darkMode ? 'dark' : 'light')}
|
2023-07-31 22:38:58 +03:00
|
|
|
place={place}
|
2023-11-27 13:50:56 +03:00
|
|
|
{...restProps}
|
2023-12-21 00:12:24 +03:00
|
|
|
>
|
|
|
|
{text}
|
|
|
|
{children as ReactNode}
|
|
|
|
</Tooltip>), document.body);
|
2023-07-30 16:48:25 +03:00
|
|
|
}
|
|
|
|
|
2023-12-13 14:32:57 +03:00
|
|
|
export default ConceptTooltip;
|