ButtonTooltip.tsx 881 B

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