{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "analytics-provider",
  "title": "Analytics Provider",
  "description": "Plausible / GA loader with trackEvent helpers.",
  "dependencies": [
    "next"
  ],
  "registryDependencies": [
    "@atroui/analytics"
  ],
  "files": [
    {
      "path": "registry/default/blocks/analytics-provider.tsx",
      "content": "\"use client\";\n\nimport { useEffect } from \"react\";\nimport Script from \"next/script\";\n\nimport { getExperimentVariant, trackEvent } from \"@/lib/analytics\";\n\nexport { trackEvent, getExperimentVariant };\n\ntype AnalyticsProviderProps = {\n  children?: React.ReactNode;\n};\n\n/**\n * Loads optional Plausible/GA scripts and exposes experiment tracking.\n * Set NEXT_PUBLIC_PLAUSIBLE_DOMAIN or NEXT_PUBLIC_GA_ID in env.\n */\nexport function AnalyticsProvider({ children }: AnalyticsProviderProps) {\n  const plausibleDomain = process.env.NEXT_PUBLIC_PLAUSIBLE_DOMAIN;\n  const rawGaId = process.env.NEXT_PUBLIC_GA_ID ?? \"\";\n  // Only allow Measurement ID shape (G-XXXXXXXX) to avoid script injection.\n  const gaId = /^G-[A-Z0-9]+$/i.test(rawGaId) ? rawGaId : undefined;\n\n  useEffect(() => {\n    trackEvent(\"page_view\", { path: window.location.pathname });\n  }, []);\n\n  return (\n    <>\n      {plausibleDomain ? (\n        <Script\n          defer\n          data-domain={plausibleDomain}\n          src=\"https://plausible.io/js/script.js\"\n          strategy=\"afterInteractive\"\n        />\n      ) : null}\n      {gaId ? (\n        <>\n          <Script\n            src={`https://www.googletagmanager.com/gtag/js?id=${gaId}`}\n            strategy=\"afterInteractive\"\n          />\n          <Script id=\"ga-init\" strategy=\"afterInteractive\">\n            {`window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','${gaId}');`}\n          </Script>\n        </>\n      ) : null}\n      {children}\n    </>\n  );\n}\n\nexport function useExperiment(experimentId: string, variants: string[], weights?: number[]) {\n  useEffect(() => {\n    getExperimentVariant({ id: experimentId, variants, weights });\n  }, [experimentId, variants, weights]);\n}\n",
      "type": "registry:component",
      "target": "components/blocks/analytics-provider.tsx"
    }
  ],
  "type": "registry:block"
}