"use client";

import { useState } from "react";
import Link from "next/link";

type IntentLinkProps = React.ComponentProps<typeof Link>;

export default function IntentLink({
  prefetch,
  onFocus,
  onMouseEnter,
  ...props
}: IntentLinkProps) {
  const [hasIntent, setHasIntent] = useState(false);

  return (
    <Link
      {...props}
      prefetch={prefetch ?? (hasIntent ? null : false)}
      onFocus={(event) => {
        setHasIntent(true);
        onFocus?.(event);
      }}
      onMouseEnter={(event) => {
        setHasIntent(true);
        onMouseEnter?.(event);
      }}
    />
  );
}
