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> | |
| ); | |
| }; | |