ButtonTooltip.tsx28 lines · main
1import { ComponentProps, ComponentPropsWithoutRef, ElementRef, forwardRef, ReactNode } from 'react'
2import { Button, cn, Tooltip, TooltipContent, TooltipTrigger } from 'ui'
3
4export const ButtonTooltip = forwardRef<
5 ElementRef<typeof Button>,
6 ComponentPropsWithoutRef<typeof Button> & {
7 tooltip: {
8 content: ComponentProps<typeof TooltipContent> & {
9 text?: string | ReactNode
10 }
11 }
12 }
13>(({ tooltip, className, ...props }, ref) => {
14 return (
15 <Tooltip>
16 <TooltipTrigger asChild>
17 <Button ref={ref} {...props} className={cn(className, 'pointer-events-auto')}>
18 {props.children}
19 </Button>
20 </TooltipTrigger>
21 {tooltip.content.text !== undefined && (
22 <TooltipContent {...tooltip.content}>{tooltip.content.text}</TooltipContent>
23 )}
24 </Tooltip>
25 )
26})
27
28ButtonTooltip.displayName = 'ButtonTooltip'