fix: tooltip UI

This commit is contained in:
SujalXplores 2024-11-25 20:46:49 +05:30
parent b8b25baf5c
commit 0ebd4a6a38

View File

@ -1,14 +1,15 @@
import React from 'react';
import * as Tooltip from '@radix-ui/react-tooltip'; import * as Tooltip from '@radix-ui/react-tooltip';
import type { ReactNode } from 'react';
interface ToolTipProps { interface TooltipProps {
tooltip: string; tooltip: React.ReactNode;
children: ReactNode | ReactNode[]; children: React.ReactNode;
sideOffset?: number; sideOffset?: number;
className?: string; className?: string;
arrowClassName?: string; arrowClassName?: string;
tooltipStyle?: any; //TODO better type tooltipStyle?: React.CSSProperties;
position?: 'top' | 'bottom' | 'left' | 'right';
maxWidth?: number;
delay?: number;
} }
const WithTooltip = ({ const WithTooltip = ({
@ -18,18 +19,51 @@ const WithTooltip = ({
className = '', className = '',
arrowClassName = '', arrowClassName = '',
tooltipStyle = {}, tooltipStyle = {},
}: ToolTipProps) => { position = 'top',
maxWidth = 250,
delay = 0,
}: TooltipProps) => {
return ( return (
<Tooltip.Root> <Tooltip.Root delayDuration={delay}>
<Tooltip.Trigger asChild>{children}</Tooltip.Trigger> <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>
<Tooltip.Portal> <Tooltip.Portal>
<Tooltip.Content <Tooltip.Content
className={`bg-bolt-elements-tooltip-background text-bolt-elements-textPrimary px-3 py-2 rounded-lg text-sm shadow-lg ${className}`} side={position}
className={`
z-[2000]
px-2.5
py-1.5
max-h-[300px]
select-none
rounded-md
bg-bolt-elements-background-depth-3
text-bolt-elements-textPrimary
text-sm
leading-tight
shadow-lg
animate-in
fade-in-0
zoom-in-95
data-[state=closed]:animate-out
data-[state=closed]:fade-out-0
data-[state=closed]:zoom-out-95
${className}
`}
sideOffset={sideOffset} sideOffset={sideOffset}
style={{ zIndex: 2000, backgroundColor: 'white', ...tooltipStyle }} style={{
maxWidth,
...tooltipStyle,
}}
> >
{tooltip} <div className="break-words">{tooltip}</div>
<Tooltip.Arrow className={`fill-bolt-elements-tooltip-background ${arrowClassName}`} /> <Tooltip.Arrow
className={`
fill-bolt-elements-background-depth-3
${arrowClassName}
`}
width={12}
height={6}
/>
</Tooltip.Content> </Tooltip.Content>
</Tooltip.Portal> </Tooltip.Portal>
</Tooltip.Root> </Tooltip.Root>