{
  "name": "use-hover",
  "author": "Brendan Dash (https://shadcn-hooks.com)",
  "description": "A hook to check if the mouse is hovering over an element",
  "registryDependencies": [
    "@shadcnhooks/create-effect-with-target",
    "@shadcnhooks/use-event-listener",
    "@shadcnhooks/use-boolean"
  ],
  "files": [
    {
      "path": "registry/hooks/use-hover.ts",
      "content": "import { useBoolean } from '@/registry/hooks/use-boolean'\nimport { useEventListener } from '@/registry/hooks/use-event-listener'\nimport type { BasicTarget } from '@/registry/lib/create-effect-with-target'\n\nexport interface UseHoverOptions {\n  onEnter?: () => void\n  onLeave?: () => void\n  onChange?: (isHovering: boolean) => void\n}\n\nexport function useHover(\n  target: BasicTarget,\n  options?: UseHoverOptions,\n): boolean {\n  const { onEnter, onLeave, onChange } = options || {}\n\n  const [state, { setTrue, setFalse }] = useBoolean(false)\n\n  useEventListener(\n    'mouseenter',\n    () => {\n      onEnter?.()\n      setTrue()\n      onChange?.(true)\n    },\n    {\n      target,\n    },\n  )\n\n  useEventListener(\n    'mouseleave',\n    () => {\n      onLeave?.()\n      setFalse()\n      onChange?.(false)\n    },\n    {\n      target,\n    },\n  )\n\n  return state\n}\n",
      "type": "registry:hook"
    }
  ],
  "type": "registry:hook"
}
