| import React from 'react'; |
| import { ToggleContext } from './ToggleContext'; |
| import { cn } from '~/utils'; |
|
|
| const HoverToggle = ({ |
| children, |
| isActiveConvo, |
| isPopoverActive, |
| setIsPopoverActive, |
| className = 'absolute bottom-0 right-0 top-0', |
| onClick, |
| }: { |
| children: React.ReactNode; |
| isActiveConvo: boolean; |
| isPopoverActive: boolean; |
| setIsPopoverActive: (isActive: boolean) => void; |
| className?: string; |
| onClick?: (e: React.MouseEvent<HTMLDivElement>) => void; |
| }) => { |
| const setPopoverActive = (value: boolean) => setIsPopoverActive(value); |
| return ( |
| <ToggleContext.Provider value={{ isPopoverActive, setPopoverActive }}> |
| <div |
| onClick={onClick} |
| className={cn( |
| 'peer items-center gap-1.5 rounded-r-lg from-gray-900 pl-2 pr-2 dark:text-white', |
| isPopoverActive || isActiveConvo ? 'flex' : 'hidden group-hover:flex', |
| isActiveConvo |
| ? 'from-gray-50 from-85% to-transparent group-hover:bg-gradient-to-l group-hover:from-gray-200 dark:from-gray-800 dark:group-hover:from-gray-800' |
| : 'z-50 from-gray-50 from-0% to-transparent hover:bg-gradient-to-l hover:from-gray-200 dark:from-gray-800 dark:hover:from-gray-800', |
| isPopoverActive && !isActiveConvo ? 'from-gray-50 dark:from-gray-800' : '', |
| className, |
| )} |
| > |
| {children} |
| </div> |
| </ToggleContext.Provider> |
| ); |
| }; |
|
|
| export default HoverToggle; |
|
|