diff --git a/package.json b/package.json
index c4df3b5b..6c302d84 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,7 @@
"@heroicons/react": "^2.2.0",
"@icons-pack/react-simple-icons": "^13.1.0",
"@jsdevtools/rehype-url-inspector": "^2.0.2",
+ "@next/third-parties": "^15.3.4",
"@octokit/core": "^7.0.2",
"@shikijs/transformers": "^3.6.0",
"@sindresorhus/slugify": "^2.2.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0d67522a..6dea7224 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -41,6 +41,9 @@ importers:
'@jsdevtools/rehype-url-inspector':
specifier: ^2.0.2
version: 2.0.2
+ '@next/third-parties':
+ specifier: ^15.3.4
+ version: 15.3.4(next@15.3.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)
'@octokit/core':
specifier: ^7.0.2
version: 7.0.2
@@ -677,6 +680,12 @@ packages:
cpu: [x64]
os: [win32]
+ '@next/third-parties@15.3.4':
+ resolution: {integrity: sha512-jOvAsd0Yoq/eZ3/M+X/y/539/M6Up2xPE/aOr23CGXKinhfK2kscGP4uhtwlS0FZyHvU7ud9HTTt7G3D5G5BkA==}
+ peerDependencies:
+ next: ^13.0.0 || ^14.0.0 || ^15.0.0
+ react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
+
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -4241,6 +4250,9 @@ packages:
text-decoder@1.2.3:
resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
+ third-party-capital@1.0.20:
+ resolution: {integrity: sha512-oB7yIimd8SuGptespDAZnNkzIz+NWaJCu2RMsbs4Wmp9zSDUM8Nhi3s2OOcqYuv3mN4hitXc8DVx+LyUmbUDiA==}
+
tinyglobby@0.2.14:
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
engines: {node: '>=12.0.0'}
@@ -5145,6 +5157,12 @@ snapshots:
'@next/swc-win32-x64-msvc@15.3.3':
optional: true
+ '@next/third-parties@15.3.4(next@15.3.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ next: 15.3.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ react: 19.1.0
+ third-party-capital: 1.0.20
+
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -9587,6 +9605,8 @@ snapshots:
dependencies:
b4a: 1.6.7
+ third-party-capital@1.0.20: {}
+
tinyglobby@0.2.14:
dependencies:
fdir: 6.4.6(picomatch@4.0.2)
diff --git a/src/components/docs-breadcrumbs.jsx b/src/components/docs-breadcrumbs.jsx
index d881e4e8..1da32435 100644
--- a/src/components/docs-breadcrumbs.jsx
+++ b/src/components/docs-breadcrumbs.jsx
@@ -1,6 +1,7 @@
import { ChevronRightIcon } from "@heroicons/react/24/outline";
import { useRouter } from "next/router";
import Link from "@/components/link";
+import { sendSelectItemEvent } from "@/lib/analytics.mjs";
import { normalizeHref } from "@/utils/strings";
export default function DocsBreadcrumbs({ routes }) {
@@ -59,6 +60,16 @@ export default function DocsBreadcrumbs({ routes }) {
href={breadcrumb.route}
noDefaultStyles
aria-label={breadcrumb.title}
+ onClick={() => {
+ sendSelectItemEvent({
+ list: { id: "docs_breadcrumbs", name: "Docs Breadcrumbs" },
+ item: {
+ item_id: breadcrumb.route,
+ item_name: breadcrumb.title,
+ item_category: "mdx_doc",
+ },
+ });
+ }}
>
{breadcrumb.title}
diff --git a/src/components/docs-nav.jsx b/src/components/docs-nav.jsx
index 2338b022..47e0bfd3 100644
--- a/src/components/docs-nav.jsx
+++ b/src/components/docs-nav.jsx
@@ -1,5 +1,6 @@
import { CloseButton } from "@headlessui/react";
import Link from "@/components/link";
+import { sendSelectItemEvent } from "@/lib/analytics.mjs";
import { normalizeHref, classNames } from "@/utils/strings";
export default function DocsNav({
@@ -42,6 +43,19 @@ function NavItem({ item, level, isMobileMenu, ...props }) {
href={normalizeHref(item.route)}
noDefaultStyles
activeClassName="text-blue-500 active"
+ onClick={() => {
+ sendSelectItemEvent({
+ list: {
+ id: isMobileMenu ? "mobile_docs_nav" : "docs_nav",
+ name: isMobileMenu ? "Mobile Docs Nav" : "Docs Nav",
+ },
+ item: {
+ item_id: item.route,
+ item_name: item.title,
+ item_category: "mdx_doc",
+ },
+ });
+ }}
{...props}
>
{item.title}
diff --git a/src/components/primary-nav.jsx b/src/components/primary-nav.jsx
index 3060dfc4..00e6e5ee 100644
--- a/src/components/primary-nav.jsx
+++ b/src/components/primary-nav.jsx
@@ -7,6 +7,7 @@ import {
import { Bars3Icon, XMarkIcon } from "@heroicons/react/24/outline";
import { forwardRef } from "react";
import Link from "@/components/link";
+import { sendSelectItemEvent } from "@/lib/analytics.mjs";
import { classNames } from "@/utils/strings";
const navItemClass =
@@ -20,6 +21,16 @@ const CustomLink = forwardRef((props, reference) => {
);
});
+const sendMainNavItemSelectEvent = (item) => {
+ sendSelectItemEvent({
+ list: {
+ id: "main_nav",
+ name: "Main Nav",
+ },
+ item,
+ });
+};
+
export default function PrimaryMenu({ isMenuOpen, setIsMenuOpen, className }) {
return (