'use client'; import React from 'react'; import * as Tooltip from '@radix-ui/react-tooltip'; import { styled, keyframes } from '@stitches/react'; type TooltipProps = { sideOffset?: number; content: React.ReactNode; children: React.ReactNode; side?: 'top' | 'right' | 'bottom' | 'left'; // default is bottom slateBlack?: boolean; }; const ToolTip = (props: TooltipProps) => { return ( {props.children} {props.content} ); }; const slideUpAndFade = keyframes({ '0%': { opacity: 0, transform: 'translateY(2px)' }, '100%': { opacity: 1, transform: 'translateY(0)' }, }); const slideRightAndFade = keyframes({ '0%': { opacity: 0, transform: 'translateX(-2px)' }, '100%': { opacity: 1, transform: 'translateX(0)' }, }); const slideDownAndFade = keyframes({ '0%': { opacity: 0, transform: 'translateY(-2px)' }, '100%': { opacity: 1, transform: 'translateY(0)' }, }); const slideLeftAndFade = keyframes({ '0%': { opacity: 0, transform: 'translateX(2px)' }, '100%': { opacity: 1, transform: 'translateX(0)' }, }); const closeAndFade = keyframes({ '0%': { opacity: 1 }, '100%': { opacity: 0 }, }); const TooltipContent = styled(Tooltip.Content, { variants: { slateBlack: { true: { backgroundColor: " #0d0d0d", color: 'white', }, }, }, borderRadius: 4, padding: '5px 10px', fontSize: 12, lineHeight: 1, color: "black", backgroundColor: 'rgba(217, 217, 217, 0.50)', zIndex: 500, boxShadow: 'hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px', userSelect: 'none', animationDuration: '400ms', animationTimingFunction: 'cubic-bezier(0.16, 1, 0.3, 1)', willChange: 'transform, opacity', '&[data-state="delayed-open"]': { '&[data-side="top"]': { animationName: slideDownAndFade }, '&[data-side="right"]': { animationName: slideLeftAndFade }, '&[data-side="bottom"]': { animationName: slideUpAndFade }, '&[data-side="left"]': { animationName: slideRightAndFade }, }, // closing animation '&[data-state="closed"]': { '&[data-side="top"]': { animationName: closeAndFade }, '&[data-side="right"]': { animationName: closeAndFade }, '&[data-side="bottom"]': { animationName: closeAndFade }, '&[data-side="left"]': { animationName: closeAndFade }, }, }); export default ToolTip;