a tool for shared writing and social publishing
1import * as RadixTooltip from "@radix-ui/react-tooltip"; 2import { PopoverArrow } from "./Icons/PopoverArrow"; 3import { theme } from "tailwind.config"; 4import { NestedCardThemeProvider } from "./ThemeManager/ThemeProvider"; 5 6export const Tooltip = (props: { 7 trigger: React.ReactNode; 8 disabled?: boolean; 9 children: React.ReactNode; 10 delayDuration?: number; 11 skipDelayDuration?: number; 12 align?: "start" | "end" | "center"; 13 side?: "top" | "bottom" | "left" | "right"; 14 background?: string; 15 border?: string; 16 className?: string; 17 open?: boolean; 18 onOpenChange?: (open: boolean) => void; 19 asChild?: boolean; 20 arrowFill?: string; 21}) => { 22 return ( 23 <RadixTooltip.Provider 24 delayDuration={props.delayDuration ? props.delayDuration : 600} 25 skipDelayDuration={ 26 props.skipDelayDuration ? props.skipDelayDuration : 300 27 } 28 > 29 <RadixTooltip.Root> 30 <RadixTooltip.Trigger disabled={props.disabled} asChild={props.asChild}> 31 {props.trigger} 32 </RadixTooltip.Trigger> 33 <RadixTooltip.Portal> 34 <NestedCardThemeProvider> 35 <RadixTooltip.Content 36 className={` 37 z-20 bg-bg-page 38 px-3 py-2 39 max-w-(--radix-popover-content-available-width) 40 max-h-(--radix-popover-content-available-height) 41 border border-border rounded-md shadow-md 42 overflow-y-scroll no-scrollbar 43 ${props.className} 44 `} 45 side={props.side} 46 align={props.align ? props.align : "center"} 47 sideOffset={4} 48 collisionPadding={16} 49 > 50 {props.children} 51 <RadixTooltip.Arrow 52 asChild 53 width={16} 54 height={8} 55 viewBox="0 0 16 8" 56 > 57 <PopoverArrow 58 arrowFill={theme.colors["border"]} 59 arrowStroke="transparent" 60 /> 61 </RadixTooltip.Arrow> 62 </RadixTooltip.Content> 63 </NestedCardThemeProvider> 64 </RadixTooltip.Portal> 65 </RadixTooltip.Root> 66 </RadixTooltip.Provider> 67 ); 68};