diff --git a/frontend/package.json b/frontend/package.json index 9f73fa5..2955f1a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -41,6 +41,7 @@ "leaflet": "^1.9.4", "leaflet-defaulticon-compatibility": "^0.1.2", "lucide-react": "^0.545.0", + "mixpanel-browser": "^2.72.0", "next": "16.0.0-canary.0", "next-auth": "5.0.0-beta.28", "next-themes": "^0.4.6", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 3a5602f..cff3291 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -86,6 +86,9 @@ importers: lucide-react: specifier: ^0.545.0 version: 0.545.0(react@19.2.0) + mixpanel-browser: + specifier: ^2.72.0 + version: 2.72.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2) next: specifier: 16.0.0-canary.0 version: 16.0.0-canary.0(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) @@ -434,6 +437,27 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@mixpanel/rrdom@2.0.0-alpha.18.2': + resolution: {integrity: sha512-vX/tbnS14ZzzatC7vOyvAm9tOLU8tof0BuppBlphzEx1YHTSw8DQiAmyAc0AmXidchLV0W+cUHV/WsehPLh2hQ==} + + '@mixpanel/rrweb-plugin-console-record@2.0.0-alpha.18.2': + resolution: {integrity: sha512-Xkwh2gSdLqHRkWSXv8CPVCPQj5L85KnWc5DZQ0CXNRFgm2hTl5/YP6zfUubVs2JVXZHGcSGU+g7JVO2WcFJyyg==} + peerDependencies: + '@mixpanel/rrweb': ^2.0.0-alpha.18 + '@mixpanel/rrweb-utils': ^2.0.0-alpha.18 + + '@mixpanel/rrweb-snapshot@2.0.0-alpha.18.2': + resolution: {integrity: sha512-2kSnjZZ3QZ9zOz/isOt8s54mXUUDgXk/u0eEi/rE0xBWDeuA0NHrBcqiMc+w4F/yWWUpo5F5zcuPeYpc6ufAsw==} + + '@mixpanel/rrweb-types@2.0.0-alpha.18.2': + resolution: {integrity: sha512-ucIYe1mfJ2UksvXW+d3bOySTB2/0yUSqQJlUydvbBz6OO2Bhq3nJHyLXV9ExkgUMZm1ZyDcvvmNUd1+5tAXlpA==} + + '@mixpanel/rrweb-utils@2.0.0-alpha.18.2': + resolution: {integrity: sha512-OomKIB6GTx5xvCLJ7iic2khT/t/tnCJUex13aEqsbSqIT/UzUUsqf+LTrgUK5ex+f6odmkCNjre2y5jvpNqn+g==} + + '@mixpanel/rrweb@2.0.0-alpha.18.2': + resolution: {integrity: sha512-J3dVTEu6Z4p8di7y9KKvUooNuBjX97DdG6XGWoPEPi07A9512h9M8MEtvlY3mK0PGfuC0Mz5Pv/Ws6gjGYfKQg==} + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} cpu: [arm64] @@ -1139,6 +1163,9 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/css-font-loading-module@0.0.7': + resolution: {integrity: sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -1361,6 +1388,9 @@ packages: vue-router: optional: true + '@xstate/fsm@1.6.5': + resolution: {integrity: sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw==} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1446,6 +1476,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base64-arraybuffer@1.0.2: + resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} + engines: {node: '>= 0.6.0'} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -2185,6 +2219,12 @@ packages: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mixpanel-browser@2.72.0: + resolution: {integrity: sha512-Olc+1ebVBSVBjtR/Pp4t8Pc1wAI9AfA5e668B0MsI/gKJ43QcndzfQ/AT/TiP1Klup8O1C9vwykoWjvPqX+SRA==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -2995,6 +3035,34 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@mixpanel/rrdom@2.0.0-alpha.18.2': + dependencies: + '@mixpanel/rrweb-snapshot': 2.0.0-alpha.18.2 + + '@mixpanel/rrweb-plugin-console-record@2.0.0-alpha.18.2(@mixpanel/rrweb-utils@2.0.0-alpha.18.2)(@mixpanel/rrweb@2.0.0-alpha.18.2)': + dependencies: + '@mixpanel/rrweb': 2.0.0-alpha.18.2 + '@mixpanel/rrweb-utils': 2.0.0-alpha.18.2 + + '@mixpanel/rrweb-snapshot@2.0.0-alpha.18.2': + dependencies: + postcss: 8.5.6 + + '@mixpanel/rrweb-types@2.0.0-alpha.18.2': {} + + '@mixpanel/rrweb-utils@2.0.0-alpha.18.2': {} + + '@mixpanel/rrweb@2.0.0-alpha.18.2': + dependencies: + '@mixpanel/rrdom': 2.0.0-alpha.18.2 + '@mixpanel/rrweb-snapshot': 2.0.0-alpha.18.2 + '@mixpanel/rrweb-types': 2.0.0-alpha.18.2 + '@mixpanel/rrweb-utils': 2.0.0-alpha.18.2 + '@types/css-font-loading-module': 0.0.7 + '@xstate/fsm': 1.6.5 + base64-arraybuffer: 1.0.2 + mitt: 3.0.1 + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': optional: true @@ -3624,6 +3692,8 @@ snapshots: tslib: 2.8.1 optional: true + '@types/css-font-loading-module@0.0.7': {} + '@types/estree@1.0.8': {} '@types/geojson@7946.0.16': {} @@ -3822,6 +3892,8 @@ snapshots: next: 16.0.0-canary.0(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react: 19.2.0 + '@xstate/fsm@1.6.5': {} + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -3932,6 +4004,8 @@ snapshots: balanced-match@1.0.2: {} + base64-arraybuffer@1.0.2: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -4802,6 +4876,15 @@ snapshots: dependencies: minipass: 7.1.2 + mitt@3.0.1: {} + + mixpanel-browser@2.72.0(@mixpanel/rrweb-utils@2.0.0-alpha.18.2): + dependencies: + '@mixpanel/rrweb': 2.0.0-alpha.18.2 + '@mixpanel/rrweb-plugin-console-record': 2.0.0-alpha.18.2(@mixpanel/rrweb-utils@2.0.0-alpha.18.2)(@mixpanel/rrweb@2.0.0-alpha.18.2) + transitivePeerDependencies: + - '@mixpanel/rrweb-utils' + ms@2.1.3: {} msgpackr-extract@3.0.3: diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx index 5251b43..568fb15 100644 --- a/frontend/src/app/layout.tsx +++ b/frontend/src/app/layout.tsx @@ -2,7 +2,6 @@ import './globals.css'; import { Suspense } from 'react'; import Providers from './providers'; import type { Metadata } from 'next'; -import Script from 'next/script'; import Loader from '~/components/loader'; import { Outfit } from 'next/font/google'; import { Toaster } from '~/components/ui/sonner'; @@ -31,22 +30,6 @@ export default function RootLayout({ crossOrigin="anonymous" src="https://tweakcn.com/live-preview.min.js" /> -