"use client"; import { useEffect } from "react"; import { usePathname, useSearchParams } from "next/navigation"; import { getAppServices } from "@/lib/services/create-services"; /** * AnalyticsProvider Component * * Automatically tracks pageviews on client-side route changes. * This component should be placed inside your layout to handle navigation events. * * @param {Object} props - Component props * @param {string} [props.websiteId] - The Umami website ID (passed from server config) * * @example * ```tsx * // In your layout.tsx * const { websiteId } = config.analytics.umami; * * ``` */ export default function AnalyticsProvider({ websiteId, }: { websiteId?: string; }) { const pathname = usePathname(); const searchParams = useSearchParams(); useEffect(() => { if (!pathname) return; const services = getAppServices(); const url = `${pathname}${searchParams?.size ? `?${searchParams.toString()}` : ""}`; // Track pageview with the full URL services.analytics.trackPageview(url); if (process.env.NODE_ENV === "development") { console.log("[Umami] Tracked pageview:", url); } }, [pathname, searchParams]); if (!websiteId) return null; return null; }