Spaces:
Running
Running
import classNames from "classnames"; | |
import { useState } from "react"; | |
import { useMount, useUpdateEffect } from "react-use"; | |
import { Clyde } from "./clyde"; | |
export const ClydeMessage = ({ | |
message, | |
auto = false, | |
onClick, | |
}: { | |
message: string; | |
auto?: boolean; | |
onClick: any; | |
}) => { | |
const [show, setShow] = useState(false); | |
useMount(() => { | |
if (auto) { | |
setTimeout(() => { | |
setShow(true); | |
}, 2000); | |
} | |
}); | |
useUpdateEffect(() => { | |
if (auto && show) { | |
setTimeout(() => { | |
setShow(false); | |
}, 5000); | |
} | |
}, [show]); | |
return ( | |
<div | |
className="left-0 lg:left-14 max-w-max group absolute top-0 transform -translate-y-[calc(100%-10px)] -z-1" | |
onClick={onClick} | |
> | |
<Clyde /> | |
<div | |
className={classNames( | |
"transition-all duration-200 absolute top-2 left-0 bg-white shadow-xl text-sm text-dark-200 font-medium rounded-lg px-3.5 py-1.5 whitespace-nowrap transform group-hover:translate-x-[90px] opacity-0 group-hover:opacity-100", | |
{ | |
"translate-x-[90px] opacity-100": show, | |
} | |
)} | |
> | |
{message} | |
<div className="w-[0px] h-[0px] border-t-[7px] border-t-transparent border-b-[7px] border-b-transparent border-r-[7px] border-r-white absolute top-[calc(50%-7px)] -left-[6px]" /> | |
</div> | |
{/* Hello<p>lol</p> */} | |
</div> | |
); | |
}; | |