diff --git a/apps/web/src/components/ui/Navbar/NavbarItem.tsx b/apps/web/src/components/ui/Navbar/NavbarItem.tsx index 8fd0f7d4a..7dd93ba34 100644 --- a/apps/web/src/components/ui/Navbar/NavbarItem.tsx +++ b/apps/web/src/components/ui/Navbar/NavbarItem.tsx @@ -1,6 +1,7 @@ import clsx from 'clsx'; import { useState } from 'react'; import { RiArrowDownSLine } from 'react-icons/ri'; +import { useDebounce } from 'usehooks-ts'; import { themeOutlineElement_FocusVisible, @@ -25,6 +26,17 @@ export default function NavbarItem({ ...props }: NavbarTopLevelItem) { const [open, setOpen] = useState(false); + // To debounce open state when quick hovering on and out + const debouncedOpen = useDebounce(open, 100); + const [isClicked, setIsClicked] = useState(false); + + function handleMouseEnter() { + setOpen(true); + } + + function handleMouseLeave() { + setOpen(false); + } const commonStyles = clsx( 'group', @@ -58,14 +70,17 @@ export default function NavbarItem({ } return ( - + + )} + onClick={() => setIsClicked(true)} + onMouseEnter={handleMouseEnter} + onMouseLeave={handleMouseLeave}> {label}