From aadac1a5bea7a1a9f0d0b84f178cb8bb62535785 Mon Sep 17 00:00:00 2001 From: seeleng Date: Mon, 23 Sep 2024 23:39:49 +0800 Subject: [PATCH] feat: init google analytics --- frontend/app/layout.tsx | 2 ++ frontend/package-lock.json | 24 ++++++++++++++++++++++++ frontend/package.json | 2 ++ 3 files changed, 28 insertions(+) diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx index a54f15ee..0ac8c497 100644 --- a/frontend/app/layout.tsx +++ b/frontend/app/layout.tsx @@ -1,5 +1,6 @@ import type { Metadata } from "next"; import { Inter as FontSans } from "next/font/google"; +import { GoogleAnalytics } from "@next/third-parties/google"; import AppLayout from "@/components/layout/app-layout"; import { cn } from "@/lib/utils"; @@ -23,6 +24,7 @@ export default function RootLayout({ }: Readonly<{ children: React.ReactNode }>) { return ( + = 10" } }, + "node_modules/@next/third-parties": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.2.13.tgz", + "integrity": "sha512-OSqD2E9JO0/GE8HT5QAUsYVXwjWtPLScAX70kO2xopwDAdRzakrsQS55Cihd862X/4bUB37ApVZ9DlHcExzeOg==", + "dependencies": { + "third-party-capital": "1.0.20" + }, + "peerDependencies": { + "next": "^13.0.0 || ^14.0.0", + "react": "^18.2.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -6446,6 +6460,11 @@ "react": "^18.3.1" } }, + "node_modules/react-ga4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-ga4/-/react-ga4-2.1.0.tgz", + "integrity": "sha512-ZKS7PGNFqqMd3PJ6+C2Jtz/o1iU9ggiy8Y8nUeksgVuvNISbmrQtJiZNvC/TjDsqD0QlU5Wkgs7i+w9+OjHhhQ==" + }, "node_modules/react-hook-form": { "version": "7.53.0", "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.0.tgz", @@ -7345,6 +7364,11 @@ "node": ">=0.8" } }, + "node_modules/third-party-capital": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/third-party-capital/-/third-party-capital-1.0.20.tgz", + "integrity": "sha512-oB7yIimd8SuGptespDAZnNkzIz+NWaJCu2RMsbs4Wmp9zSDUM8Nhi3s2OOcqYuv3mN4hitXc8DVx+LyUmbUDiA==" + }, "node_modules/tinycolor2": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index cfaefd2b..668d734f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "@hookform/resolvers": "^3.9.0", + "@next/third-parties": "^14.2.13", "@radix-ui/react-avatar": "^1.1.0", "@radix-ui/react-checkbox": "^1.1.1", "@radix-ui/react-dropdown-menu": "^2.1.1", @@ -27,6 +28,7 @@ "next": "14.2.12", "react": "^18", "react-dom": "^18", + "react-ga4": "^2.1.0", "react-hook-form": "^7.53.0", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7",