'use client'

import type { ComponentProps, MouseEvent } from 'react'
import { trackAnalyticsEvent } from '@/lib/analytics'

type AnalyticsEventParams = Record<string, string | number | boolean>

type TrackedLinkProps = ComponentProps<'a'> & {
  analyticsEvent: string
  analyticsParams?: AnalyticsEventParams
}

/** Link, który mierzy intencję kontaktu bez przekazywania adresu, telefonu ani ID ogłoszenia. */
export default function TrackedLink({
  analyticsEvent,
  analyticsParams,
  onClick,
  ...props
}: TrackedLinkProps) {
  const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {
    onClick?.(event)
    if (!event.defaultPrevented) trackAnalyticsEvent(analyticsEvent, analyticsParams)
  }

  return <a {...props} onClick={handleClick} />
}
