// @ts-nocheck // ^ type checking causes a bunch of issues in DefaultSeo, BE CAREFUL import { useEffect } from "react"; import { useRouter } from "next/router"; import Script from "next/script"; import type { AppProps } from "next/app"; import { DefaultSeo, SocialProfileJsonLd } from "next-seo"; import * as Fathom from "fathom-client"; import * as config from "../lib/config"; import meJpg from "../public/static/images/me.jpg"; import faviconIco from "../public/static/images/favicon.ico"; import appleTouchIconPng from "../public/static/images/apple-touch-icon.png"; import "../styles/index.scss"; export default function App({ Component, pageProps }: AppProps) { const router = useRouter(); useEffect(() => { // https://usefathom.com/docs/integrations/next // https://vercel.com/guides/deploying-nextjs-using-fathom-analytics-with-vercel Fathom.load(config.fathomSiteId, { url: `https://${config.fathomCustomDomain || "cdn.usefathom.com"}/script.js`, includedDomains: [config.siteDomain], }); const onRouteChangeComplete = () => { Fathom.trackPageview(); }; // send ping when route changes router.events.on("routeChangeComplete", onRouteChangeComplete); return () => { // unassign event listener router.events.off("routeChangeComplete", onRouteChangeComplete); }; }, []); // eslint-disable-line react-hooks/exhaustive-deps return ( <> {/* Inline script to restore light/dark theme preference ASAP */} ); }